su命令、sudo临时赋予其他用户权限命令、限制root用户远程登录
su命令
切换到其他用户
格式:
su - [用户名]
su - user005
[aaa@qq.com ~]# su - user005
上一次登录:三 12月 27 18:01:41 CST 2017pts/0 上
[aaa@qq.com ~]$ pwd
/home/user005
[aaa@qq.com ~]$ whoami
user005
[aaa@qq.com ~]$
注意:加-保证完整的切换到user005的家目录下,不加-则切换到user005账号,但是当前目录却是之前用户的家目录;
sudo命令
让普通用户使用指定用户的身份去执行一条命令(ls,mv,cat)
让user005使用root的身份去执行一条命令
visudo命令
此命令实际上编辑的是/etc/sudoers文件
在sudo文件中给指定用户赋予其他用户的身份
此命令在语句有错误的条件下退出会提示你错误;
[aaa@qq.com ~]# visudo
>>> /etc/sudoers: 语法错误 near line 93 <<<
现在做什么?
选项有:
重新编辑 sudoers 文件(e)
退出,不保存对 sudoers 文件的更改(x)
退出并将更改保存到 sudoers 文件(危险!)(Q)
比如user005使用root身份
在文档中找到这一行,并在下面添加相同格式一行;
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user005 ALL=(root) ALL
或者赋予具体的命令(必须使用绝对路径,逗号前加空格)
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user005 ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
保存退出
使用sudo测试
[aaa@qq.com ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[aaa@qq.com ~]$ sudo ls /root/
abc anaconda-ks.cfg awk grep sed
[aaa@qq.com ~]$
[aaa@qq.com ~]$ sudo /usr/bin/ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] user005 的密码:
abc anaconda-ks.cfg awk grep sed
[aaa@qq.com ~]$ sudo /usr/bin/ls /root/
abc anaconda-ks.cfg awk grep sed
[aaa@qq.com ~]$
我们会发现可以使用ls 查看/root/目录
使用命令时不输入密码
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user005 ALL=(ALL) NOPASSWD:/usr/bin/ls, /usr/bin/mv, /usr/bin/cat
限制root远程登录
条件:限制root无法远程登录,不透露root密码;
思路:限制root无法远程登录,意味着很多命令无法使用;那么我们可以使用su切换到root需要密码;我们可以通过sudo中加一条使用命令时不输入密码;
也就是使用su命令切换到root下不需要使用密码;这样限制了root无法远程登录,但是我们可以通过sudo 中的visudo文件来实现免密码切换到root用户下;
也就是visudo命令下编辑加入一条
user005 ALL=(ALL) NOPASSWD: /usr/bin/su
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user005 ALL=(ALL) NOPASSWD: /usr/bin/su
测试:在user005用户下使用su - root切换需要密码,而使用sudo su -root后 不用密码就可以切换到root账号;
[aaa@qq.com ~]# visudo
[aaa@qq.com ~]# su - user005
上一次登录:三 12月 27 18:36:11 CST 2017pts/0 上
[aaa@qq.com ~]$ whoami
user005
[aaa@qq.com ~]$ su - root
密码:
[aaa@qq.com ~]$ sudo su - root
上一次登录:三 12月 27 19:18:52 CST 2017pts/0 上
[aaa@qq.com ~]# ls /root/
abc anaconda-ks.cfg awk grep sed
[aaa@qq.com ~]# whoami
root
[aaa@qq.com ~]#
限制root远程登录
编辑文件/etc/ssh/sshd_configvi /etc/ssh/sshd_config
将文档中的#PermitRootLogin yes
改为PermitRootLogin no
一定要去除#,#代表是注释的意思;
改完文件后记得重启sshd服务systemctl restart sshd.service
重新登录测试发现服务器拒绝使用root远程登录
使用user005正常登录成功,然后使用sudo su - root命令成功切换到root用户下
Last login: Wed Dec 27 19:21:46 2017
[aaa@qq.com ~]$ sudo su - root
上一次登录:三 12月 27 19:34:33 CST 2017从 192.168.188.1pts/0 上
最后一次失败的登录:三 12月 27 19:36:36 CST 2017从 192.168.188.1ssh:notty 上
最有一次成功登录后有 1 次失败的登录尝试。
[aaa@qq.com ~]#
转载于:https://blog.51cto.com/shuzonglu/2055256