[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: