Доброго времени суток.
Имеются сервера FreeBSD (версии от 5.4 до 6.2).Есть самописный скрипт который производит определенные действия в файловой системе - переименовывает удаляет создает директории (он крутится непрерывно). В данный момент он запущен от root (типа #sh /home/user/test.sh &). Во избежание каких либо проблем создал отдельную папку (/home/user/dir_for_test)где этот скрипт работает с файлами. В данный момент если в этом скрипте написать "rm -f -R /" то думаю он удалит всё даже ничего не сказав. Добавил в системе пользователя test (pw user add test -d /nonexistent -s /usr/sbin/nologin)
#pw user show test
#test:*:1004:1004::0:0:User &:/nonexistent:/usr/sbin/nologinРаздал права на папку /home/user/dir_for_test
#chown -R test /home/user/dir_for_test
#chmod -R 755 /home/user/dir_for_testКак теперь мне запустить test.sh от имени юзера test???
PS cron и crontab пожалуйста не предлагать, т.к. процесс часто стартую/стопаю
PPS
смотрел стартовые скрипты /usr/local/etc/rc.d/mysqld.sh (он как раз и запускает процесс mysqld от именю пользователя mysql) - но ничего подходящего не обнаружил. Как я понял, в mysqlв это выполнено не на уровне shell а на уровне бинарника.
>Как теперь мне запустить test.sh от имени юзера test???su -c test.sh test
>>Как теперь мне запустить test.sh от имени юзера test???
>
>su -c test.sh testСпасибо. Не думал что все так просто ))
1) У меня точная команда выглядит так: su test -c test.sh
2) Пока не разобрался, но для этой команды нужно что бы пользователь имел shell - /usr/sbin/nologin не подходит
>>>Как теперь мне запустить test.sh от имени юзера test???
>>
>>su -c test.sh test
>
>Спасибо. Не думал что все так просто ))
>
>1) У меня точная команда выглядит так: su test -c test.sh
>2) Пока не разобрался, но для этой команды нужно что бы пользователь
>имел shell - /usr/sbin/nologin не подходит
-m Leave the environment unmodified. The invoked shell is your
login shell, and no directory changes are made. As a security
precaution, if the target user's shell is a non-standard shell
(as defined by getusershell(3)) and the caller's real uid is non-
zero, su will fail.Вы упорно не стремитесь почитать немного man'ов :(