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 要执行的命令