su与sudo的区别详解

说明:本文仅供学习交流,转载请标明出处,欢迎转载!

区别:

      $su user==>需要输入user的密码

      $sudo -u user cmd==>需要输入$前那个用户的密码

下面就详细谈谈su与sudo的详细用法!

1.su 用法

    su 选项 user

选项: 

     -l:login的缩写,表示以login-shell方式切换到user;

     -c cmd:切换用户后执行cmd.

     注意:$su - 等价于 su root,以login-shell切换,即连同环境变量一块切换;

                $su 以no-login shell 切换。

                exit:还原用户最近一次切换前的角色。

      举例:

      $ su root -c 'ls'

       #who am i //查询登录用户名

      #whoami //查询当前切换后的用户

      #exit //跳出当前用户

     很明显,su的致命缺点在于需要输入的密码是待切换用户的密码,例如$su root,需要输入root的密码,这样很不实际。root需要被动地将密码告诉$对应的用户,不好吧!所以,root需要变被动为主动,这个时候就采用sudo吧!sudo使得root可以指定若干用户能够切换到其他用户,而且仅需要输入$自己的密码。

2.sudo 用法

     sudo 选项 cmd

选项:

       -u:后接待切换的用户名,默认为root。

说明:

       (1)不是所有的用户都具有sudo的执行权,只有/etc/sudoers存在的用户才能使用sudo命令;

       (2)sudo要求输入的原密码为$对应的用户密码;

如何使得$用户具有sudo命令的使用权呢?加入当前的用户为House,需要切换到root

        方法一:修改/etc/sudoers中的ALL=...相应的行。

        $su root

        #visudo  //用于编辑/etc/sudoers中的内容

       进入/etc/sudoers中,按[esp]进入命令行模式,输入/ALL=[enter],然后找到root ALL=(ALL) ALL,输入yy(复制本行),接着输入p(将复制的内容粘贴到下一行),然后将root改为House。使得内容为:House ALL=(ALL) ALL。其中House表示可以使用sudo命令的用户,第一个ALL表示可以指定客户机(即该账号是由哪一台网络主机连接过来的),当其为root表示可以对应网络中的任意主机。第二个(ALL)用户指定可以切换的用户,第三个ALL位置记录的内容为可执行的命令。

         方法二:修改/etc/sudoers中的#%wheel,名将House加入到组wheel中。

         #visudo

         找到#%wheel,并将#去掉后,输入:wq,保存后退出文件。

        #usermod -aG wheel House   //将House加入到组wheel中

        -a:表示以追加的方式将wheel加入到groups(House)中。

最后,再次说明下su和sudo的主要区别su需输入切换后的用户的密码,而sudo需要输入的是$对应用户的密码。值得一提的是,我们可以重复利用两个的有点,将su和sudo联合起来使用

        例如:$sudo su Tom  //将House切换为Tom,同时要求输入House的密码

                   $sudo su  //将House切换为root,同时要求将输入House的密码。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值