Linux 普通用户su root 权限的开启和禁止
linux系统为了限制权限,有时候需要禁止普通用户su到root用户, 首先先说明一下:
su #只是切换到root用户, 不改变当前目录;
su - #切换到root和改变目录到/root
wheel组的介绍
在Linux中wheel组就类似于一个管理员的组。通常在LUNIX下,即使我们有系统管理员root的权限,也不推荐用root用户登录。一般情况下用普通用户登录就可以了,在需要root权限执行一些操作时,再su登录成为root用户。但是,任何人只要知道了root的密码,就都可以通过su命令来登录为root用户,这无疑为系统带来了安全隐患。
所以,将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户,但如果不对一些相关的配置文件进行配置,这个管理员组内的用户与普通用户也没什么区别–就像警察下班后,没有带枪、穿这便衣和普通人(用户)一样,虽然他的的确确是警察。
根据应用的实例不同应用wheel组的方法也不同。这里对于服务器来说,我们希望的是剥夺被加入到wheel组用户以外的普通用户通过su命令来登录为root的机会(只有属于wheel组的用户才可以用su登录为root)。这样就进一步增强了系统的安全性。具体步骤如下:
修改 /etc/pam.d/su
文件,找到
#auth required /lib/security/$ISA/pam_wheel.so use_uid
这一行,将行首的“#”去掉。
修改 /etc/login.defs
文件,在最后一行增加“SU_WHEEL_ONLY yes
”语句。
然后,用“usermod -G wheel 用户名
”将一个用户添加到wheel组中。
usermod -G wheel 用户名
用刚刚被添加到wheel组的用户登录,并执行su命令登录为root用户。这时输入了正确的root密码可以正常的登录为root用户。但是,如果换成一个不属于wheel组的用户时,执行了su命令后,即使输入了正确的root密码,也无法登录为root用户。普通用户登录为root用户的权限被完全剥夺了。(会收到“密码错误”的提示)。这样无疑提高了系统的安全性。
以上步骤基于CentOS,并适用于Fedora Core和RHEL。接下来我们来操作验证一下,具体的操作步骤如下:
一、实验环境
[root@t2 pam.d]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@t2 pam.d]# uname -a
Linux t2 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
二、详细配置
(1)去除/etc/pam.d/su
文件中如下行的注释:
vi /etc/pam.d/su
(2)在/etc/login.defs文件中加入如下配置项:
vim /etc/login.defs添加:
SU_WHEEL_ONLY yes
经过上述配置后,普通用户将被禁止su至root,如果希望指定普通用户su至root,可以执行如下命令将该用户添加至wheel组中:
usermod -G wheel username
或者
gpasswd -a username wheel
三、场景示例
方法1:
[root@t1 ~]# id a1
uid=1001(a1) gid=1001(a1) groups=1001(a1),10(wheel)
[root@t1 ~]# id a2
uid=1002(a2) gid=1002(a2) groups=1002(a2)
验证
[a1@t1 ~]$ su - root
Password:
Last login: Fri Apr 19 16:40:23 CST 2019 from 10.0.0.1 on pts/2
[root@t1 ~]# [a2@t1 ~]$
[a2@t1 ~]$ su - root
Password:
su: Permission denied
方法2:修改 /etc/pam.d/su文件中如下行:
vim /etc/pam.d/su#auth required pam_wheel.so use_uid
auth required /lib64/security/pam_wheel.so use_uid group=wheel
#路径不加也是可以的,因为我的环境是x86架构的
auth required pam_wheel.so use_uid group=wheel