Linux 中 su 命令和sudo命令

1 篇文章 0 订阅
1 篇文章 0 订阅

本文来源于点击打开链接



su 命令的主要作用是让你可以在已登录的会话中切换到另一个用户。换句话说,这个工具可以让你在不登出当前用户的情况下登录为另一个用户。

su 命令经常被用于切换到超级用户或root用户(因为在命令行下工作,经常需要root权限),但是正如前面提到的 su 命令也可以用于切换到任意非root用户。

 

su 命令切换到root用户 要输入的是root用户的密码;还有一种方法可以切换到root用户:运行 su - 命令。

那么su命令与 su -命令之间有什么区别呢?前者在切换到root用户之后仍然保持旧的(或者说原始用户的)环境,而后者则是创建一个新的环境(由root用户 ~/.bashrc 文件所设置的环境),相当于使用root用户正常登陆(从登陆屏幕登陆)。

 

su 命令手册很清楚地说明了这一点:

 

可选参数 - 可提供的环境为用户在直接登录时的环境。

 

有时候,对于系统管理员root来讲,使用其他普通用户的shell账户而不是自己的root shell账户更会好一些。尤其是在处理用户问题时,最有效的方法就是:登录目标用户以便重现以及调试问题。     

 

sudo  vs  su

 

这两个命令的最大区别是:sudo命令需要输入当前用户的密码,su 命令需要输入root用户的密码。

很明显,就安全而言,sudo命令更好。例如,考虑到需要root访问权限的多用户使用的计算机。在这种情况下,使用 su 意味着需要和其他用户共享root用户密码,这显然不是一种好习惯。

此外,如果要撤销特定用户的超级用户/root用户的访问权限,唯一的办法就是更改root密码,然后再告知其他用户新的root密码。

 

而使用sudo命令要求输入的是其他用户自己的密码,所以,不需要共享root密码。同时,若要阻止特定用户访问root权限,只需调整/etc/sudoers文件中相应配置即可。

 

还有一个区别: sudo 命令只允许使用提升的权限运行单个命令,而su命令会启动一个新的shell,同时允许使用root权限运行尽可能多的命令,直到明确退出登录。

尽管 sudo 命令是以目标用户(默认情况下是 root 用户)的身份执行命令,但是它们会使用 sudoer 所配置的用户名来记录是谁执行命令。而 su 命令是无法直接跟踪记录用户切换到 root 用户之后执行了什么操作。

 

大概是因为使用 su 命令或直接以root用户身份登录有风险,所以,一些Linux发行版(如 Ubuntu)默认禁止用root用户账户。鼓励用户使用sudo命令。

 

然而,您还是可以成功执行su 命令,而不用输入root用户密码。运行一下命令:

 

sudo su

 

由于你使用sudo运行命令,你只需要输入当前用户的密码。所以,一旦完成操作,su命令将会以root用户身份运行,这意味着它不会在要求输入任何密码。

                                      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值