<i id='748us'><div id='748us'><ins id='748us'></ins></div></i>
      <ins id='748us'></ins>

    1. <tr id='748us'><strong id='748us'></strong><small id='748us'></small><button id='748us'></button><li id='748us'><noscript id='748us'><big id='748us'></big><dt id='748us'></dt></noscript></li></tr><ol id='748us'><table id='748us'><blockquote id='748us'><tbody id='748us'></tbody></blockquote></table></ol><u id='748us'></u><kbd id='748us'><kbd id='748us'></kbd></kbd>
    2. <span id='748us'></span><dl id='748us'></dl>
      <fieldset id='748us'></fieldset><acronym id='748us'><em id='748us'></em><td id='748us'><div id='748us'></div></td></acronym><address id='748us'><big id='748us'><big id='748us'></big><legend id='748us'></legend></big></address>
      <i id='748us'></i>

          <code id='748us'><strong id='748us'></strong></code>

            Linux系统中的切换用户命令宝典

            • 时间:
            • 浏览:10
            • 来源:124软件资讯网

                #1: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: 不重置情况变量  。

                #2:su下令

                su下令允许你成为一个超级用户或者替换用户(substitute user)  ,诱骗用户(spoof user)  ,设置用户(set user)或者切换用户(switch user) 。它允许一个Linxu用户切换当前用户到那些你知道密码的目的用户,切换包罗与之关联的运行中的控制台(console)或者Shell ,它的语法如下:

                代码如下:

                su -

                su - username

                切换到root用户

                su下令会询问目的用户的密码 ,在你的shell下令行中输入 su - 来切换到root用户(你必须知道root用户的密码):

                代码如下:

                vivek@wks01:~$ su -

                或

                代码如下:

                vivek@wks01:~$ su - root

                输出示例:

                Password:

                代码如下:

                root@wks01:/root# logout

                vivek@wks01:~$

                若是输入了准确的root密码  ,会话的所有权(这里应该指当前控制台的上下文——译注)将改为root账户  。输入logout可以退出一个root登录的shell  ,输入 whoami或者id下令来验证当前会话的所有者:

                whoami

                或

                id

                用root账户运行下令

                语法是:

                代码如下:

                su - root -c "command"

                或

                代码如下:

                su - -c "command arg1"

                检察/root目录下的内容  ,这些原本是通俗用户无法会见的  ,运行:

                代码如下:

                su - root -c "ls -l /root"

                需要注重的是  ,Linix和一些Unix-like系统有一个wheel用户组  ,而且只允许这个组内的用户使用su切换到root  。

                使用su下令来让其他用户运行下令

                下面这个下令是切换到oracle的账户  ,而且显示限制清单:

                代码如下:

                $ su - oracle -c 'ulimit -aHS'

                同样  , 若是提供了准确的oracle密码  ,会话所有权将会酿成oracle账户  。su下令的日志生存在系统日志中  ,一样平常是在/var/log/auth.log(Debian/Ubuntu)或者/var/log/secure(RHEL/CentOS)  。

                #3: sudo下令

                sudo以另外的用户来执行一个下令 ,可是它随着一组关于那些用户可以以那些其他用户执行那些下令的规则(有点绕口——译注)  。这个规则在/etc/sudoers这个文件中被界说  。不像su  ,sudo验证用户是靠用户自己的密码而不是谁人要切换的用户密码  。当提供一个审计跟踪下令和他们的参数时(原文:...whileproviding an audit trail of the commands and their arguments——译注)sudo允许一个系统治理员给某些用户(或用户组)委派以root或其他用户来运行某些(或所有)下令的权限 。这允许无需在用户之间共享密码就可以在指定宿主上将指定数令委派给指定用户  。语法如下:

                代码如下:

                sudo command

                GUI工具注重事项(su和sudo的前端GUI)

                gksu 下令是su的前台  ,gksudo 是sudo的前端 。他们的主要用途是用来运行需要root权限但不需要运行一个X terminal emulator和使用直接使用su的图形化下令  。语法如下:

                代码如下:

                gksu [-u ] [options]

                gksudo [-u ] [options]

                仅输入gksu  ,将会显示下面这个弹窗:

                然后  ,你将会被要求输入root用户的密码:

                你也可以直接运行下面代码:

                代码如下:

                gksu -u root 'ls /root'

                或  ,以oracle用户运行下令:

                代码如下:

                gksu -u oracle 'ulimit -aHS'

                或作为root登录:

                代码如下:

                gksu -u root -l

                总结:runuser VS su VS sudo