Каково первое число для в 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. Что это является средним?

23
задан 3 February 2015 в 10:33

2 ответа

На самом деле есть 4 набора атрибутов, с которыми вы можете работать через chmod .

Special , User / Owner , Группа и Другие в указанном порядке при работе с четырьмя числами chmods, причем первый номер является специальными битами, которые можно установить.

chmod 4555 соответствует следующему:

  • Установить бит UID - запускать файл от имени владельца независимо от того, какой пользователь его запускает.
  • Пользователь / владелец: Чтение, выполнение
  • Группа: Чтение, выполнение
  • Другое: Чтение, выполнение

s в вашей «удобочитаемой» строке для разрешений указывает, что бит SetUID (поясняется ниже) ).


Фактически, мы можем сломать d владеть четырехзначным аргументом разрешений chmod в конкретные дескрипторы, как показано ниже, и выполнять математические вычисления, чтобы определить, каким будет 4 в первом разделе, 5 в следующем разделе и т. д.

Имейте в виду, что #### - это специальный Пользователь / владелец Группа и Другие в указанном порядке.

Для специальных атрибутов (первое число в четырехзначном аргументе chmod ):

  • Установить UID - запустить файл как владелец независимо от того, какой пользователь его запускает (отображается как s в удобочитаемой строке разрешений для раздела User ]) = +4 ( - s под Пользователь / владелец )
  • Установить GID - запускать файл как группу независимо от пользователя / группы, запустившей его (отображается как s в удобочитаемой строке разрешений для группы раздел) = +2 ( - s в Группа )
  • Sticky Bit - ДЕЙСТВИТЕЛЬНО ТОЛЬКО ДЛЯ КАТАЛОГОВ - Если установлено, только пользователь-владелец каталога и root могут удалить каталог, и только владелец файла или root может удалять файлы внутри него. (отображается как t в удобочитаемой строке разрешений для раздела Others ) = +1 ( - t в разделе Others )

Для Пользователь / Владелец , Группа и Другие атрибуты (последние три числа в четырехзначном аргументе chmod ):

  • Прочитать = +4 ( r - )
  • Записать = +2 ( -w- )
  • Выполнить (для файлы) или 'Enter Into / List Items' (для каталогов) = +1 ( - x )
34
ответ дан 23 November 2019 в 01:50

Он называется SETUID бит. если он установлен тестовым файлом chmod 4555 (в вашем случае), тогда тестовый файл может быть выполнен любым пользователем, как если бы пользователь является владельцем файла.

Если установлен бит SETUID , тогда эффективный идентификатор пользователя ( EUID ) пользователя, у которого нет разрешения на выполнение файла в противном случае (с обычными разрешениями, например ] 0744 ), принимает EUID владельца файла и может выполнить файл.

8
ответ дан 23 November 2019 в 01:50

Другие вопросы по тегам:

Похожие вопросы: