Понижение привилегий демона

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2561
ОС: Debian

Понижение привилегий демона

Сообщение IMB »

Доброго дня!
Некий демон запускается и понижает свои привилегии, для понижения привилегий используется следующая функция:

Код: Выделить всё

int8_t drop_root(const char *user)
{
    struct passwd *pwd = NULL;

    if (NULL == (pwd = getpwnam(user)))
        return -1;

    if (setgid(pwd->pw_gid) || setuid(pwd->pw_uid))
        return -1;

    return 0;
}

Всё замечательно работает, но есть одно но - в данном режиме, т.е. с понижением привилегий, демон не стартует автоматически при старте системы. Если руками выполнить стартовый скрипт - демон стартует. Для запуска используется следующая команды:

Код: Выделить всё

start-stop-daemon --quiet --pidfile $PID --background \
        -S --exec $DAEMON -- --config $CONFIG --user $USER

Работа ведётся в busybox, что, возможно, оказывает подобной эффект.
Вопрос - как правильно понижать привилегии демона, что бы он мог корректно стартовать при старте системы?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Понижение привилегий демона

Сообщение sash-kan »

IMB писал(а):
27.10.2011 15:46
не стартует автоматически при старте системы
а если его подвинуть в задние ряды?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Понижение привилегий демона

Сообщение IMB »

sash-kan писал(а):
27.10.2011 16:17
а если его подвинуть в задние ряды?

В смысле запустить позже? Думаю ничего не изменить.
Так как busybox не имеет уровней запуска, то большая часть демонов стартует так:

Код: Выделить всё

for i in /etc/rcS.d/S**; do
        $i start
    done

В /etc/rcS.d находятся ссылки на /etc/init.d, пробовал вынести запуск из этого цикла - без разницы. В тоже время mini_httpd запускающийся с правами root-а стартует нормально.
Спасибо сказали:
Ответить