用户身份的切换su | sudo小结

1.su方式

前提:使用su切换到其他账号,需要输入其他账号的密码。但是如果从root账户切换到其他账号时,就不需要输入其他账号的密码了。

使用方式:

       (1)切换用户有两种效果,login-shell和non-login-shell

                 (a)login-shell方式:su - 和su -l是一样的,后面接要切换的账户名,如果不接任何账户名,表示切换到root账户。注意的是,su - 中的-不要理解成普通命令的option前的-;

                 (b)non-login-shell方式:su后直接加账户名,表示是non-login-shell的方式登录Linux。如果su后不加任何账户名,表示切换到root账户;

 su方式切换身份时,要输入对方身份的密码

       (2)在上面的过程中,是直接切换到其他账户,然后以新账户进行各种操作。如果想要执行一次命令,就返回到原有的账户,那么就需要用-c选项了。

使用形式是:(su的种种)-c "命令"。记得后面的命令(尤其在命令带有选项的时候)要加上双引号。

       (3)如果想返回原有账号,那么使用exit命令

 

2.sudo方式

前提:一个账户是否可以使用sudo命令来进行用户的切换,就是要看/etc/shadow文件中是否配置了当前用户。可以使用root账户,用visudo工具进行添加。使用sudo执行命令的时候,需要输入自己的账户密码,也可以通过配置不用输入密码也可以。值得注意的是,当使用sudo之后的的五分钟内再次使用sudo,就不用输入自己账户的密码啦。

使用 形式:sudo -u account command    表示切换到account账户,并以account账户执行一次命令后,返回原来的账户。注意的是,如果后面没接account表示切换到root账户。

Remarks:

(1)使用sudo -u account command 来执行命令是non-login-shell方式,因此后面的command命令有时需要输入绝对路径,不然会提示找不到命令。原因是PATH的缘故哦!(这个要看sudo版本哦,见options)

(2)使用sudo切换为其他账户进行命令执行的时候,只能执行一次,就返回为原来的账户啦,注意与su的区别(这个要看sudo版本哦,见options)。既然这样的话,在实际应用中就会有一定的局限性。我们可以使用sudo和su配置使用,来解决这个问题。通过执行命令sudo su -就可以切换到指定的账户,这时只需要输入自己的密码就可以了,而不是要输入root账户的密码了。

更新:

sudo的几个重要选项如下,

(1)-u user    表示指定目标用户,如果没有这个参数表示切换到root

(2)-i [command]    表示要加载目标用户的环境变量,而成为一个login shell。如果没有command,那么就直接切换到目标用户,即得到一个交互式的shell。如果有command,那么就以login shell的方式去执行命令(应该是较新版本的sudo才有-i选项)

(3)-H  表示取得的shll要生效目标用户的HOME环境变量

(4)-s [command]  如果有command,那么使用取得的shell去执行command。如果没有command,那么就获得一个交互式的shell


备注:

通过sudo获得交互式shell的方法:

(1)sudo su - testwork
(2)sudo -i -u testwork
(3)sudo -s -H -u testwork

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值