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

40

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

prosseek
источник
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 Информационная страница действительно объясняет это более подробно.

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