目录
限制su命令切换到root用户限制非root用户修改密码su、sudo、sudo su服务器安全限制su命令切换到root用户
限制su
命令切换到root用户
不希望所有用户都可以通过su
命令切换身份,
启用pam_wheel认证模块
vim /etc/pam.d/su
取消注释以强制用户成为组root的成员才能使用“su”。
如果您想使用默认“root”以外的组,也可以在这行的末尾添加“group=foo”(但这可能会有拒绝“root”用户的副作用,除非她是“foo”的成员或前面明确允许的,例如“SU_WHEEL_ONLY"). (替换来自登录名.defs)
去掉这一行的#
这样执行su命令的用户都将受到限制,只有root组中的成员才有权限执行su命令。
如果想让某个组中的成员有su root
的权限,可以像上图这样改,这样ubuntu组中的成员都有权限执行su命令。
当不属于root用户组、ubuntu用户组的成员使用su命令切换到root时会被拒绝,即使输入了正确的root密码。
限制非root用户修改密码
设置其他用户不能使用sudo passwd root
修改root密码
root~# visudo
或者vim /etc/sudoers
像上图这样给那么多ALL=(ALL:ALL) ALL
权限是非常危险的行为
意味着这些用户都能轻松通过sudo passwd root
修改root的密码
主机=(用户:用户组) 命令
ALL=(ALL:ALL) ALL
的意思就是被授权的用户,在所有的主机、获取所有用户|用户组的身份、使用所有的sudo命令。
限制权限可以像下图这样修改:
一般来说允许的sudo命令设置的越准确越安全,就是具体需要哪些命令,ALL=要的命令,而不是直接授权所有。
设置免密并且禁止某操作:ALL=NOPASSWD:ALL,!/usr/bin/passwd root
/etc/sudoers文件
这是一个只读文件,可以用vim /etc/sudoers来修改并且使用:wq!退出,不过更推荐root权限下使用visudo
命令来打开这个文件,退出保存的时候还能检测是否有格式错误。
这个文件里可以授权用户,也可以授权用户组,以%开头的是用户组。
这个文件其实可以设置的东西有很多,这里就不说了。
su、sudo、sudo su
su
命令的主要作用是让你可以在已登录的会话中切换到另外一个用户。
su
命令经常被用于切换到超级用户或root用户,同样也可以切换到任意用户。
su root
需要输入root用户密码,别的也一样。
su root
切换用户后仍然保持原用户的环境,
如果使用su - root
,则是创建一个新的环境(由root用户~/.bashrc文件所设置的环境),相当于使用root用户正常登录(从登录屏幕登录)。
sudo
命令需要输入当前用户的密码,当然可以像上面设置的那样设置NOPASSWD来免密切换root。
就安全而言,sudo命令更好,不需要共享root的密码。
两个命令之间的另外一个区别是其默认行为。
sudo
命令只允许使用提升的权限运行单个命令,而su
命令会启动一个新的shell,同时允许使用root权限允许尽可能多的命令,直到明确退出登录。
尽管sudo是以目标用户(默认root)的身份执行命令,但是会使用sudoers所配置的用户名来记录是谁执行命令。而su命令是无法直接跟踪记录用户切换到root用户之后执行了什么操作。
当你使用
sudo su
的时候,不用输入密码就可以获得root权限。
最后还是建议可以不启用root账户,其实sudo su已经够用
服务器安全
为了系统安全,禁用root用户是最安全的。
并且ssh登录不再使用密码,而是使用密钥来直接远程登录。
sshd提供的另外一种安全登录方式。
需要在本地生成密钥对,然后把密钥对中的公钥传到服务器。
本地安全的话就一直回车回车就行。
然后会在上面所说的目录里生成公钥和私钥。
复制公钥的内容到服务器上,cd 隐藏目录 cd .ssh 目录, 然后nano回车,加上复制的公钥,
ctrl X退出,Y保存,回车
然后指定用户、ssh链接设置里绑上私钥
这样就可以不通过密码进行SSH远程连接了。
再修改sshd_config文件,
#禁用密码登录
PasswordAuthentication no
#启用密钥验证
RSAAuthentication yesPubkeyAuthentication yes
#指定公钥数据库文件
AuthorsizedKeysFile .ssh/authorized_keys
重启SSH服务之前建议多保留一个会话,万一有问题。