su命令:
*su命令有两种用法:1.切换用户,2.以某个用户的身份执行一条命令
1.切换用户:su - username
[root@localhost ~]# su - linux01# - 切换用户的同时切换用户环境变量上一次登录:二 9月 3 19:02:22 CST pts/0 上[linux01@localhost ~]$ pwd /home/linux01 #切换完成后查看当前位置显示在用户家目录中-------------------------------------------------------------------[root@localhost ~]# su linux01 [linux01@localhost root]$ pwd/root #不加 - 只切换用户不切换用户环境变量,当前位置还在/root目录中[linux01@localhost root]$ lsls: 无法打开目录.: 权限不够
2.以某个用户的身份去执行命令: -c 参数
*以linux01用户的身份在/test目录下创建文件,查看文件属于linux01用户
[root@localhost ~]# su - -c "touch /test/linux01file.txt" linux01[root@localhost ~]# ls -l /test/总用量 0-rw-rw-r-- 1 linux01 linux01 0 9月 3 19:21 linux01file.txt
sudo命令:
*让普通用户临时拥有root用户的权限
使用linux01用户查看root用户家目录:
[linux01@localhost ~]$ whoamilinux01[linux01@localhost ~]$ ls /root/ls: 无法打开目录/root/: 权限不够
给linux01用户添加sudo权限:
[root@localhost ~]# visudo #编辑sudo配置文件
找到配置文件用以root开始的行:
添加如下内容,使linux01用户可以临时拥有root用户的ls、cat权限:
切换linux01用户,使用sudo查看/root目录以及目录中的文件:
[root@localhost ~]# su - linux01上一次登录:二 9月 3 21:20:21 CST pts/0 上[linux01@localhost ~]$ ls /root/ls: 无法打开目录/root/: 权限不够[linux01@localhost ~]$ sudo ls /root #在sudo配置文件中添加权限后即可查看[sudo] linux01 的密码: #第一次执行需要验证用户密码test.log[linux01@localhost ~]$ sudo cat /root/test.logABCDEFG
如需在使用sudo时不验证密码,在配置文件中加上NOPASSWD: 即可:
[root@localhost ~]# su - linux02[linux02@localhost ~]$ [linux02@localhost ~]$ sudo ls /root/test.log#修改配置文件后没有要求密码验证,直接显示结果
限制root远程登录:
*在某些情况下,为安全考虑可以限制root用户远程登录
[root@localhost ~]# vi /etc/ssh/sshd_config #编辑配置文件限制root远程登录
将此次配置项的注释符号"#"去掉,修改配置值为no
[root@localhost ~]# systemctl restart sshd #重启ssh服务
远程登录提示SSH服务器拒绝了密码,限制远程登录成功
在限制root用户使用远程登录后,有需要的普通用户可以使用su命令切换到root用户,但同时又不想让普通用户知道root密码,此时可以使用sudo免密码验证登录root用户:
编辑sudo配置文件:
此时即可使用sudo免密码认证登录root用户:
[linux01@localhost ~]$ whoamilinux01[linux01@localhost ~]$ sudo su - root上一次登录:二 9月 3 22:44:47 CST pts/0 上[root@localhost ~]#