Назад | Перейти на главную страницу

Какая первая цифра обозначает четырехзначное восьмеричное обозначение разрешений файла Unix?

3-значное:

644
ugo (user group other)

4 цифры:

0644
?ugo (??? user group other)

Что такое первая восьмеричная цифра в четырехзначной восьмеричной нотации разрешений файла Unix?

Из man chmod:

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

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

setuid / setgid:

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

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

И липкий:

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

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

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

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