Re: Видимо я лопух, но почему оно так делает?
> Есть С-шная прога. Исполняемому файлу
> поставлен 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
Reply to: