runuser 命令详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了runuser 命令详解相关的知识,希望对你有一定的参考价值。

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: 不重置环境变量


本文出自 “梦想照进现实” 博客,请务必保留此出处http://lookingdream.blog.51cto.com/5177800/1904685

以上是关于runuser 命令详解的主要内容,如果未能解决你的问题,请参考以下文章

从 runuser 命令传播退出代码

linux下切换用户命令?

linux 操作系统笔记基础命令

1小时教会你玩转linux 操作系统

fsck 命令详解

[Linux]_[初级]_[用户相关命令]持续更新*