su命令、sudo临时赋予其他用户权限命令、限制root用户远程登录

su命令

切换到其他用户
格式:
su - [用户名]
su - user005

[[email protected] ~]# su - user005
上一次登录:三 12月 27 18:01:41 CST 2017pts/0 上
[[email protected] ~]$ pwd
/home/user005
[[email protected] ~]$ whoami
user005
[[email protected] ~]$

注意:加-保证完整的切换到user005的家目录下,不加-则切换到user005账号,但是当前目录却是之前用户的家目录;


sudo命令

让普通用户使用指定用户的身份去执行一条命令(ls,mv,cat)
让user005使用root的身份去执行一条命令

visudo命令

此命令实际上编辑的是/etc/sudoers文件
在sudo文件中给指定用户赋予其他用户的身份
此命令在语句有错误的条件下退出会提示你错误;

[[email protected] ~]# 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测试

[[email protected] ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[[email protected] ~]$ sudo ls /root/
abc  anaconda-ks.cfg  awk  grep  sed
[[email protected] ~]$
[[email protected] ~]$ sudo /usr/bin/ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。
[sudo] user005 的密码:
abc  anaconda-ks.cfg  awk  grep  sed
[[email protected] ~]$ sudo /usr/bin/ls /root/
abc  anaconda-ks.cfg  awk  grep  sed
[[email protected] ~]$

我们会发现可以使用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账号;

[[email protected] ~]# visudo
[[email protected] ~]# su - user005
上一次登录:三 12月 27 18:36:11 CST 2017pts/0 上
[[email protected] ~]$ whoami
user005
[[email protected] ~]$ su - root
密码:
[[email protected] ~]$ sudo su - root
上一次登录:三 12月 27 19:18:52 CST 2017pts/0 上
[[email protected] ~]# ls /root/
abc  anaconda-ks.cfg  awk  grep  sed
[[email protected] ~]# whoami
root
[[email protected] ~]#

限制root远程登录

编辑文件/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
将文档中的
#PermitRootLogin yes
改为
PermitRootLogin no
一定要去除#,#代表是注释的意思;

改完文件后记得重启sshd服务
systemctl restart sshd.service

重新登录测试发现服务器拒绝使用root远程登录
su命令、sudo临时赋予其他用户权限命令、限制root用户远程登录
su命令、sudo临时赋予其他用户权限命令、限制root用户远程登录
使用user005正常登录成功,然后使用sudo su - root命令成功切换到root用户下

Last login: Wed Dec 27 19:21:46 2017
[[email protected] ~]$ 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 次失败的登录尝试。
[[email protected] ~]#

转载于:https://blog.51cto.com/shuzonglu/2055256

版权声明:本文为weixin_33701564原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33701564/article/details/91770635