su命令可以切换用户身份,使得当前用户在不退出登录的情况下,顺畅的切换到其他用户。
[root@localhost Desktop]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@localhost Desktop]# su - letty Last login: Tue Apr 28 20:34:38 CST 2020 on pts/0 [letty@localhost ~]$ id uid=1000(letty) gid=1000(letty) groups=1000(letty) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
使用su - username或su -l username,可以连同PATH/USER/MAIL等变量都转换成新用户的环境。普通用户切换时均需要密码验证,root管理员切换为任何用户都不需要密码验证。
默认情况下任何用户都允许使用su命令,会带来安全风险,因此Linux为了进一步加强系统的安全性建立了一个管理员组,只允许这个组的用户来执行su - 命令登陆为root管理员。在Unix/Linux中这个组通常为wheel,配置在/etc/pam.d/su。
[root@localhost ~]# cat /etc/pam.d/su #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so
将需要使用su命令的用户加入wheel组,修改配置文件/etc/pam.d/su,启用pam.sheel认证
[root@localhost ~]# cat /etc/group | grep wheel
wheel:x:10:
[root@localhost ~]# usermod -G wheel letty
[root@localhost ~]# cat /etc/group | grep wheel
wheel:x:10:letty
[root@localhost ~]# vim /etc/pam.d/su
auth required pam_wheel.so use_uid
使用用户letty与test测试su - 命令
[root@localhost ~]# su - letty Last login: Wed Apr 29 18:22:03 CST 2020 on pts/0 [letty@localhost ~]$ su - root Password: Last login: Wed Apr 29 18:31:05 CST 2020 on pts/0 [root@localhost ~]# su - test [test@localhost ~]$ su - root Password: su: Permission denied
sudo命令将特定命令的执行权限赋予给指定用户,这样即可以保证普通用户能够完成特定的任务,也可以避免泄露root管理员的密码。sudo服务的配置原则——在保证普通用户完成相应工作的前提下,尽可能少的赋予额外的权限。
格式为:sudo [参数] 命令名称
sudo功能如下:
一开始系统默认仅有root可以执行sudo,如果安装的时候将一般用户设置为了管理员,那么除了root,该一般用户也可以使用sudo(建立账号的时候默认将此用户加入sudo的支持了)。
可以使用sudo命令提供的visudo命令配置用户权限,该命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件,并对配置文件内的参数进行语法检查。
[root@localhost ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[root@localhost ~]# visudo
98 root ALL=(ALL) ALL 99 letty ALL=(ALL) /usr/bin/cat
用户名
第一个ALL:允许从任何终端访问sudo
第二个ALL:sudo命令被允许以任何用户身份执行
第三个ALL:所有命令都可以作为root执行
测试
[root@localhost ~]# su - letty Last login: Wed Apr 29 18:51:27 CST 2020 on pts/0 [letty@localhost ~]$ cat /etc/shadow | tail -n 5 cat: /etc/shadow: Permission denied [letty@localhost ~]$ sudo cat /etc/shadow | tail -n 5 postfix:!!:18378:::::: sshd:!!:18378:::::: tcpdump:!!:18378:::::: letty:$6$M4kyBi8YOacMjgqY$uBvWHmoMOaLaft2agEk7dNrIHcVV3LoW8nKwxKHAdYlGlcbZqA6BkUp5F/F8J5ipxfYN.gotJx95Oq.wgSebb1::0:99999:7::: test:$6$EDWlmaBH$NV0ZfamDGSc7UnEiAGerDx5L.jggepKOL4LO/ZZKM0dYA6KZMPANbGXoAObDV2fAcw0TNNTLko2Z41G1N4Vdn.:18381:0:99999:7:::
sudo的工作过程如下:
参考博客:
https://www.cnblogs.com/kerrycode/p/7053118.html
https://www.linuxidc.com/Linux/2013-07/88047.htm
原文:https://www.cnblogs.com/wanao/p/12804150.html