Chmod по буквам против чисел

8

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

Гаутама
источник

Ответы:

13

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).

Примеры

Если предположить , что набор разрешений для fileIS0764/-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
Томас Найман
источник
1

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

Скажем, у меня есть следующий каталог: 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-м октете.

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

kurtm
источник