chmod
Оригинальный автор(ы) | AT&T Bell Laboratories |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | 3 ноября 1971 г |
Написано в | План 9: С |
Операционная система | Unix , Unix-подобные , Plan 9 , Inferno , IBM i |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : GPLv3 План 9: МОЯ лицензия |
В Unix и -подобных операционных системах Unix chmod — это команда и системный вызов, используемые для изменения прав доступа и флагов специального режима ( флаги setuid , setgid и Sticky ) объектов файловой системы ( файлов и каталогов ). В совокупности они первоначально назывались его режимами . [1] и имя chmod был выбран как сокращение change mode от e . [2]
История
[ редактировать ]А Команда chmod впервые появилась в AT&T Unix версии 1 вместе с командой chmod системный вызов .
По мере роста числа и типов пользователей в системах появились списки контроля доступа. [3] были добавлены во многие файловые системы в дополнение к этим самым основным режимам для повышения гибкости.
Версия chmod, входящий в состав GNU coreutils, был написан Дэвидом Маккензи и Джимом Мейерингом. [4] Команда доступна в виде отдельного пакета для Microsoft Windows как часть коллекции UnxUtils , состоящей из собственных Win32- портов распространенных GNU Unix-подобных утилит. [5] Команда chmod также была перенесена в операционную систему IBM i . [6]
Синтаксис команды
[ редактировать ]В этом разделе пользователь u ссылается на владельца файла, как напоминание о том, что в символической форме команды используется « » .
chmod [options] mode[,mode] file1 [file2 ...]
[7]
Обычно реализуемые варианты включают в себя:
-R
Рекурсивный, т.е. включение объектов в подкаталоги.-v
подробный, показать измененные объекты (неизмененные объекты не отображаются).
Если символическая ссылка указана , это затрагивает целевой объект. Режимы файлов, непосредственно связанные с символическими ссылками, обычно не используются.
Чтобы просмотреть файловый режим, ls
или stat
можно использовать команды:
$ ls -l findPhoneNumbers.sh
-rwxr-xr-- 1 dgerman staff 823 Dec 16 15:03 findPhoneNumbers.sh
$ stat -c %a findPhoneNumbers.sh
754
The r
, w
, и x
укажите доступ для чтения, записи и выполнения (первый символ ls display обозначает тип объекта; дефис . означает простой файл) Сценарий findPhoneNumbers.sh может быть прочитан, записан и выполнен пользователем. немецкий ; прочитаны и исполнены членами группа сотрудников ; и читаться только другими пользователями.
Основные части chmod разрешения :
Например: rwxr-x---
Каждая группа из трех символов определяет разрешения для каждого класса :
- три крайних левых символа,
rwx
, определите разрешения для класса User (т. е. владельца файла). - средние три символа,
r-x
, определите разрешения для класса Group (т. е. группы, владеющей файлом) - три крайних правых символа,
---
, определите разрешения для класса Others . В этом примере пользователи, которые не являются владельцами файла и не являются членами группы ( и, следовательно, относятся к классу Others ), не имеют разрешения на доступ к файлу.
Числовые разрешения
[ редактировать ]The Числовой формат chmod принимает до четырех цифр. Три крайние правые цифры определяют права доступа для пользователя файла, группы и других лиц. Необязательная начальная цифра, если даны 4 цифры, указывает специальный устроился , сетгид и липкие флаги. Каждая цифра из трех крайних правых цифр представляет собой двоичное значение, которое управляет разрешениями «чтение», «запись» и «выполнение» соответственно. Значение 1 означает, что классу разрешено это действие, а 0 означает, что оно запрещено.
# | Сумма | rwx | Разрешение |
---|---|---|---|
7
|
4(г) + 2(ш) + 1(х) | rwx
|
читать, писать и выполнять |
6
|
4(г) + 2(ж) | rw-
|
читать и писать |
5
|
4(г) + 1(х) | r-x
|
прочитать и выполнить |
4
|
4(р) | r--
|
только чтение |
3
|
2(ш) + 1(х) | -wx
|
написать и выполнить |
2
|
2 (ж) | -w-
|
писать только |
1
|
1(х) | --x
|
выполнять только |
0
|
0 | ---
|
никто |
Например, 754
позволит:
- «чтение» (4), «запись» (2) и «выполнение» (1) для класса User ; т. е. 7 (4 + 2 + 1).
- «прочитать» (4) и «выполнить» (1) для класса Group ; т. е. 5 (4 + 1).
- Только «прочитать» (4) для класса «Другие» .
Числовой код разрешает выполнение тогда и только тогда, когда он нечетный (т. е. 1
, 3
, 5
, или 7
). Числовой код разрешает «чтение» тогда и только тогда, когда он больше или равен 4
(т.е. 4
, 5
, 6
, или 7
). Числовой код разрешает «запись» тогда и только тогда, когда он 2
, 3
, 6
, или 7
.
Числовой пример
[ редактировать ]Измените разрешения, чтобы разрешить членам группа программистов для обновления файла:
$ ls -l sharedFile
-rw-r--r-- 1 jsmith programmers 57 Jul 3 10:13 sharedFile
$ chmod 664 sharedFile
$ ls -l sharedFile
-rw-rw-r-- 1 jsmith programmers 57 Jul 3 10:13 sharedFile
Поскольку устроился , setgid и липкие биты не указаны, это эквивалентно:
$ chmod 0664 sharedFile
Символические режимы
[ редактировать ]The Команда chmod также принимает более детальную символическую запись, [8] что позволяет изменять определенные режимы, оставляя другие режимы нетронутыми. Символьный режим состоит из трех компонентов, которые объединяются в одну текстовую строку:
$ chmod [references][operator][modes] file ...
Классы пользователей используются для определения того, к кому применяются разрешения. Если классы не указаны, подразумевается «все». Классы обозначаются одной или несколькими из следующих букв:
Ссылка | Сорт | Описание |
---|---|---|
в | пользователь | владелец файла |
г | группа | члены группы файла |
тот | другие | пользователи, которые не являются ни владельцами файла, ни членами группы файла |
а | все | все три из вышеперечисленных, такие же, как ugo
|
(пустой) | по умолчанию | то же, что и «все», за исключением того, что биты в маске не изменятся. |
The Программа chmod использует оператор, чтобы указать, как следует настраивать режимы файла. Принимаются следующие операторы:
Оператор | Описание |
---|---|
+ | добавляет указанные режимы к указанным классам |
- | удаляет указанные режимы из указанных классов |
= | указанные режимы должны быть точными режимами для указанных классов |
Режимы указывают, какие разрешения следует предоставить или удалить из указанных классов. Существует три основных режима, соответствующих основным разрешениям:
Режим | Имя | Описание |
---|---|---|
р | читать | прочитать файл или просмотреть содержимое каталога |
В | писать | записать в файл или каталог |
х | выполнять | выполнить каталогов файл или рекурсивно просмотреть дерево |
Х | специальная казнь | которое не является разрешением само по себе, но может использоваться вместо х . Он применяет разрешения на выполнение к каталогам независимо от их текущих разрешений и применяет разрешения на выполнение к файлу, у которого уже установлен хотя бы один бит разрешения на выполнение (либо User , Group или Others ). Это действительно полезно только при использовании с + и обычно в сочетании с -R флаг для предоставления группе или другим доступа к большому дереву каталогов без установки разрешения на выполнение для обычных файлов (таких как текстовые файлы), что обычно происходит, если вы просто использовали chmod -R a+rx . , тогда как с Х ты можешь сделать chmod -R a+rX . вместо
|
с | setuid/гид | |
т | липкий |
Множественные изменения можно указать, разделив несколько символьных режимов запятыми (без пробелов). Если пользователь не указан, chmod
проверит umask , и эффект будет такой же, как если бы было указано « a », за исключением того, что биты, установленные в umask, не будут затронуты. [9]
Символические примеры
[ редактировать ]- Добавить разрешение на запись ( w ) Группе ( ж ) режимы доступа к каталогу, позволяющие пользователям одной группы добавлять файлы:
$ ls -ld shared_dir # show access modes before chmod drwxr-xr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir $ chmod g+w shared_dir $ ls -ld shared_dir # show access modes after chmod drwxrwxr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir
- Удалить права на запись ( w ) для всех классов ( a ), запрещая кому-либо писать в файл:
$ ls -l ourBestReferenceFile -rw-rw-r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile $ chmod a-w ourBestReferenceFile $ ls -l ourBestReferenceFile -r--r--r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile
- Установите разрешения для пользователя ( и группы уг ) для чтения и выполнения ( rx ) только (без разрешения на запись) на referenceLib , запрещающий кому-либо добавлять файлы.
$ ls -ld referenceLib drwxr----- 2 ebowman northregion 96 Apr 8 12:53 referenceLib $ chmod ug=rx referenceLib $ ls -ld referenceLib dr-xr-x--- 2 ebowman northregion 96 Apr 8 12:53 referenceLib
- Добавьте разрешения на чтение и запись для классов пользователей и групп файла или каталога с именем образец :
$ chmod ug+rw sample $ ls -ld sample drw-rw---- 2 rsanchez budget 96 Dec 8 12:53 sample
- Удалите все разрешения, чтобы никто не мог читать, записывать или выполнять файл с именем образец бесполезен.
$ chmod a-rwx sample $ ls -l sample ---------- 2 rswven planning 96 Dec 8 12:53 sample
- Измените разрешения для пользователя и группы только на чтение и выполнение (без разрешения на запись) образец .
$ # Sample file permissions before command $ ls -ld sample drw-rw---- 2 oschultz warehousing 96 Dec 8 12:53 NY_DBs $ chmod ug=rx sample $ ls -ld sample dr-xr-x--- 2 oschultz warehousing 96 Dec 8 12:53 NJ_DBs
Специальные режимы
[ редактировать ]The Команда 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 |
Устанавливает права на чтение и запись для пользователя . , устанавливает чтение для группы и запрещает доступ другим |
chmod -R u+w,go-w docs |
Добавляет разрешение на запись в документы каталога и все его содержимое (т. е. рекурсивно ) для владельца и удаляет разрешение на запись для группы и других. |
chmod ug=rw groupAgreements.txt |
Устанавливает разрешения на чтение и запись для пользователя . и группы |
chmod 664 global.txt |
чтение и запись для пользователя Устанавливает разрешения на и группы и предоставляет чтение другим . |
chmod 744 Show_myCV.sh |
устанавливает разрешения на чтение, запись и выполнение для пользователя для , а также устанавливает разрешения на чтение группы и других |
chmod 1755 findReslts.sh |
Устанавливает липкий бит (это предполагает, что сценарий сохраняется в памяти), устанавливает разрешения на чтение, запись и выполнение для владельца, а также устанавливает разрешения на чтение и выполнение для группы и других. |
chmod 4755 setCtrls.sh |
Устанавливает UID , устанавливает разрешения на чтение, запись и выполнение для пользователя , а также устанавливает разрешения на чтение и выполнение для группы и других. |
chmod 2755 setCtrls.sh |
устанавливает GID , устанавливает разрешения на чтение, запись и выполнение для пользователя , а также устанавливает разрешения на чтение и выполнение для группы и других. |
chmod -R u+rw,g-,o-rx privateStuff |
Рекурсивно (т. е. для всех файлов и каталогов в PrivateStuff ) добавляет разрешения на чтение, запись для , пользователя удаляет разрешения на чтение, запись и выполнение для группы и удаляет разрешения на чтение и выполнение для других. |
chmod -R a-x+X publicDocs |
Рекурсивно (т.е. для всех файлов и каталогов в publicDocs ) удаляет разрешение на выполнение для всех классов и добавляет специальное разрешение на выполнение для всех классов. |
См. также
[ редактировать ]- Разрешения файловой системы
chattr
, команда, используемая для изменения атрибутов файла или каталога в системах Linux.chown
, команда, используемая для изменения владельца файла или каталога в Unix-подобных системах.chgrp
, команда, используемая для изменения группы файла или каталога в Unix-подобных системах.cacls
— команда, используемая в Windows NT и ее производных для изменения списков управления доступом, связанных с файлом или каталогом.attrib
umask
, ограничивает режим (разрешения) при создании файла или каталога в Unix-подобных системах.- Идентификатор пользователя
- Идентификатор группы
- Список команд Unix
Ссылки
[ редактировать ]- ^ Режимы/разрешения отображаются при перечислении файлов в длинном формате.
- ^ «Урок по chmod» . catcode.com .
- ^ «Управление системой AIX 5.3» . Центр знаний IBM . ИБМ . Проверено 30 августа 2015 г.
- ^ «chmod(1): изменить биты режима файла — справочная страница Linux» . linux.die.net .
- ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
- ^ ИБМ . «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Проверено 5 сентября 2020 г.
- ^ «Страница руководства chmod с примерами и калькулятором — Linux — SS64.com» . ss64.com .
- ^ «Справочник команд AIX 5.5» . Центр знаний IBM . ИБМ . Проверено 30 августа 2015 г.
- ^ «Маскировка разрешений с помощью umask, chmod, 777 восьмеричных разрешений» . Learning.idallen.com .
Внешние ссылки
[ редактировать ]
- FreeBSD по основным командам Руководство : изменить режимы файлов –
- Plan 9 , том 1 Руководство программиста –
- Inferno по общим командам Руководство –
chmod
— страница руководства GNU coreutils .- Руководство GNU «Настройка разрешений»
- CHMOD-Win 3.0 — бесплатный конвертер ACL ↔ CHMOD для Windows.
- Учебное пособие для начинающих с «живым» онлайн-примером