我想在我的服务器每次启动时执行一个脚本。问题是我需要成为某个用户才能执行脚本,如果我尝试以 root 身份执行它,它就找不到某些包(例如 ruby)。
我尝试更改为 xxx user01。
sudo su user01
/etc/init.d/script start
但是,这不起作用。
我想在我的服务器每次启动时执行一个脚本。问题是我需要成为某个用户才能执行脚本,如果我尝试以 root 身份执行它,它就找不到某些包(例如 ruby)。
我尝试更改为 xxx user01。
sudo su user01
/etc/init.d/script start
但是,这不起作用。
在脚本中运行
sudo su user01
并不意味着将以下命令发送到生成的 shell。事实上,这可能意味着一个新的 shell 被生成为 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 指定运行的用户名
当然,由于 sudoers 中的要求(强制用户必须登录),您不能使用 sudo 运行该脚本。您可能想要禁用,这有点冒险
还有一个有点旧的工具叫做 runsuid:http ://freecode.com/projects/runsuid
HTH