Я хочу выполнять скрипт каждый раз, когда запускается мой сервер. Проблема в том, что мне нужно быть определенным пользователем, чтобы выполнить скрипт, если я пытаюсь сделать это как root, он не может найти определенные пакеты (например, ruby).
Я пытаюсь перейти на ххх user01.
sudo su user01
/etc/init.d/script start
Это не работает однако.
ubuntu
startup-scripts
rc.local
Филипп
источник
источник
su
в сценарии rc?Ответы:
Запуск
sudo su user01
в скрипте не означает, что следующие команды отправляются в результирующую оболочку. Фактически, это, вероятно, означает, что новая оболочка создается как user01, которая никогда не завершается!Две вещи:
-c 'command...'
аргумент su, напримерsu user01 -c '/etc/init.d/script start'
.chkconfig
илиupdate-rc.d
. Вам также не нужны рабочие места в /etc/init.d, которые не должны запускаться какroot
. Сами задания могут свободно переходить на другую учетную запись пользователя, но должны вызываться пользователем root.источник
Вы можете вставить что-нибудь
/etc/crontab
и запустить@reboot
источник
Вы можете просто запустить команду через sudo следующим образом:
-H устанавливает переменную среды HOME на значение пользователя
-u указывает имя пользователя для запуска
источник
Конечно, вы не можете запустить этот скрипт с помощью sudo из-за requiretty (предписывает, чтобы пользователи были зарегистрированы) в sudoers. Вы можете отключить, что несколько рискованно
Также есть несколько старый инструмент под названием runsuid: http://freecode.com/projects/runsuid
НТН
источник