如何限制用户su,设置sudo命令权限

linux系统创建的所有用户都可以默认su - root。
下面介绍怎么限制普通用户su

一. 限制普通用户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

------------------------------------------------------------------------------------------------------- 返回目录

你可能感兴趣的:(linux,文件系统管理)