Linux指定用户运行程序
参考:http://blog.useasp.net/archive/2015/07/29/run-command-as-different-user-on-linux.aspx
在实际中,我们有时候想在一个脚本中指定用户来运行另一个程序,从而更好地管理进程。可以通过runuser、su和sudo来实现。
runuser
runuser
命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。仅以会话PAM钩子运行,并且没有密码提示。如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid
而失败。因runuser
不会运行认证和账户PAM钩子,它比su
更底层。
语法:
runuser [options] -u user command [argument...]
runuser [options] [-] [ user [argument...] ]
示例:
runuser - Ruby -g Ruby -c "sh my.sh"
su
su
命令允许你成为一个超级用户或者替代用户(substitute user),欺骗用户(spoof user),设置用户(set user)或者切换用户(switch user)。它允许一个Linxu用户切换当前用户到那些你知道密码的目标用户,切换包括与之关联的运行中的控制台(console)或者Shell。
语法:
su [options...] [-] [user [args...]]
示例:
su - Ruby -c "sh my.sh"
sudo
sudo
以另外的用户来执行一个命令,但是它跟着一组关于那些用户可以以那些其他用户执行那些命令的规则(有点绕口——译注)。这个规则在/etc/sudoers
这个文件中被定义。不像su
,sudo
验证用户是靠用户自己的密码而不是那个要切换的用户密码。
语法:
sudo command
示例:
sudo sh my.sh