这是我的Ubuntu工作站上的Init脚本。 我需要运行一个命令作为另一个用户比根,但我不能让我的头了,应该怎么做。 sudo -u或su newuser似乎都不起作用。
剧本:
respawn console none start on runlevel [2345] stop on runlevel [06] script su "anotherUser" -c ./myCommand end script
串口ReadFile读取0个字节并返回true
简单地将init更换为刚刚启动的控制台
从BusyBox启动Linux(pivot_root或switch_root,或?)
如何configurationElasticSearch以在崩溃后重新启动
编写我自己的init可执行文件
Windows错误:访问被拒绝H2o深度学习框架使用Python进行初始化
初始化与shell cripts的进程交互
Emacs初始化文件不会在启动时加载
在主机清理之前,RoleEntryPoint.OnStart()是否可以运行两次?
使用memset等结构初始化({…})是否可以吗?
我使用这个:
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 ....
对于新贵,请使用:
setuid myuser exec command args
su可能是一个更通用的方法,但是在sudo的一些常见分配中也可以这样做:
sudo -u $MUSER $COMMAND $ARGS
(只是重读你的问题,并没有意识到这不适合你,但它已经在我的初始化脚本)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。