Как бит 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...

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