linux系统创建的所有用户都可以默认su - root。
下面介绍怎么限制普通用户su
1. 添加wheel组
一般来说,系统会创建一个wheel组,如果没有,groupadd创建一个即可
[sudoer1@host ~]$ grep wheel /etc/group
wheel:x:10:
2. 将用户添加到wheel用户组
[root@host ~]# usermod -G wheel test1
[root@host ~]# id test1
uid=1009(test1) gid=1009(test1) 组=1009(test1),10(wheel)
3. 修改插拔认证模块(PAM)
[root@host ~]# vim /etc/pam.d/su
#auth required pam_wheel.so use_uid 把这行#去掉,wq退出
4. 验证
[root@host ~]# grep wheel /etc/group
wheel:x:10:test1
[root@host ~]# su - test1
上一次登录:三 5月 6 17:07:54 CST 2020pts/1 上
[test1@host ~]$ su - root
密码:
上一次登录:二 5月 12 09:29:17 CST 2020从 192.168.10.1pts/0 上
[root@host ~]#
[root@host ~]# su - sudoer1
上一次登录:二 5月 12 09:55:57 CST 2020pts/0 上
[sudoer1@host ~]$ su - root
密码:
su: 拒绝权限
[sudoer1@host ~]$ su - test1
密码:
su: 拒绝权限
[sudoer1@host ~]$
不过这样也不安全,建议设置sudo命令,普通用户使用sudo 命令执行特殊命令
二. 配置sudo
下面来介绍配置sudo参数,来设置使用sudo命令 ----visudo命令。
1.普通用户sudo权限
[root@host ~]# visudo
%wheel ALL=(ALL) ALL #有这么一行
%wheel :wheel组
ALL :登录机器
(ALL):使用sudo身份
ALL :可以使用sudo 后的命令
2. 用户组配置sudo命令
2.1 主机分组
[root@host ~]# visudo
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
# 分组命名 = 主机名字或IP
#如:
Host_Alias OPS = 192.168.10.1
2.2 用户分组
[root@host ~]# visudo
# User_Alias ADMINS = jsmith, mikem
# 分组命名 = username
#如:
User_Alias OPS = ops01,ops02,ops03
2.3 命令分组
[root@host ~]# visudo
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
...
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere #在这里配置
root ALL=(ALL) ALL
sudoer1 ALL=(root) /usr/sbin/useradd
...
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d #提示写入/etc/sudoer.d/目录下配置
2.3 /etc/sudoers.d/
正常配置
[root@host ~]# cd /etc/sudoers.d/
[root@host sudoers.d]# ls
[root@host sudoers.d]# vim user #随便命名
test1 ALL=(ALL) /usr/sbin/useradd
test01 ALL=(ALL) /usr/bin/mount mount /dev/sr0 /media
验证:
[root@host sudoers.d]# su - test1
上一次登录:二 5月 12 11:09:02 CST 2020pts/0 上
[test1@host ~]$ sudo useradd test02
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] test1 的密码:
[test1@host ~]$ cat /etc/passwd
test02:x:1053:1053::/home/test02:/bin/bash
上面的设置,每次sudo会验证密码,很麻烦,我们通过设置可以跳过密码
# User_Alias ADMINS = jsmith, mikem
User_Alias USERADD = test1,test01
# Host_Alias MAILSERVERS = smtp, smtp2
test01 ALL=(ALL) /usr/bin/mount mount /dev/sr0 /media
Cmnd_Alias ADD=/usr/sbin/useradd
USERADD ALL=(root) NOPASSWD: ADD
验证:
[test01@host ~]$ sudo useradd test07
sudo: 账户过期,或 PAM 配置缺少 sudo 使用的“account”节,联系您的系统管理员
[root@host sudoers.d]# su - test1
上一次登录:二 5月 12 11:32:41 CST 2020pts/0 上
[test1@host ~]$ sudo useradd test07
[test1@host ~]$
#注意,此处说的PAM没有打开权限,上面配置的是只有wheel组用户才可以su,test1在wheel,而test01并不在wheel组
取反:即除了这些命令其他都可以执行
把/etc/pam.d/su文件中的su选项注掉
[root@host sudoers.d]# vi user
User_Alias USERADD = test1,test01
# Host_Alias MAILSERVERS = smtp, smtp2
test01 ALL=(ALL) /usr/bin/mount mount /dev/sr0 /media
Cmnd_Alias ADD=/usr/sbin/useradd
USERADD ALL=(root) NOPASSWD: ADD
#使user1,user2`用户能够有权限使用/usr/sbin/下的所有命令,除了/usr/sbin/userdel
User_Alias USR = user1,user2
Cmnd_Alias NOT=/usr/sbin/
USR ALL=(root) NOPASSWD:NOT,!/usr/sbin/userdel
验证:
[user1@host ~]$ sudo useradd user3
[user1@host ~]$ grep user3 /etc/passwd
user3:x:1061:1061::/home/user3:/bin/bash
[user2@host ~]$ sudo usermod -l user03 user3
[user2@host ~]$ grep user03 /etc/passwd
user03:x:1061:1061::/home/user3:/bin/bash
------------------------------------------------------------------------------------------------------- 返回目录