Назад | Перейти на главную страницу

(Ubuntu) setuid bash не работает

Вот код:

(корень :)

# mkdir /test
# cp /bin/bash /test/sbash
# chmod a+s /test/sbash

(пользователь1 :)

$ cd /test
$ ./sbash
$ mkdir trycreate
mkdir: cannot create directory `trycreate': Permission denied

И скрипты bash с установленным битом setuid тоже не работают.

Кстати, мой скрипт setuid perl работает:

test.pl: (с установленным битом setuid, владелец = root)

#!/usr/bin/perl
mkdir('/test/tryperlcreate') or die 'failed'; 

Выполнение test.pl пользователем user1 создаст каталог, принадлежащий пользователю root.

Вы не можете делать скрипты SUID. К счастью.

Однако вас может заинтересовать программа SUID-обертка здесь: http://isptools.sourceforge.net/suid-wrap.html

Я также должен добавить: пожалуйста, убедитесь, что вам действительно нужно это сделать, прежде чем делать это. Бинарные файлы SUID могут стать большой дырой в вашей системе.

Я уже мог бы репостить то, что было сделано до смерти, но это отличное чтение.

Обычно скрипты оболочки setuid не работают по умолчанию

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

Попробуйте exec ./bash с -p.

sh:~# cp /bin/bash /bin/ape
sh:~# chmod +s /bin/ape
sh:~**$** /bin/ape -p
ape-3.2#

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

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

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

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