chmod команда | |
Оригинальный автор (ы) | AT&T Bell Laboratories |
---|---|
Разработчики) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
изначальный выпуск | 3 ноября 1971 г . |
Операционная система | Unix , Unix-подобный , Plan 9 , Inferno , IBM i |
Платформа | Кроссплатформенность |
Тип | Команда |
Лицензия | coreutils : GPLv3 |
В Unix и Unix-подобных операционных систем , CHMOD это команда и системный вызов , который используется для изменения прав доступа из файловой системы объектов ( файлов и каталогов ). Он также используется для изменения флагов специального режима . Запрос фильтруется по маске . Название является сокращением режима изменения . [1] Режимы - это права файловой системы, предоставляемые классам «пользователь», «группа» и «другие» для доступа к файлам в Unix. Они отображаются при перечислении файловв длинном формате или, если используются списки управления доступом , с помощью getfacl . Режимы можно изменить с помощью chmod (для традиционных разрешений Unix) или с помощью setfacl (для списков управления доступом).
В Unix и Unix-подобных системах, включая системы, соответствующие POSIX , каждый файл имеет «режим», содержащий 9-битные флаги, управляющие правами на чтение, запись и выполнение для каждого владельца файла, группы и всех других пользователей (см. Разрешения файловой системы §Традиционные разрешения Unix для более подробной информации) плюс битовые флаги setuid и setgid и битовый флаг 'sticky' . Режим также определяет тип файла (обычный файл, каталог или какой-либо другой особый вид).
В структуре stat тип файла и разрешения ( режим ) хранятся вместе в st_mode
битовом поле , которое имеет размер не менее 12 бит (3 бита для указания типа среди семи возможных типов файлов ; 9 бит для разрешений) . Макет для разрешений определяется POSIX как минимум 9 битов, остальные не определены. [2]
История [ править ]
Команда chmod впервые появилась в AT&T Unix версии 1.
По мере того, как количество и типы пользователей систем росли, списки контроля доступа [3] были добавлены ко многим файловым системам в дополнение к этим самым основным режимам для повышения гибкости.
Версия chmod в составе GNU coreutils была написана Дэвидом Маккензи и Джимом Мейерингом. [4]
Команда chmod также была перенесена в операционную систему IBM i . [5]
Синтаксис команды [ править ]
Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
В данном разделе, у сер относятся к владельцу файла, как напоминание о том , что символическая форме команды использует « U ».
chmod [options] mode[,mode] file1 [file2 ...]
[6]
Обычно реализованные варианты включают:
-R
Рекурсивно, т.е. включать объекты в подкаталоги.-v
подробный, показывать измененные объекты (неизмененные объекты не отображаются).
Если указана символическая ссылка , затрагивается целевой объект. Режимы файлов, непосредственно связанные с самими символическими ссылками, обычно не используются.
Для просмотра файлового режима можно использовать команды lsили stat:
$ ls -l findPhoneNumbers.sh -rwxr-xr-- 1 сотрудник dgerman 823 16 декабря 15:03 findPhoneNumbers.sh $ stat -c% a findPhoneNumbers.sh 754
r
, w
И x
указать на чтение, запись и выполнение доступа. Первый символ на экране ls обозначает тип объекта; дефис представляет собой обычный файл. Этот сценарий может быть прочитан, записан и выполнен пользователем dgerman ; прочитаны и выполнены членами коллектива ; и читаются только другими пользователями.
Восьмеричные режимы [ править ]
Основные части разрешений chmod :
Например: drwxrwx---
Символы справа от "d" определяют разрешения для каждого класса :
- три крайних левых символа,,
rwx
определяют права доступа для класса User (т.е. владельца файла). - средние три символа,
rwx
определяют права доступа для класса Group (т. е. группы, владеющей файлом) - последние три символа
---
,, определяют разрешения для класса Others . В этом примере пользователи, которые не являются владельцами файла и не являются членами группы (и, следовательно, принадлежат к классу Others ), не имеют разрешения на доступ к файлу.
Числовые разрешения [ править ]
CHMOD числовой формат принимает до четырех восьмеричных цифр. Три крайние правые цифры определяют разрешения для пользователя файла, группы и других. Необязательная ведущая цифра, если даны 4 цифры, определяет специальные setuid , setgid и sticky flags. Каждая цифра из трех крайних правых цифр представляет двоичное значение, которое управляет разрешениями на «чтение», «запись» и «выполнение» соответственно. Значение 1 означает, что классу разрешено это действие, а значение 0 означает, что это действие запрещено.
# | Разрешение | rwx | Двоичный |
---|---|---|---|
7 | читать, писать и выполнять | rwx | 111 |
6 | прочти и напиши | rw- | 110 |
5 | читать и выполнять | rx | 101 |
4 | только чтение | р-- | 100 |
3 | написать и выполнить | -wx | 011 |
2 | писать только | -w- | 010 |
1 | выполнять только | --Икс | 001 |
0 | никто | --- | 000 |
Например, 754
позволит:
- «чтение» (4), «запись» (2) и «выполнение» (1) для класса User , поскольку двоичное значение 7 (4 + 2 + 1) равно 111.
- «прочитать» (4) и «выполнить» (1) для класса Group , поскольку двоичное значение 5 (4 + 1) равно 101.
- Только «чтение» (4) для класса Others , так как двоичное значение 4 (4) равно 100.
Числовой пример [ править ]
Измените разрешения, чтобы разрешить членам группы программистов обновлять файл:
$ ls -l sharedFile -rw-r - r-- 1 программисты jsmith 57 3 июля 10:13 sharedFile $ chmod 664 sharedFile $ ls -l sharedFile -rw-rw-r-- 1 программисты jsmith 57 3 июля 10:13 sharedFile
Поскольку биты setuid , setgid и sticky не указаны, это эквивалентно:
$ chmod 0664 sharedFile
Символьные режимы [ править ]
Команда chmod также принимает более тонкую символьную запись [7], которая позволяет изменять определенные режимы, оставляя другие режимы нетронутыми. Символьный режим состоит из трех компонентов, которые объединяются в единую текстовую строку:
$ chmod [ ссылки ] [ оператор ] [ режимы ] файл ...
Классы пользователей используются, чтобы различать, к кому применяются разрешения. Если классы не указаны, подразумевается «все». Классы представлены одной или несколькими из следующих букв:
Ссылка | Учебный класс | Описание |
---|---|---|
ты | Пользователь | владелец файла |
грамм | группа | члены группы файла |
о | другие | пользователи, которые не являются ни владельцами файла, ни членами его группы |
а | все | все три из вышеперечисленных, как ugo |
Программа chmod использует оператор, чтобы указать, как следует настраивать режимы файла. Принимаются следующие операторы:
Оператор | Описание |
---|---|
+ | добавляет указанные режимы в указанные классы |
- | удаляет указанные режимы из указанных классов |
знак равно | указанные режимы должны быть сделаны точными режимами для указанных классов |
Режимы указывают, какие разрешения должны быть предоставлены или удалены из указанных классов. Есть три основных режима, которые соответствуют основным разрешениям:
Режим | Имя | Описание |
---|---|---|
р | читать | г EAD файла или список содержимых каталогов |
ш | записывать | ж обряд к файлу или каталогу |
Икс | выполнять | е х ecute файл или рекурсию дерева каталогов |
Икс | специальное исполнение | который сам по себе не является разрешением, а может использоваться вместо x . Он применяет разрешения на выполнение к каталогам независимо от их текущих разрешений и применяет разрешения на выполнение к файлу, в котором уже установлен хотя бы один бит разрешения на выполнение ( пользователь , группа или другие ). Это действительно полезно только при использовании и обычно в сочетании с флагом для предоставления Группе или Другим доступа к большому дереву каталогов без установки разрешения на выполнение для обычных файлов (таких как текстовые файлы), что обычно происходит, если вы просто использовали , тогда как с X вы можете вместо этого+ -R chmod -R a+rx . chmod -R a+rX . |
s | setuid / gid | подробности в разделе "Специальные режимы" |
т | липкий | подробности в разделе "Специальные режимы" |
Множественные изменения можно указать, разделив несколько символьных режимов запятыми (без пробелов). Если пользователь не указан, chmod
будет проверяться umask, и эффект будет таким, как если бы был указан « a », за исключением битов, которые установлены в umask, не затронуты. [8]
Символические примеры [ править ]
- Добавьте разрешение на запись ( w ) в режимы доступа группы ( g ) к каталогу, позволяя пользователям в той же группе добавлять файлы:
$ ls -ld shared_dir # показать режимы доступа перед chmod drwxr-xr-x 2 teamleader usguys 96 8 апр, 12:53 shared_dir $ chmod g + w shared_dir $ ls -ld shared_dir # показать режимы доступа после chmod drwxrwxr-x 2 teamleader usguys 96 8 апр, 12:53 shared_dir
- Удалите права на запись ( w ) для всех классов ( a ), чтобы никто не мог писать в файл:
$ ls -l ourBestReferenceFile -rw-rw-r-- 2 руководителя команды usguys 96 8 апреля 12:53 ourBestReferenceFile $ chmod aw ourBestReferenceFile $ ls -l ourBestReferenceFile -r - r - r-- 2 руководителя группы usguys 96 8 апреля 12: 53 ourBestReferenceFile
- Установите разрешения для ˙U сер и групп ( уг ) для чтения и выполнения ( ого ) только (без разрешения записи) на referenceLib , предотвращая кого добавлять файлы.
$ ls -ld referenceLib drwxr ----- 2 руководитель команды usguys 96 8 апр, 12:53 referenceLib $ chmod ug = rx referenceLib $ ls -ld referenceLib dr-xr-x --- 2 руководитель группы usguys 96 8 апр, 12:53 referenceLib
- Добавьте разрешения на чтение и запись для классов пользователей и групп файла или каталога с именем sample :
$ chmod ug + rw sample $ ls -ld sample drw-rw ---- 2 unixguy unixguy 96 8 декабря 12:53 образец
- Удалите все разрешения, чтобы никто не мог читать, писать или выполнять файл с именем sample .
$ chmod a-rwx sample $ ls -l sample ---------- 2 unixguy unixguy 96 8 декабря 12:53 образец
- Измените разрешения для пользователя и группы только на чтение и выполнение (без разрешения на запись) для образца .
$ # Пример прав доступа к файлу перед командой $ ls -ld sample drw-rw ---- 2 unixguy unixguy 96 дек 8 12:53 sample $ chmod ug = rx sample $ ls -ld sample dr-xr-x --- 2 unixguy unixguy 96 дек 8 12:53 пример
Специальные режимы [ править ]
Команда chmod также может изменять дополнительные разрешения или специальные режимы файла или каталога. В символьных режимах используется ' s ' для обозначения режимов setuid и setgid и ' t ' для обозначения закрепленного режима. Режимы применяются только к соответствующим классам, независимо от того, указаны ли другие классы.
Большинство операционных систем поддерживают спецификацию специальных режимов с использованием восьмеричных режимов, но некоторые этого не делают. В этих системах можно использовать только символьные режимы.
Примеры командной строки [ править ]
Команда | Объяснение |
---|---|
chmod a+r publicComments.txt | добавляет права на чтение для всех классов (то есть у сер , группа и другие ) |
chmod a-x publicComments.txt | удаляет разрешение на выполнение для всех классов |
chmod a+rx viewer.sh | добавляет разрешения на чтение и выполнение для всех классов |
chmod u=rw,g=r,o= internalPlan.txt | наборы читать и разрешение на запись для ˙U сер , наборы для чтения группы , и запрещает доступ к другим |
chmod -R u+w,go-w docs | добавляет разрешение на запись в каталог документы и все его содержимое (т.е. R ecursively) для владельца, и удаляет разрешение на запись для группы и других |
chmod ug=rw groupAgreements.txt | Наборы разрешений на чтение и запись для ˙U сер и группы |
chmod 664 global.txt | Наборы разрешений на чтение и запись для ˙U сер и группы , и предоставляет читать другим . |
chmod 744 myCV.txt | Наборы чтения, записи и выполнения для функции и сер , и устанавливает разрешение на чтение для группы и другим |
chmod 1755 findReslts.sh | устанавливает липкий бит, устанавливает права на чтение, запись и выполнение для владельца, а также устанавливает права на чтение и выполнение для группы и других (это предполагает, что сценарий будет сохранен в памяти) |
chmod 4755 setCtrls.sh | наборы UID , наборы чтения, записи и выполнения для ˙U сер , и устанавливает на чтение и выполнение для группы и другим |
chmod 2755 setCtrls.sh | устанавливает GID , наборы чтения, записи и выполнения для ˙U сер , и устанавливает на чтение и выполнение для группы и другим |
chmod -R u+rwX,g-rwx,o-rx personalStuff | R ecursively (т.е. на всех файлов и каталогов в personalStuff ) добавляет чтения, записи и выполнения специальных разрешений для ˙U сер , снимает чтение, запись и исполнение для группы , и удаляет разрешения на чтение и выполнение для Другие |
chmod -R a-x+X publicDocs | R ecursively (т.е. на всех файлов и каталогов в publicDocs ) удаляет разрешение на выполнение всех классов и добавляет специальное разрешение выполнения для всех классов |
Системный вызов [ править ]
Стандарт POSIX определяет следующий прототип функции : [9]
int chmod (const char * путь, режим mode_t);
Параметр режима - это битовое поле, состоящее из различных флагов:
Флаг | Восьмеричное значение | Цель |
---|---|---|
S_ISUID | 04000 | Установить идентификатор пользователя при выполнении |
S_ISGID | 02000 | Установить идентификатор группы при выполнении |
S_ISVTX | 01000 | Липкий кусочек |
S_IRUSR, S_IREAD | 00400 | Читают ˙U сер |
S_IWUSR, S_IWRITE | 00200 | Запись по ˙U сер |
S_IXUSR, S_IEXEC | 00100 | Выполнить / поиск по ˙U сер |
S_IRGRP | 00040 | Прочитано группой |
S_IWGRP | 00020 | Написать по группе |
S_IXGRP | 00010 | Выполнить / поиск по группе |
S_IROTH | 00004 | Прочитано другими |
S_IWOTH | 00002 | Напишите другим |
S_IXOTH | 00001 | Выполнить / поиск другими |
См. Также [ править ]
- Разрешения файловой системы
chattr
, команда, используемая для изменения атрибутов файла или каталога в системах Linux.chown
, команда, используемая для смены владельца файла или каталога в Unix-подобных системахchgrp
, команда, используемая для изменения группы файла или каталога в Unix-подобных системахcacls
, команда, используемая в Windows NT и ее производных для изменения списков управления доступом, связанных с файлом или каталогом.attrib
umask
, ограничивает режим (разрешения) при создании файла или каталога в Unix-подобных системах- Идентификатор пользователя
- Идентификатор группы
- Список команд Unix
Ссылки [ править ]
- ^ "Учебник по chmod" . catcode.com .
- ^ "<sys / stat.h>" . Базовые спецификации Open Group Выпуск 6 . Открытая группа. 21 июля 2019.
- ^ «Управление системой AIX 5.3» . Центр знаний IBM . IBM . Проверено 30 августа 2015 года .
- ^ "chmod (1): изменить биты режима файла - справочная страница Linux" . linux.die.net .
- ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Дата обращения 5 сентября 2020 .
- ^ "Страница пользователя chmod с примерами и калькулятором - Linux - SS64.com" . ss64.com .
- ^ «Справочник по командам AIX 5.5» . Центр знаний IBM . IBM . Проверено 30 августа 2015 года .
- ^ "Маскировка разрешений с помощью umask, chmod, 777 восьмеричных разрешений" . training.idallen.com .
- ^ "функция chmod" . Открытой группа Базовых характеристик Выпуск 7, 2013 издания . Открытая группа . Проверено 30 августа 2015 года .
Внешние ссылки [ править ]
В Wikibook Guide to Unix есть страница по теме: Команды |
- : изменить режимы файлов - FreeBSD General Commands Manual
- - Руководство программиста Plan 9 , том 1
- - Руководство по общим командам Inferno
- chmod- справочная страница из GNU coreutils .
- Руководство GNU "Установка разрешений"
- CHMOD-Win 3.0 - бесплатный конвертер ACL ← → CHMOD для Windows.
- Учебник для начинающих с on-line "живым" примером