> Есть С-шная прога. Исполняемому файлу > поставлен Suid'ный бит т.е. права выглядят > следующим образом: > > -rwsr-sr-x > > из этой проги запускается путем execl > скрипт, написанные на shell'е. Из этого > скрипта, вызывается скрипт > /etc/init.d/postgresql > > Проблема состоит в том, что в /etc/init.d/postgresql > есть вызов еще одного скрипта, в котором есть > конструкции вида > > su postgres -c "команда" > > Так вот, когда я пускаю suid'ную программу от > обычного пользователя и все это доходит у > меня до su postgres ... > то выдается диалог > > password: > > А почему собственно? Скрипт ведь должен > выполняться с правами root'а. Где копать?
В данном случае равен 0 (т.е. root) только effective UID, а real UID остается таким, с каким ты запускаешь программу, можешь проверить с помощью вызовов getuid() и geteuid(). Для того чтобы он не просил пароль надо отдельно писать setuid(0). Аналогично для групп (GID). -- DP

