Confused: владение файлом изменено с помощью специального разрешения setuid - PullRequest
0 голосов
/ 03 мая 2018

Разрешение на файл с включенным setuid ( rws ).

Владелец файла: вайсах

vaisakh@computer:~/me$ ls -l
total 4
-rwsr-xr-x 1 vaisakh vaisakh   60 May  3 17:05 vaisakh.sh

Переключиться на другого пользователя var23

vaisakh@computer:~/me$ su var23
Password:

Повторная проверка разрешения

var23@computer:/home/vaisakh/me$ ls -l
total 4
-rwsr-xr-x 1 vaisakh vaisakh   60 May  3 17:05 vaisakh.sh

Исполняемый файл для var23 тоже

var23@computer:/home/vaisakh/me$ ./vaisakh.sh
Its vaisakh
total 4
-rwsr-xr-x 1 vaisakh vaisakh   60 May  3 17:05 vaisakh.sh

Проверка разрешения на запись.

Примечание: Только вайшах (владелец) имеют разрешение на запись .

Но поскольку s (setuid) включен, файл будет выполняться с разрешения владельца (vaisakh) (rws).

( Означает, что это позволит 'var23' записывать в файл )

var23@computer:/home/vaisakh/me$ vim vaisakh.sh

После того, как var23 отредактирует файл, проверьте его еще раз.

var23@computer:/home/vaisakh/me$ ls -l
total 4
-rwxr-xr-x 1 var23 var23   67 May  3 17:09 vaisakh.sh
var23@computer:/home/vaisakh/me$

Содержимое файла vaisakh.sh.

var23@computer:~/var23/Prometheus/me1$ cat vaisakh.sh
#!/bin/sh
echo "Its vaisakh"
ls -l
var23@computer:~/var23/Prometheus/me1$

Вопрос:

  1. Не могу понять, почему право собственности меняется с vaisakh -> var23 (разрешение тоже rws -> rwx )?
  2. Какое минимальное разрешение требуется для файла, чтобы использовать setuid (позволить пользователям, не являющимся владельцами, наследовать разрешение владельца)? Чтение-выполнение (r_x)!
  3. Может ли setuid применяться только для флага выполнения?

    Например: - Если фактическое разрешение для файла 4711 , пользователь, не являющийся владельцем, не может его прочитать. Почему это не повышает права владельца 4711 и позволяет другим читать содержимое.

1 Ответ

0 голосов
/ 03 мая 2018

Примечание: только вайшах (владелец) имеют разрешение на запись.

Но поскольку s (setuid) включен, файл будет выполняться с разрешения владельца (vaisakh) (rws).

Неа. Бит setuid имеет смысл только для true исполняемых файлов, а не для скриптов и текстовых файлов.

Моя справочная страница на chmod (1) гласит (подчеркните мою):

4000 (бит setuid). Исполняемые файлы с этим установленным битом будет запустить с эффективным uid, установленным в uid владельца файла ...

Но когда вы запускаете сценарий оболочки, исполняемый файл действительно /bin/sh (или любая оболочка, которую вы используете).

Так что же произошло во время редактирования? vim фактически открывает исходный файл (должен предупредить, что он не доступен для записи) в режиме только для чтения. Во время сохранения оригинал переименовывается в файл резервной копии, и создается новый простой файл с текущим содержимым файла. В зависимости от конфигурации редактора, файл резервной копии может быть немедленно удален. Так что на самом деле имеет значение доступ на запись к папке, содержащей файл. Кстати, это также объясняет, почему файл потерял бит setuid.

...