openEuler 操作系统用户权限管理——sudo 权限的授予与限制案例

说明:

本文旨在分享记录在 openEuler 操作系统中,如何对普通用户进行权限授予与限制

所有操作演示基于 openEuler 22.03 LTS SP1 版本

汇总多种权限授予与限制的案例

1 sudo 权限

本节内容摘自官方文档:管理用户和用户组 (openeuler.org)

使用 sudo 命令可以允许普通用户执行管理员帐户才能执行的命令

sudo 命令允许已经在 /etc/sudoers 文件中指定的用户运行管理员帐户命令。例如,一个已经获得许可的普通用户可以运行如下命令:

sudo /usr/sbin/useradd newuserl

/etc/sudoers 的配置行如下所示:

  • 空行或注释行(以 # 字符打头):无具体功能的行

  • 可选的主机别名行:用来创建主机列表的简称。必须以 Host_Alias 关键词开头,列表中的主机必须用逗号(,)隔开,如:

Host_Alias     FILESERVERS = fs1, fs2
  • 可选的用户别名行:用来创建用户列表的简称。用户别名行必须以 User_Alias 关键词开头,列表中的用户名必须以逗号(,)隔开。其格式同主机别名行:
User_Alias ADMINS = jsmith, mikem
  • 可选的命令别名行:用来创建命令列表的简称。必须以 Cmnd_Alias 开头,列表中的命令必须用逗号(,)隔开:
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
  • 可选的运行方式别名行:用来创建用户列表的简称。不同的是,使用这样的别名可以告诉 sudo 程序以列表中某一用户的身份来运行程序

  • 必要的用户访问说明行:

user	host=[ run as user ]	command list

以上字段的含义及说明如下表所示:

说明:

  • 可以在一行定义多个别名,中间用冒号(:)隔开
  • 可在命令或命令别名之前加上感叹号 (!),使该命令或命令别名无效
  • 有两个关键词:ALL 和NOPASSWD。ALL 意味着“所有”(所有文件、所有主机或所有命令),NOPASSWD 意味着不用密码
  • 通过修改用户访问,将普通用户的访问权限修改为同 root 一样,则可以给普通用户分配特权
  • 对于 /etc/sudoers 文件的修改,推荐使用 visudo 命令,能够在保存时检查语法是否有误

/etc/sudoers 文件预先添加了一个用户(root)和一个用户组(wheel):

基于以上知识,可以实现对普通用户各种各样的授权与限制

2 案例汇总

2.1 案例一

目标:授予普通用户创建用户,并修改用户密码的权限,但是禁止该用户修改 root 用户密码

在 /etc/sudoers 文件中添加以下内容:

user1	ALL=(ALL)	/usr/sbin/useradd, /usr/bin/passwd, !/usr/bin/passwd "", !/usr/bin/passwd root

配置说明:

/usr/bin/useradd:允许 user1 用户执行 useradd USER 命令创建普通用户

/usr/bin/passwd:允许 user1 用户执行 passwd USER 命令修改用户密码

!/usr/bin/passwd root:禁止 user1 用户执行 passwd root 命令修改 root 用户密码

!/usr/bin/passwd "":禁止 user1 用户执行 passwd 命令修改 root 用户密码,因为 passwd 命令后边为空则默认为 root 用户

效果演示:

2.2 案例二

目标:授予普通用户执行任何命令的权限

方法一:可以将普通用户加入 wheel 组

方法二:在 /etc/sudoers 文件添加以下内容

user1	ALL=(ALL)	ALL

这两种方法的授权结果是有差异的,例如使用 su 命令的权限不同:

将普通用户加入 wheel 组后,在该用户密码强度足够的前提下,该用户可以直接使用 su -su - root 命令切换到 root 用户,而不必使用 sudo su -sudo su - root 命令

直接在 /etc/sudoers 文件中授予普通用户执行所有命令的权限后,该用户并不能直接使用 su -su - root 命令切换到 root 用户,而必须要使用 sudo su -sudo su - root 命令

之所以出现这两种差异,是因为 /etc/pam.d/su 文件中有以下配置:

auth            required        pam_wheel.so use_uid

这一行配置的意思是:只允许只允许 root 用户和 wheel 群组的帐户使用 su 命令,限制其他帐户使用。openEuler 默认开启此配置,因此导致普通用户即使拥有执行所有命令的权限,也不能使用 su 命令

2.3 案例三

目标:授予普通用户执行任何命令的权限,但是禁止该用户切换到 root 用户

在 /etc/sudoers 文件中添加以下内容:

user1	ALL=(ALL)	ALL, !/usr/bin/su - root, !/usr/bin/su - , !/usr/bin/bash

配置说明:

ALL:允许 user1 用户执行所有命令

!/usr/bin/su - root:禁止 user1 用户执行 sudo su - root 命令切换到 root 用户

!/usr/bin/su - :禁止 user1 用户执行 sudo su - 命令切换到 root 用户,因为 su - 命令后边为空则默认为 root 用户

!/usr/bin/bash:禁止 user1 用户执行 sudo -isudo -i rootsudo /bin/bash 等方式切换到 root 用户

效果演示:

4 Likes

图文并茂,写得很详细啊