这是我在Ubuntu工作站上的初始化脚本.我需要以root身份运行另一个用户命令,但我无法理解它应该如何完成. sudo -u或su newuser似乎都不起作用.
剧本:
respawn console none start on runlevel [2345] stop on runlevel [06] script su "anotherUser" -c ./myCommand end script
我用这个:
su -l $MUSER -c "myCommand args..."
更新:由于对此答案感兴趣,我在这里解释我使用它的方式.
我们像普通的linux用户一样运行服务器,而不是root.用户名包含三个部分:
服务,客户,阶段
这样我们就可以在一个Linux操作系统中为多个客户运行多个服务.
示例:foo_bar_p客户“bar”和“p”的服务“foo”表示生产
这是init脚本的一部分. init脚本可以作为root或foo_bar_p用户执行:
# /etc/init.d/foo_bar_p-celeryd # scriptname contains linux username SCRIPT_NAME=`basename "$0"` SYSTEM=${SCRIPT_NAME%*-celeryd} U=`id -nu` if [ ! $U == $SYSTEM ]; then if [ $U == "root" ]; then # use "-l (login)" to delete the environment variables of the calling shell. exec su -l $SYSTEM -c "$0 $@" fi echo "Script must be run from $SYSTEM or root. You are '$U'" rc_exit 1 fi # OK,now I am foo_bar_p cd . $HOME/.bashrc ....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。