Для чего используется первое число в аргументе 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 UID
bit - запускать файл от имени владельца независимо от того, какой пользователь его запускает- Пользователь / Владелец:
Read, Execute
- Группа:
Read, Execute
- Другие:
Read, Execute
s
в вашей "читаемой человеком" строке для разрешений указывает, что SetUID
бит (объясненный ниже) установлен.
По сути, мы можем разбить четыре числа chmod
аргумент разрешения в конкретные дескрипторы, как показано ниже, и делать математику, чтобы определить, что 4
в первом разделе будет 5
в следующем разделе и так далее.
Имейте в виду, что ####
является Special
User/Owner
Group
а также 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 владельца файла и может выполнить файл.