我想在每次服务器启动时执行一个脚本。 问题是我需要成为一个特定的用户来执行脚本,如果我试图做它作为根无法find某些软件包(如ruby)。
我尝试更改为xxx user01。
sudo su user01 /etc/init.d/script start
但是这不起作用。
在脚本中运行sudo su user01
并不意味着将下列命令发送到生成的shell。 事实上,这可能意味着一个新的shell被产生为user01,它永远不会退出!
两件事情:
-c 'command...'
parameter passing给su来执行另一个用户-c 'command...'
,如su user01 -c '/etc/init.d/script start'
。 chkconfig
或update-rc.d
。 你也不希望/etc/init.d中的作业不应该以root
身份启动。 作业本身可以随意分叉到另一个用户帐户,但应该由root调用。 你可以把一些东西放在/etc/crontab
运行@reboot
@reboot username /etc/init.d/script start
你可以像这样通过sudo运行命令:
sudo -H -u user01 /etc/init.d/script start
-H将HOME环境variables设置为用户的环境variables
-u指定运行的用户名
当然,你不能用sudo运行这个脚本,因为requiretty(强制用户必须logging)在sudoers中。 你可能想禁用,这有点冒险
还有一个叫做runsuid的有点旧的工具: http ://freecode.com/projects/runsuid
HTH