微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

切换用户在一个初始化脚本?

这是我的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] 举报,一经查实,本站将立刻删除。

相关推荐