(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 по умолчанию не работают

http://www.faqs.org/faqs/unix-faq/faq/part4/section-7.html

Это предусмотрено в Ubuntu, а также во многих других современных *nix системах. Несмотря на то, что setuid всегда является потенциальной уязвимостью в безопасности, это особенно важно при работе со скриптами оболочки.

(Классическая проблема заключается в том, чтобы кто-то дурачился с тем, что считается отдельными аргументами, путем изменения переменной среды IFS.)

Как уже упоминали другие, это по замыслу.

Попробуйте использовать sudo вместо сценариев setuid.

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