Для чего используется первое число в аргументе chmod из 4 чисел (например, `chmod 4555`)?
Когда я устанавливаю программу, она рекомендует chmod 4555, Хорошо, я знаю о значениях, если я просто использую три числа. Например
chmod 555 test-file
дам
-r-xr-xr-x
4 для записи, 2 для чтения и 1 для выполнения. Но когда я делаю это:
chmod 4555 test-file
это дает мне
-r-sr-xr-x
Так, x изменился на s, Что это означает?
2 ответа
На самом деле есть 4 набора атрибутов, с которыми вы можете работать через chmod,
Special, User/Owner, Group, а также Others в этом порядке при работе с четырьмя числами chmod, причем первым номером являются специальные биты, которые можно установить.
chmod 4555 приравнивается к следующему:
Set UIDbit - запускать файл от имени владельца независимо от того, какой пользователь его запускает- Пользователь / Владелец:
Read, Execute - Группа:
Read, Execute - Другие:
Read, Execute
s в вашей "читаемой человеком" строке для разрешений указывает, что SetUID бит (объясненный ниже) установлен.
По сути, мы можем разбить четыре числа chmod аргумент разрешения в конкретные дескрипторы, как показано ниже, и делать математику, чтобы определить, что 4 в первом разделе будет 5 в следующем разделе и так далее.
Имейте в виду, что #### является SpecialUser/OwnerGroup а также Others в этой последовательности.
За Special атрибуты (первое число в четырехзначном chmod аргумент):
Set UID- Запуск файла от имени владельца независимо от пользователя, который его запускает (отображается какsв удобочитаемой строке разрешений дляUserраздел) = +4 (--sподUser/Owner)Set GID- Запускать файл как группу независимо от пользователя / группы, в которой он запущен (отображается какsв удобочитаемой строке разрешений дляGroupраздел) = +2 (--sподGroup)Sticky Bit- ЭФФЕКТИВНО ТОЛЬКО ДЛЯ ДИРЕКТОРИЙ - Если установлено, только пользователь-владелец каталога иrootможно удалить каталог, и только владелец файла илиrootможете удалять файлы внутри него. (показывает какtв удобочитаемой строке разрешений дляOthersраздел) = +1 (--tподOthers)
За User/Owner, Group а также Others атрибуты (последние три числа в четырехзначном chmod аргумент):
Read= +4 (r--)Write= +2 (-w-)Execute(для файлов) или "Enter Into / List Items" = +1 (--x)
Это называется SETUID немного. если это установлено chmod 4555 test-file (в вашем случае), то test-file может быть выполнен любым пользователем, как будто пользователь является владельцем файла.
Когда SETUID устанавливается бит, тогда эффективный идентификатор пользователя (EUID) пользователя, у которого нет разрешения на выполнение файла в противном случае (обычными разрешениями, например 0744), принимает EUID владельца файла и может выполнить файл.