Для чего нужна первая цифра в 4-значной восьмеричной системе обозначений разрешений файлов Unix?

40

3-значный:

644
ugo (user group other)

4-значный:

0644
?ugo (??? user group other)

Для чего используется первая восьмеричная цифра в 4-значной восьмеричной записи разрешения файла Unix?

Стивен Т. Снайдер
источник

Ответы:

48

От man chmod:

Числовой режим - от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Предполагается, что любые пропущенные цифры являются ведущими нулями. Первая цифра выбирает установленный идентификатор пользователя (4) и набор идентификаторов группы (2) и sticky (1).

Вы спрашиваете, что такое «установить идентификатор пользователя», «установить идентификатор группы» и «закрепить»?

setuid / setgid :

setuid и setgid (сокращение от «установить идентификатор пользователя при выполнении» и «установить идентификатор группы при выполнении» соответственно) - это флаги прав доступа Unix, которые позволяют пользователям запускать исполняемый файл с разрешениями владельца или группы исполняемого файла. Они часто используются, чтобы позволить пользователям в компьютерной системе запускать программы с временно повышенными привилегиями для выполнения конкретной задачи. Хотя предполагаемые привилегии идентификатора пользователя или идентификатора группы не всегда повышены, как минимум они являются конкретными.

Кроме того, при применении к каталогу setuid / setgid заставляет новые файлы, созданные в каталоге, наследовать соответственно uid или gid родительского каталога. Это поведение варьируется в зависимости от вкуса Unix. Например, Linux соблюдает setgid, но игнорирует setuid для каталогов.

И липкий :

На сегодняшний день наиболее распространённое использование «липкого бита» - для каталогов. Когда бит закрепления установлен, только владелец элемента, владелец каталога или суперпользователь могут переименовывать или удалять файлы. Без установленного фиксированного бита любой пользователь с разрешениями на запись и выполнение для каталога может переименовывать или удалять содержащиеся в нем файлы независимо от владельца. Обычно это задается в каталоге / tmp, чтобы обычные пользователи не могли удалять или перемещать файлы других пользователей.

Handyman5
источник
12

У Setgid есть еще одна очень важная функция, на которую я полагаюсь ежедневно, но которая не включена в выдержку из Handyman5 (цитата с той же страницы, на которую ссылаются выше):

Флаги setuid и setgid, установленные в каталоге, имеют совершенно другое значение.

Установка разрешения setgid для каталога (chmod g + s) заставляет новые файлы и подкаталоги, созданные в нем, наследовать идентификатор своей группы, а не идентификатор основной группы пользователя, создавшего файл (идентификатор владельца никогда не затрагивается, только идентификатор группы). Вновь созданные подкаталоги наследуют бит setgid.

Таким образом, это позволяет группе использовать общее рабочее пространство без неудобств, требующих от членов группы явного изменения их текущей группы перед созданием новых файлов или каталогов. Обратите внимание, что установка разрешения setgid для каталога влияет только на идентификатор группы новых файлов и подкаталогов, созданных после установки бита setgid, и не применяется к существующим объектам. Установка бита setgid в существующих подкаталогах должна выполняться вручную с помощью такой команды:

[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;

chmod g+sбудет означать добавление 2 в начале восьмеричного значения, превращающего каталог с 775 разрешениями ( drwxrwxr-x) в 2775 ( drwxrwsr-x).

Джей Аллен
источник
2
К сведению: MacOS X ведет себя так, как будто бит SGID всегда включен в каталоге.
Джонатан Леффлер
4

В дополнение к другим ответам, ведущий 0 - это соглашение, используемое для обозначения восьмеричного числа. Здесь это не требуется, так как права доступа к файлам всегда выражаются в восьмеричном виде, но это может быть в любом случае еще одной причиной его наличия.

jlliagre
источник
2

Вот простой в использовании калькулятор разрешений Limux / Unix, который поможет вам определить права доступа к файлу или каталогу.

vegasbrianc
источник
Просто размещение ссылок хмурится. Вы должны опубликовать соответствующий контент, а затем привести свой источник.
MDMarra
Отмечено будет гарантировать, что будущие сообщения будут правильно отформатированы
vegasbrianc