Доброго дня!
Исходные данные
система на основе busybox v1.18.4, демон запускается при старте системы и понижает свои права
стартовый скрипт системы
...................
for i in etc/rcS.d/S**; do
$i start
done
.................
lrwxrwxrwx 1 1000 1000 22 Oct 28 2011 S10monitor -> ../init.d/monitor.sh
lrwxrwxrwx 1 1000 1000 22 Oct 28 2011 S40httpd -> ../init.d/minihttpd.sh
lrwxrwxrwx 1 1000 1000 19 Oct 28 2011 S45telnet -> ../init.d/telnet.sh
PID=/var/run/monitd.pid
DAEMON=monitd
CONFIG=/etc/monitor
USER=monitor
start()
{
start-stop-daemon --quiet --pidfile $PID --background \
-S --exec $DAEMON -- --config $CONFIG --user $USER
}
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;
}
Проблема
демон monitor не стартует при старте системы, порядок запуска не влияет на поведение
если отключить понижение прав - стартует нормально, при запуске руками - стартует нормально с понижением прав
Вопрос
как необходимо организовать понижение прав демона что бы он стартовал вместе с системой?
Спасибо.