su命令、sudo命令、限制root远程登录 使用介绍
第3周第3次课(4月4日)
课程内容:
3.7 su命令
3.8 sudo命令
3.9 限制root远程登录
3.7 su命令
[root@jimmylinux-002 ~]# su - jimmy su命令是切换用户使用的,在这里加一个“-”表示彻底切换到jimmy用户下包括自己的配置和环境变量,就在自己的家目录。
[root@jimmylinux-002 ~]# su - -c "touch /tmp/jimmy.111" jimmy 以指定用户的身份执行一条命令
[root@jimmylinux-002 ~]# ls -lt /tmp/ |head 使用此命令可以查看是否有执行成功
在普通用户下在切换到其他用户,按理说应该在user5家目录中,因为没有相应的配置文件,所以显示不正常。
既然缺少user5家目录,那么就重新创建一个user5的家目录出来。
[root@jimmylinux-002 ~]# mkdir /home/user5
[root@jimmylinux-002 ~]# chown user5:user5 /home/user5/
拷贝.bash文件到user5的家目录,这样就可以显示正常了。
普通用户显示为$符号,root用户显示为#符号。
3.8 sudo命令
让普通用户临时拥有指定用户去执行一条命令获得权限
[root@jimmylinux-002 ~]# visudo 直接添加如下内容,让jimmy用户拥有root权限,同时可以执行ls、mv、cat命令。
使用方法同vi命令,按i进入编辑内容,ESC取消编辑,然后:wq保存修改并退出编辑状态。
提示刚才的操作有问题,第93行语法错误,按e键回车进入重新修改,可以输入:set nu显示行数信息。
/usr/bin/ls, /usr/bin/mv, /usr/bin/cat 需要修改成绝对路径才能够正常使用
修改完成后切换成jimmy用户,在运行ls /root/就会提示无法打开目录,权限不够。
sudo /usr/bin/ls /root/ 检验sudo的作用,可以将普通用户临时授予root权限,可以操作指定的一些命令。
同样可以给user5授予相同的权限,但是切换用户时还需要输入密码比较麻烦,添加这个参数就可以免密登录。
user5 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
[root@jimmylinux-002 ~]# su - suer5 切换user5
[user5@jimmylinux-002 ~]$ ls /root/ 直接输入ls /root/ 提示权限不够
ls: 无法打开目录/root/: 权限不够
[user5@jimmylinux-002 ~]$ sudo /usr/bin/ls /root/ sudo命令即可顺利执行
11 1.txt 33.txt anaconda-ks.cfg a.txt
在visudo里面也可以设置命令别名
Cmnd_Alias JIMMY_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
在visudo里面还可以设置用户组,比如把多个用户放到wheel一个组里面,相同组里面的用户名都可以执行授予的命令。
3.9 限制root远程登录
如果密码过于简单,容易被别人猜到,过于复杂自己也可能会忘记,为了安全起见,防止别人拿到密码通过root远程登录。
创建一个user alias,同时设置一个规则免密执行su命令登录root
如果要限制root远程登录,输入vi /etc/ssh/sshd_config 修改成PermitRootLogin no 保存退出,重启systemctl restart sshd.service 服务。
[root@jimmylinux-002 ~]# vi /etc/ssh/sshd_config
[root@jimmylinux-002 ~]# systemctl restart sshd.service
这个时候再重新连接,已经无法登录root用户,包括输入root密码也一样。(说明已经限制root远程登录)
打开putty终端以普通用户登录,然后执行sudo su - root可以直接免密登录到root用户。
重新输入vi /etc/ssh/sshd_config 还原配置文件并重启服务即可恢复root远程登录