Chmod по буквам и цифрам

Chmod по буквам и цифрам

Недавно коллега попросил меня использовать chmodбуквы вместо цифр. Помимо очевидного преимущества в читаемости, есть ли какая-то особая причина использовать буквы вместо цифр?

решение1

Символьная 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, в этом случае case modeсоответствует разрешениям, предоставленным в данный момент владельцу ( u), членам группы файла ( g) или разрешениям пользователей ни в одной из предыдущих категорий ( o).

Примеры

Предположим, что разрешение установлено fileдля0764/-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

решение2

Использование букв позволяет включать и выключать отдельные биты, не изменяя другие биты.

Предположим, у меня есть следующий каталог:

drwxrwsr-x   6 f261-01a  g261-01a  4096 Sep 12 17:51 /home/teams/261/f261-01a

Если я хочу отключить разрешение на чтение для других и хочу использовать числа, я могу просто быстро сделать chmod 751. За исключением того, что я только что отключил бит setgid для каталога. Упс.

Однако если я использую chmod o-r, я только отключаю нужный мне бит чтения, а бит setgid для каталога остается установленным.

Это также полезно, если вы хотите включить биты setuid, setgid или sticky для файла или каталога. Особенно, если вы делаете это так редко, что у вас возникают проблемы с запоминанием того, какой бит какой в ​​4-м октете.

Итак, это зависит от того, что вы делаете. Я все еще предпочитаю использовать числа, когда просто устанавливаю разрешения и мне все равно, что там изначально. Но если вы переключаете отдельные биты, то буквенная нотация намного проще.

Связанный контент