Когда я устанавливаю программу, я рекомендую это сделать chmod 4555
. Хорошо, я знаю о значениях, если я просто использую три числа. Например
chmod 555 test-file
дам
-r-xr-xr-x
4 для записи, 2 для чтения и 1 для выполнения. Но когда я делаю это:
chmod 4555 test-file
это дает мне
-r-sr-xr-x
Итак, x
поменял на s
. Что это значит?
command-line
chmod
Мас Баголь
источник
источник
Ответы:
На самом деле есть 4 набора атрибутов, с которыми вы можете работать через
chmod
.Special
,User/Owner
,Group
, ИOthers
в таком порядке, при работе с четыре номера chmods, с тем первым числом специальных бит , которые могут быть установлены.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
бит установлен, тогда Effective User ID (EUID
) пользователя, который не имеет разрешения на выполнение файла в противном случае (например, с помощью обычных разрешений0744
), принимает EUID владельца файла и может выполнить файл.источник