запустить скрипт bash с набором suid в файле

Я написал небольшой скрипт bash для проверки разрешения suid.

$ cat phone.sh
#!/bin/sh
echo "abc" >> out.txt

$ ls -l out.txt phone.sh
-rw-r--r-- root wzj      ...         out.txt
-rwsr-xr-x root wzj      ...         phone.sh

$ ./phone.sh
./phone.sh: 2: cannot create out.txt: Permission denied

Почему? Я думал, что уже установил разрешение suid, поэтому я могу запустить phone.sh с привилегиями root, чтобы изменить файл out.txt, но я просто потерпел неудачу. Может ли кто-нибудь сказать мне, где я сделал неправильно, пожалуйста?


person おおさま    schedule 10.07.2012    source источник
comment
См. stackoverflow.com/q/397612/929437 для объяснения, почему suiding скрипты - плохая идея и как это обойти.   -  person aland    schedule 10.07.2012
comment
aland: большое спасибо, я думаю, что я просто делаю что-то не так, я действительно новичок в сценарии bash   -  person おおさま    schedule 10.07.2012


Ответы (1)


Большинство операционных систем *nix не позволяют сценариям использовать SUID. Ознакомьтесь с записью Vidar в блоге на эту тему. Скрипты Perl могут использовать SUID, но, как объясняет Видар, это связано с тем, как реализован Perl. Похоже, сценарии Bash просто не будут работать с SUID. Извините, у меня нет более полезного ответа для вас, похоже, это просто «как обстоят дела».

person Fls'Zen    schedule 10.07.2012
comment
Fls'Zen: Спасибо за статью, я прочитаю ее завтра, сейчас в Японии 2:30 ночи ^^ - person おおさま; 10.07.2012