Яке перше число в аргументі chmod з чотирма номерами (наприклад, `chmod 4555`)?


20

Коли я встановлюю програму, це рекомендує мені зробити chmod 4555. Гаразд, я знаю про значення, якщо я просто використовую три числа. Наприклад

chmod 555 test-file

дасть

-r-xr-xr-x

4 для запису, 2 для читання та 1 для виконання. Але коли я це роблю:

chmod 4555 test-file

це дає мені

-r-sr-xr-x

Отже, xзмінено на s. Що це означає?


1
також пояснили тут: askubuntu.com/a/550947/72216 ("про s-прапор")
Яків Влійм

@JacobVlijm також детальніше пояснив інші "спеціальні" біти, нижче
Thomas Ward

Відповіді:


29

Насправді є 4 набори атрибутів, з якими можна працювати chmod.

Special, User/Owner, Group, І Othersв такому порядку, при роботі з чотири номери chmods, з тим першим числом спеціальних біт , які можуть бути встановлені.

chmod 4555 прирівнюється до наступного:

  • Set UID біт - запустіть файл як власника незалежно від того, який користувач ним працює
  • Користувач / Власник: 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(для файлів) або "Ввести елементи в список / список" (для каталогів) = +1 ( --x)

7

Це називається SETUIDбіт. якщо він встановлений chmod 4555 test-file(у вашому випадку), тоді його test-fileможе виконувати будь-який користувач, як ніби користувач є власником файлу.

Коли SETUIDбіт встановлений, то ефективний ідентифікатор користувача ( EUID) користувача, який не має дозволу виконувати файл інакше (за звичайними дозволами, наприклад 0744), приймає EUID власника файлу і може виконувати його.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.