Как бит Set-user-id работает в Linux?
У меня есть следующий "root-файл" со следующим содержимым:
$ cat root-file
#!/bin/bash
echo $EUID
id
Ниже приведены разрешения для этого файла:
$ ls -l root-file
-rwsr-sr-x 1 root root 15 Nov 18 02:20 root-file
Поскольку для этого файла установлен бит set-user-id, я ожидаю, что при выполнении этого файла эффективный uid будет отображаться как 0, даже когда пользователь без полномочий root его выполняет (поскольку бит set-user-id вызывает процесс, который должен быть выполнен с эффективным идентификатором пользователя владельца файла, который в данном случае является root). Однако вместо этого я получаю следующий вывод при выполнении "root-file" из некорневой оболочки.
$ ./root-file
1000
uid=1000(chanakya) gid=1000(chanakya) groups=1000(chanakya),4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare)
Этот файл / или скрипт не выполняется с эффективным идентификатором пользователя 0. Почему это так?
1 ответ
Вы не можете использовать setuid для сценариев оболочки...
если вам абсолютно необходимо использовать проверку setuid http://isptools.sourceforge.net/suid-wrap.html
Обычно что-то подобное можно также установить с помощью некоторой пользовательской конфигурации sudo...