Для чего нужна первая восьмеричная цифра chmod в четырехзначном значении?


40

Иногда я вижу chmodкоманды, которые используют четыре восьмеричные цифры вместо трех - для чего нужна дополнительная первая цифра? Например, chmod 777эквивалентно chmod a+rwx; для чего такая же команда chmod 2777?


1
Это хороший вопрос, поэтому я попытался немного его обобщить
Майкл Мрозек

3
«Четвертая восьмеричная цифра chmod» немного сбивает с толку, рассматриваемая цифра фактически является первой при чтении слева направо.
Jsbillings

Ответы:


44

Обратите внимание, что chmod 777 filenameэто эквивалент chmod 0777 filenameв этом примере.

Первая восьмеричная цифра устанавливает биты setuid, setgid и sticky (см. Эту статью для более подробной информации о setuid / setgid). восьмеричное 2 означает установить идентификатор группы в файле. Таким образом, эквивалент будет сделать, а chmod a+rwx filenameзатем chmod g+s filename. chmod Информационная страница действительно объясняет это более подробно.


5
Почти все реализации chmod (1) могут использовать запятые в аргументах символьного режима. Таким образом, ваш эквивалент 2777 может быть сделано в одной команде: chmod a+rwx,g+s filename. Или, более строго (будучи уверенным , чтобы очистить УИП и липкие биты в цифровом режиме) будет: chmod a=rwx,g+s filename.
Крис Джонсен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.