(Ubuntu) setuid bash не работает
Вот код:
(Корень:)
# mkdir /test
# cp /bin/bash /test/sbash
# chmod a+s /test/sbash
(User1:)
$ cd /test
$ ./sbash
$ mkdir trycreate
mkdir: cannot create directory `trycreate': Permission denied
И скрипты bash с установленным битом setuid тоже не работают.
Кстати, мой скрипт peru setuid работает:
test.pl: (с установленным битом setuid, owner=root)
#!/usr/bin/perl
mkdir('/test/tryperlcreate') or die 'failed';
Выполнение test.pl пользователем1 создаст каталог, принадлежащий пользователю root.
5 ответов
Попробуйте exec ./sbash с -p.
sh:~# cp /bin/bash /bin/ape
sh:~# chmod +s /bin/ape
sh:~**$** /bin/ape -p
ape-3.2#
Вы не можете делать скрипты SUID. К счастью.
Возможно, вас заинтересует программа-обертка SUID здесь: http://isptools.sourceforge.net/suid-wrap.html
Я также должен добавить, пожалуйста, пожалуйста, убедитесь, что вам действительно нужно сделать это, прежде чем сделать это. Двоичные файлы SUID могут стать огромной дырой в вашей системе.
Я мог бы репостить то, что уже было сделано до смерти, но это отличное чтение.
По умолчанию сценарии оболочки setuid по умолчанию не работают
Это предусмотрено в Ubuntu, а также во многих других современных *nix системах. Несмотря на то, что setuid всегда является потенциальной уязвимостью в безопасности, это особенно важно при работе со скриптами оболочки.
(Классическая проблема заключается в том, чтобы кто-то дурачился с тем, что считается отдельными аргументами, путем изменения переменной среды IFS.)
Как уже упоминали другие, это по замыслу.
Попробуйте использовать sudo вместо сценариев setuid.