禁用root账号的方法
1./etc/passwd把root账户的shell改为/sbin/nologin,这样会阻止su或者ssh登录,即时声效
1./etc/passwd把root账户的shell改为/sbin/nologin,这样会阻止su或者ssh登录,即时声效
首先大家看看我的/etc/passwd中的root用户的shell程序时/bin/bash
![](https://i-blog.csdnimg.cn/blog_migrate/e7f6257f45195d8fa350ead28c0789e1.jpeg)
然后我修改root的shell为/sbin/nologin
![](https://i-blog.csdnimg.cn/blog_migrate/8f8ab2c9055dd9d7987bc2ad68ec420a.jpeg)
此时我们试试能否用普通用户su或者ssh登录,看无法从普通用户fish切换到root,提示账户root账户无法允许
![](https://i-blog.csdnimg.cn/blog_migrate/19c8e7d73595baf530576c0bf0b8fc28.jpeg)
我们在来看看能否ssh登录,看依然提示同样的信息
![](https://i-blog.csdnimg.cn/blog_migrate/2ccabaa92f0cf814fbf4cd27946a9ecd.jpeg)
通过上面的限制想执行root权利只有通过sudo来完成了。
2./etc/securetty列出了root可以使用的所有登录设备,如果该文件不存在那么root就可以通过各类网络设备登录,这很危险因为一旦用telnet的方式来登录将会传送明文,按照默认安全只允许root连接物理串口
要阻止root通过其他设备登录就清空此文件 echo > /etc/securetty
*****一个空白的/etc/securetty不会阻止root用户使用ssh登录,但却可以阻止telnet****
要阻止root通过其他设备登录就清空此文件 echo > /etc/securetty
*****一个空白的/etc/securetty不会阻止root用户使用ssh登录,但却可以阻止telnet****
其实securetty如果没有pts/n这样的终端名字telnet也无法登录
我首先把securetty清空看能否阻止ssh或者telnet
![](https://i-blog.csdnimg.cn/blog_migrate/4fcc936cdb2aa2109b92ddda13efe8e6.jpeg)
然后我通过securecrt的ssh登录,发现无法阻止ssh登录
![](https://i-blog.csdnimg.cn/blog_migrate/a2912dfd57482ed6ed7acf1997393837.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/279cf757632a4573499df6876501cf57.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/df9e6e94832ad038f5fc085ffa07dda9.jpeg)
现在我试试用telnet登录看是否会阻止,提前我已经把pam的认证关闭了,我们发现telnet被阻止登录了
![](https://i-blog.csdnimg.cn/blog_migrate/07250d779c9ca6d1bbb1de669c855887.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/77c6db1e489d4ddef7460887469d598f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/451657d543fb3d1885fae6c892be778a.jpeg)
现在有两种办法允许telnet登录,
1.把/etc/securetty该个名字
![](https://i-blog.csdnimg.cn/blog_migrate/9423c484d7ba52a8f16377d36d2e4d8c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1cd4faa2a73c7b101ae8b1f87245e408.jpeg)
2.在/etc/securetty中添加几个终端名字pts/1 pts/2 ................ pts/11
![](https://i-blog.csdnimg.cn/blog_migrate/29859cd47cd52e4a66883be30e1b7ff7.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/bef55cd0636427c4b9ecdb3cb0b213ef.jpeg)
3.限制ssh登录/etc/ssh/sshd_config中PermitRootLogin yes->no
![](https://i-blog.csdnimg.cn/blog_migrate/74d0ff34ad3be5dcd9f49190de4516f2.jpeg)
然后重新启动sshd服务重新加载配置文件,就这个字符老是该不过来显示问号.
![](https://i-blog.csdnimg.cn/blog_migrate/082debcdabe48ccaa5eb97761c464072.jpeg)
看提示密码验证失败,其实是ssh无法验证root用户
![](https://i-blog.csdnimg.cn/blog_migrate/058527aed3c951f60e447049931422f0.jpeg)
限制普通用户对su的使用
1.usermod -G wheel <username>
2.system-config-users 把用户添加到wheel组中
vi /etc/pam.d/su去掉auth required /lib/security/$ISA/pam_wheel.so use_uid的注释
1.usermod -G wheel <username>
2.system-config-users 把用户添加到wheel组中
vi /etc/pam.d/su去掉auth required /lib/security/$ISA/pam_wheel.so use_uid的注释
sudo命令
授予用户管理权限的做法,任何可信任的用户输入sudo命令只会提示他自己的口令,当用户打算离开计算机请退出自己的shell到登陆界面,因为用户可以在5分钟之内再次使用刚才的命令而不必输入密码.
设置/etc/sudoers来配置哪些普通用户可以使用sudo命令,fish ALL=(ALL) ALL
现在我来把root用户su成fish,然后执行shutdown -r now重启有什么情况
授予用户管理权限的做法,任何可信任的用户输入sudo命令只会提示他自己的口令,当用户打算离开计算机请退出自己的shell到登陆界面,因为用户可以在5分钟之内再次使用刚才的命令而不必输入密码.
设置/etc/sudoers来配置哪些普通用户可以使用sudo命令,fish ALL=(ALL) ALL
现在我来把root用户su成fish,然后执行shutdown -r now重启有什么情况
![](https://i-blog.csdnimg.cn/blog_migrate/9f647700afa7822dcdf8b16694d067ae.jpeg)
给了你一大堆提示大意是说请尊重其他人的隐私并仔细思考后果在你输入这条命令之前,你拥有更大的能量就意味着你有更大的责任。此时输入密码是要求fish的而不是root的。最后一句提示说fish不输入sudoers文件中的用户所以无法执行sudo命令,那我就把fish加入到sudoers文件中
![](https://i-blog.csdnimg.cn/blog_migrate/a0bced6dd914910771ed4d0d081d5f95.jpeg)
此时我再来执行上述重启命令,记得加上shutdown命令的绝对路径因为在fish的PATH环境变量中没有/sbin这个目录所以说找不到命令,我和傻也很笨,哈哈
![](https://i-blog.csdnimg.cn/blog_migrate/76a83574f0a51cd0b183d24abf1d0769.jpeg)
服务器重启了,不是我干的,赶快消失!!!!
转载于:https://blog.51cto.com/linuxsafe/285937