Недавно коллега попросил меня использовать chmod
буквы вместо цифр. Помимо очевидного преимущества читабельности, есть ли конкретная причина использовать буквы над числами?
chmod
Условное обозначение более мелкозернистый по сравнению с восьмеричной записью, позволяя модификацию определенного режима бит, оставляя другие биты режима нетронутыми.
Символическая запись состоит из трех компонентов:
chmod [references][operator][modes] file
references
Состоит из комбинации букв ugoa
, которые определяют , какой пользователя доступ к file
будет изменен: пользователь , который владеет ( u
), другие пользователи в группы файла ( g
), другие пользователи не в группы файла ( o
) или всех пользователей ( a
). Если references
компонент не указан, по умолчанию он используется для всех пользователей, но umask
изменяются только разрешения, разрешенные пользователем .
+
operator
Приводит к тому , заданные биты режима файла , которые будут добавлены к существующим файловом режиме битов каждого файла; -
вызывает их удаление; и =
причины их быть добавлены и неопределенные биты должны быть удалены, за исключением setuid
и setgid
установленные биты для каталогов, если явно не указано.
mode
Состоит из комбинации букв rwxXst
, которые соответствуют прочитанного ( r
), записи ( w
), выполнить (или поиск по каталогам) ( x
), выполнение / поиск только если файл является каталогом или уже имеет разрешение на выполнение какого -либо пользователя ( X
) setuid
или setgid
(в зависимости от указанных ссылок) ( s
) и ограниченного флага удаления или закрепленного бита ( t
). В качестве альтернативы, mode
буква может состоять из одной из букв ugo
, и в этом случае она mode
соответствует разрешениям, предоставленным в настоящее время владельцу ( u
), члену группы file ( g
) или разрешениям пользователей ни в одной из предыдущих категорий ( o
).
Примеры
Если предположить , что набор разрешений для file
IS0764/-rwxrw-r--
Удалить разрешение от других пользователей, не входящих в группу файлов:
Восьмеричный: chmod 760 file
Обратите внимание, что существующие разрешения, оставленные без изменений, должны повторяться при использовании восьмеричной записи.
Символическое: chmod o-rwx file
С символьным обозначением существующие права доступа к файлу не имеют значения.
Установить setuid
:
Восьмеричный: chmod 4764 file
Символическое: chmod u+s file
Установить setgid
:
chmod 2764 file
chmod g+s file
Использование букв позволяет включать и выключать отдельные биты, не меняя другие биты.
Скажем, у меня есть следующий каталог: drwxrwsr-x 6 f261-01a g261-01a 4096 12 сентября 17:51 / home / команды / 261 / f261-01a
Если я хочу отключить разрешение на чтение для других, и я хочу использовать числа, я мог бы просто быстро сделать chmod 751
. За исключением того, что я только что отключил бит setgid в каталоге. К сожалению.
Однако, если я использую chmod o-r
, я только отключаю нужный бит чтения, и бит setgid в каталоге остается установленным.
Это также полезно, если вы хотите включить setuid, setgid или sticky-биты в файле или каталоге. Особенно, если вы делаете это так редко, у вас возникают проблемы с запоминанием того, какой бит в 4-м октете.
Итак, это зависит от того, что вы делаете. Я все еще предпочитаю использовать числа, когда я просто устанавливаю разрешения, и мне все равно, с чего начать. Но если вы переключаете отдельные биты, буквенное обозначение намного проще.