linux上su与sudo su的区别

linux党们几乎每天都要使用sudo和su命令无数次,但是你真正理解这每天重复使用的命令吗?我们今天就来挖一挖,但也仅仅是从应用层面,原理神马的逼格太高就不谈了。

首先说一下这两个命令的含义(全称):

sudo = Super user do 超级用户do
su = Shift user  切换用户

1.su  <user>

su命令是当前用户用来切换到另一个用户的命令,参数为用户名。执行时会要求输入密码,这个密码是你要切换到的用户的密码。

注意,当你是root用户是,切换到本机的其他任何用户都是不需要输入密码的。

2.sudo su  <user>

sudo su命令和su命令相似,都是用来切换用户的。区别就是两个命令需要输入的密码不一样。

sudo su的含义就是要用root权限运行su命令,既然是用root权限运行su命令,那么就不需要输入切换到的用户的密码了。

现在的问题是,你怎么运行sudo命令呢?这取决于你的用户在 /etc/sudoers 文件中的配置。如果当前用户在soduers文件中没有配置,那么sudo这个命令是无法使用的:

xxx is not in the sudoers file.  This incident will be reported.
要把用户加入到soduers中,先切换到root用户,使用命令:

visudo

仿照root的配置把当前或者自己的用户加入该文件即可。有很所选项可以配置,比如使用sudo不需要输入密码等等。


有一点一定要提,无意中发现一条也别牛掰的命令,本来你如果要从普通用户切换到root用户:

su root 或者 su -  此时你必须要输入root用户的密码,正如上边所讲。
但是如果你使用:
sudo su 这个命令,直接输入当前用户的密码即可切换到root用户。并且如果你的sudo设置而不需要输入密码,就直接切换到root用户了。

另外:用whoami命令查看当前用户,翻译过来就是"我是谁"---你懂的。

注意:如果没有设置使用sudo无需密码,那么每次使用都要输入,此时你输入的既不是root用户的密码,也不是要切换到用户的密码,而是当前使用sudo命令的用户的密码。

此外,sudo su命令不保留原来shell的环境变量。

3.sudo  -u  <user>  -i

如果你需要准确的模拟另外一个用户登录时的初始状态,那么就使用sudo -u <user> -i这个命令。-i这个参数代表"simulate initial login",它将创建合适的命令行窗口,使./.bashrc 和 ./.bash_profile生效,然后引导你进入目标用户的home目录。对于普通用户来说,用处不大,所以很少有人关注它。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值