su命令
切换到其他用户 格式: su - [用户名] su - user2
[root@jinkai01 ~]# su - user2 上一次登录:一 8月 3 16:14:57 CST 2020pts/0 上 [user2@jinkai01 ~]$ pwd /home/user2
su - -c "touch /tmp/aming.111" username(用户名) 可以不用切换到 其他用户下 就可以指定某个用户创建文件
注意:加-保证完整的切换到user2的家目录下,不加-则切换到user2账号,但是当前目录却是之前用户的家目录;
sudo命令
让普通用户使用指定用户的身份去执行一条命令(ls,mv,cat) 让user2使用root的身份去执行一条命令 visudo命令 此命令实际上编辑的是**/etc/sudoers**文件 在sudo文件中给指定用户赋予其他用户的身份 此命令在语句有错误的条件下退出会提示你错误; 比如user2使用root身份 在文档中找到这一行,并在下面添加相同格式一行;
Allow root to run any commands anywhere root ALL=(ALL) ALL
(ALL)授予括号内用户的权限 第三个ALL 指定具体的命令 或者赋予具体的命令(必须使用绝对路径,逗号前加空格)
Allow root to run any commands anywhere root ALL=(ALL) ALL user2 ALL=(ALL) /usr/bin/ls,/usr/bin/mv,/usr/bin/cat
保存退出 使用sudo测试
[user2@jinkai01 ~]$ ls /root/ ls: 无法打开目录/root/: 权限不够 [user2@jinkai01 ~]$ sudo ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点:
#1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。
[sudo] user2 的密码: 1.txt 2 aa.txt abc anaconda-ks.cfg a.txt b.txt
我们会发现可以使用ls 查看/root/目录,已经有权限,但第一次需要输入密码
也有方法让使用命令时不输入密码
Allow root to run any commands anywhere root ALL=(ALL) ALL user2 ALL=(ALL) NOPASSWD: /usr/bin/ls,/usr/bin/mv,/usr/bin/cat
把需要添加sudo特权的用户可以统一加到 wheel组里,这就不用每天增加一个用户设置一行
Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
**只允许使用普通账户登录,而普通账户登录后,可以不输入密码就能用sudo切换到root账户。 配置方法,输入如下命令: **
#visudo 然后在文件的最后加入如下3行: User_Alias USER_SU =linuxprobe,user1,user2 Cmnd_Alias SU = /usr/bin/su USER_SU ALL=(ALL) NOPASSWD: SU
第一行设定了一个user别名,其实这个USER_SU相当于是linuxprobe,user1和user2三个账户; 第二行设定了一个命令别名,SU相当于/usr/bin/su; 第三行前面介绍过。保存配置文件后,使用linuxprobe,user1和user2这3个账户登录Linux。执行命令sudo su -切换到root账户,获取root账户的所有权利,如下所示:
[root@jinkai01 ~]# su - user1 上一次登录:四 8月 6 16:47:55 CST 2020从 192.168.111.1pts/1 上 [user1@jinkai01 ~]$ sudo su - 上一次登录:四 8月 6 16:54:07 CST 2020从 192.168.111.1pts/0 上 [root@jinkai01 ~]# whoami root
限制root远程登录
条件:限制root无法远程登录,不透露root密码; 思路:限制root无法远程登录,意味着很多命令无法使用;那么我们可以使用su切换到root需要密码;我们可以通过sudo中加一条使用命令时不输入密码; 也就是使用su命令切换到root下不需要使用密码;这样限制了root无法远程登录,但是我们可以通过sudo 中的visudo文件来实现免密码切换到root用户下; 也就是visudo命令下编辑加入一条 user1 ALL=(ALL) NOPASSWD: /usr/bin/su
Allow root to run any commands anywhere root ALL=(ALL) ALL user1 ALL=(ALL) NOPASSWD:/usr/bin/su
测试:在user1用户下使用su - root切换需要密码,而使用sudo su -root后 不用密码就可以切换到root账号;
[root@jinkai01 ~]# su - user1 上一次登录:一 8月 3 16:08:34 CST 2020pts/0 上 [user1@jinkai01 ~]$ su - root 密码: [user1@jinkai01 ~]$ sudo su - root 上一次登录:四 8月 6 15:10:46 CST 2020从 192.168.111.1pts/1 上 [root@jinkai01 ~]# ls /root/ 1.txt 2 aa.txt abc anaconda-ks.cfg a.txt b.txt
限制root远程登录
编辑文件/etc/ssh/sshd_config
[root@jinkai01 ~]# vim /etc/ssh/sshd_config 将文档中的 #PermitRootLogin yes 改为 PermitRootLogin no
**一定要去除#,#代表是注释的意思; 改完文件后记得重启sshd服务
[root@jinkai01 ~]# systemctl restart sshd
重新登录测试发现服务器拒绝使用root远程登录**
使用user1正常登录成功,然后使用sudo su - root命令成功切换到root用户下
Last login: Thu Aug 6 16:28:45 2020 [user1@jinkai01 ~]$ sudo su - root 上一次登录:四 8月 6 16:29:04 CST 2020pts/1 上 最后一次失败的登录:四 8月 6 16:32:23 CST 2020从 192.168.111.1ssh:notty 上 最有一次成功登录后有 1 次失败的登录尝试。 [root@jinkai01 ~]#