su命令和sudo及runuser命令

su和su -的区别

su

root切换普通用户不需要密码;
普通用户切换用户是需要输入密码的

# 切换用户,但保留当前用户的变量信息
su 用户名

su -

su - 表示完全变更,不保留这个用户的任何原始属性;
是完全切换到新用户,包括环境变量也是变更的.

# 完全切换用户
su - 用户名

sudo

su命令有一个致命的问题:一定要输入密码,这时候用sudo命令;
如果其他同事用su命令切换你的账户,你必须得把密码告诉他,他才能切换成功;
如果即想其他用户完成这个工作,又不想要他完全变更到你的账号身份下,这时候用sudo命令可以解决这个问题.

sudo可以精确的控制其他用户可以提权某个命令进行放行;
sudo是个服务,需要编辑配置文件/etc/sudoers;
或者使用visduo命令进行配置sudo服务.

sudo -s

参考: https://www.v2ex.com/t/885106#reply3
sudo -s 不会执行 profile ;会执行 rc.

sudo -i

-i 参数(即 sudo -i ),在 sudo 的 man page 里指明了,会加载 .profile,.bash_profile.login ,root变量将被shell读取 , 同时呢,会跳到 /root 目录。

runuser命令

以指定用户运行某个命令

# root用户下指定admin执行命令
# runuser -l 指定用户 -c '要执行的命令'
runuser -l admin -c 'id'

## -l 指定用户
## -c 要执行的命令

在这里插入图片描述