runuser命令
runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。
仅以会话PAM钩子运行,并且没有密码提示。如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid而失败。因runuser不会运行认证和账户PAM钩子,它比su更底层。
语法:
复制代码
代码如下:
runuser -l userNameHere -c 'command'
runuser -l userNameHere -c '/path/to/command arg1 arg2'
举例来说,作为一个root用户,你也许想检查下oracle用户下的shell资源限制,输入:
复制代码
代码如下:
# runuser -l oracle -c 'ulimit -SHa'
或者监察下nginx或lighttpd web服务器限制:
复制代码
代码如下:
# runuser -l nginx -c 'ulimit -SHa'
或
复制代码
代码如下:
# runuser -l lighttpd -c 'ulimit -SHa'
有时,root用户由于权限(安全)问题不能浏览NFS挂载的共享:
复制代码
代码如下:
# ls -l /nfs/wwwroot/cyberciti.biz/http
或
复制代码
代码如下:
# cd /nfs/wwwroot/cyberciti.biz/http
可能的输出:
复制代码
代码如下:
-bash: cd: /nfs/wwwroot/cyberciti.biz/http/: Permission denied
尽管如此,apache用户被允许浏览或访问挂载在/nfs/wwwroot/cyberciti.biz/http/下基于nfs的系统:
复制代码
代码如下:
# runuser -l apache -c 'ls -l /nfs/wwwroot/cyberciti.biz/http/'
或
复制代码
代码如下:
# runuser -l apache -c 'cd /nfs/wwwroot/cyberciti.biz/http/; vi index.php'
使用runuser命令,无需使用密码,并且,只能在root用户下使用。
可用选项:
-l: 让shell成为登录shell,用 runuser -l PAM 文件替代默认的
-g:指定主要的组
-G 追加组
-c:命令,要传到shell的单个命令
--session-command=COMMAND:使用-c传递单个命令道shell中并且不创建新的会话
-m: 不重置环境变量