У меня при старте машины с FreeBSD скриптом лежащим в /usr/local/etc/rc.d/ стартуют кое какие программы. Стартуют они от пользователя root, а вот хотелось бы от какого-либо другого. Не подскажите ли как это сделать?
>У меня при старте машины с FreeBSD скриптом лежащим в /usr/local/etc/rc.d/ стартуют
>кое какие программы. Стартуют они от пользователя root, а вот хотелось
>бы от какого-либо другого. Не подскажите ли как это сделать?Можно su перйти к пользователю и запустить, а можно поставить sudo и запустить:
%sudo -u vanya cat /etc/hosts
Можно в крайнем случае и crontab'ом воспользоваться!
>%sudo -u vanya cat /etc/hosts
А что такое sudo? У меня FreeBSD 4.5 - ни манов ни команды такой нет.
>>%sudo -u vanya cat /etc/hosts
>А что такое sudo? У меня FreeBSD 4.5 - ни манов ни
>команды такой нет.man su
>>>%sudo -u vanya cat /etc/hosts
>>А что такое sudo? У меня FreeBSD 4.5 - ни манов ни
>>команды такой нет.
>
>man su
>>>>%sudo -u vanya cat /etc/hosts
>>>А что такое sudo? У меня FreeBSD 4.5 - ни манов ни
>>>команды такой нет.
>>
>>man su
>
>http://www.sudo.ws/sudo/Ну и нафига ему sudo ставить когда с тем, что ему надо, прекрасно справится штатный фришный su. ;-)
su - USERNAME -c "command"
пример
su - nobody -c "ls -al /"
>У меня при старте машины с FreeBSD скриптом лежащим в /usr/local/etc/rc.d/ стартуют
>кое какие программы. Стартуют они от пользователя root, а вот хотелось
>бы от какого-либо другого. Не подскажите ли как это сделать?вопрос не только в том КАК из под su запустить тот или иной сервис,
но еще и в том что этот сервис будет выполнять.
На самом деле задача вроде тривиальная:
#su <user>
> execute_command
> exit
Но вот я наткнулся на следующее. В доке по sql серверу postrgres (он обязательно должен стартовать от юзера postgres):
[ -x /usr/local/pgsql/bin/postmaster ] && {
su postgres -c '/usr/local/pgsql/bin/postmaster -S -i -D /usr/local/pgsql/data'
echo -n ' PG_SQL Server started! ...'
}
Если поместить это в стартовый скрипт системы то в результате имеем процесс запущенный от постгреса. Только вот что сдесь к чему я чего-то не пойму. Может кто-нибуть объяснит?
>вопрос не только в том КАК из под su запустить тот или
>иной сервис,
>но еще и в том что этот сервис будет выполнять.
Сервис самописный. Общается с локальной базой данных и слушает сокет внешней сети. Так что хотелось бы пускануть его от nobody.
>Так что хотелось бы пускануть его от nobody.Пускаю так:
# su nobody -c "/path/to/my_prog"
Врезультате:
This account is currently not available.Ответ то конечно логичен (у nobody ни папки нет и shell - /sbin/nologin), но ведь надо пустить от nobody. Подскажите уж очень не хочется sudo сюда привлекать?
>>Так что хотелось бы пускануть его от nobody.
>
>Пускаю так:
># su nobody -c "/path/to/my_prog"
>Врезультате:
>This account is currently not available.
>
>Ответ то конечно логичен (у nobody ни папки нет и shell -
>/sbin/nologin), но ведь надо пустить от nobody. Подскажите уж очень не
>хочется sudo сюда привлекать?а что религия не позволяет создать пользователя postgres аналог nobody
но с shell (разумеется w/o password) если уж этот пользователь должен
иметь среду.PS. Я так думаю что в документации по postgres должен раскрываться этот
вопрос или в списках рассылки или в howto или ...
>>>Так что хотелось бы пускануть его от nobody.
>>
>>Пускаю так:
>># su nobody -c "/path/to/my_prog"
>>Врезультате:
>>This account is currently not available.
>>
>>Ответ то конечно логичен (у nobody ни папки нет и shell -
>>/sbin/nologin), но ведь надо пустить от nobody. Подскажите уж очень не
>>хочется sudo сюда привлекать?
>
>а что религия не позволяет создать пользователя postgres аналог nobody
>но с shell (разумеется w/o password) если уж этот пользователь должен
>иметь среду.
>
>PS. Я так думаю что в документации по postgres должен раскрываться этот
>
>вопрос или в списках рассылки или в howto или ...
Мб дело и вовсе в чем-то другом? Mysql вполне справляется с запуском без
shell(среды)
уже был такой вопрос, и не один разhttp://cr.yp.to/daemontools/setuidgid.html
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
>>PS. Я так думаю что в документации по postgres должен раскрываться этотТак пользователь постгрес у меня есть (и среда у него есть), с постгресом всё в порядке. Стартовый скрипт я тут привёл т.к. не совсем понял его конструкцию. Но т.к. у nodody shell-а нет то данный способ видно не подходит. Попробую setuidgid.
>>>PS. Я так думаю что в документации по postgres должен раскрываться этот
>
>Так пользователь постгрес у меня есть (и среда у него есть), с
>постгресом всё в порядке. Стартовый скрипт я тут привёл т.к. не
>совсем понял его конструкцию. Но т.к. у nodody shell-а нет то
>данный способ видно не подходит. Попробую setuidgid.все что нужно сделать, это прочесть man su в той системе в которой
работаешь:>Но вот я наткнулся на следующее. В доке по sql серверу postrgres (он >обязательно должен стартовать от юзера postgres):
>[ -x /usr/local/pgsql/bin/postmaster ] && {если существует файл /path/postmaster и он исполняемый, делаем:
> su postgres -c '/usr/local/pgsql/bin/postmaster -S -i -D >/usr/local/pgsql/data'
запускаем из под пользователя postgres - 'su postgres' команду с аргументами: -c '/path/postmaster ARGS'
> echo -n ' PG_SQL Server started! ...'
выводим на экран: сервис запущен
> }
и чего здесь непонятного!?
данные и директории должны быть владельцем postgres или группой с доступом на запись, чего такого сложного?короче: man su
Спасибо за исчерпывающий ответ. Для меня вопрос закрыт.
>Спасибо за исчерпывающий ответ. Для меня вопрос закрыт.cool.
Удачи