怕 root 用户密码泄露被别人知道,被别人拿去远程登录,我们在这限制下 root 用户远程登录。
禁止 root 用户登录,只允许普通用户登录。
普通用户要拿到 root 用户权限,可以使用 sudo ,也可以使用 su
把 su 命令放到 sudo 的列表里面
场景如下:
root 密码不知道
所以我们当前 user1 user2 user3… 没办法 su – ,因为 su – 是需要知道 root密码的
怎么办呢?
在 root 用户下 su – 是不需要输入 root 密码的
所以我们 sudo su –
给普通用户设置 alias
[root@evan-01 ~]# visudo
找到这一行
# User_Alias ADMINS = jsmith, mikem
编辑如下
# User_Alias ADMINS = jsmith, mikem
User_Alias NAMES = evan1, user1, user2, user3
在下面添加一行
普通用户拥有 root 权限,执行这个命令的时候不要密码,按 esc,输入 :wq 保存退出
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
evan1 ALL=(ALL) EVAN_CMD
user1 ALL=(ALL) NOPASSWD:/usr/bin/ls,/usr/bin/cat
NAMES ALL=(ALL) NOPASSWD:/usr/bin/su
切换到普通用户
[root@evan-01 ~]# su - evan1
Last login: Thu Aug 15 11:24:26 CST 2019 on pts/0
[evan1@evan-01 ~]$ sudo su -
Last login: Thu Aug 15 11:24:49 CST 2019 on pts/0
[root@evan-01 ~]# whoami
root
[root@evan-01 ~]#
限制 root 用户远程登录
[root@evan-01 ~]# vi /etc/ssh/sshd_config
进来后输入 /Root 搜索这个关键词
找到 #PermitRootLogin yes 这一行,把前面 # 去掉,yes改为no,按 esc,输入 :wq 保存退出
重启服务
[root@evan-01 ~]# systemctl restart sshd.service
[root@evan-01 ~]#
重新连接
不能连接,证明我们限制远程登录设置的没问题
使用普通用户登录
发现已经连接上了。还可以使用 sudo su - 切换至 root
为了方便以后使用,还是要把限制关掉的
[root@evan-01 ~]# vi /etc/ssh/sshd_config
找到 PermitRootLogin no 这一行,在前面加上 # ,按 esc,输入 :wq 保存退出
重启服务,重新连接即可
[root@evan-01 ~]# systemctl restart sshd.service
[root@evan-01 ~]#