顾乔芝士网

持续更新的前后端开发技术栈

信创系统 sudoers 权限配置实战!从小白到高手

原文链接:「链接」

Hello,大家好啊!今天给大家带来一篇关于信创终端操作系统中 sudoers 文件详解的实用文章!在 Linux 系统中,sudo 是一项非常重要的权限控制机制,它允许普通用户以其他用户(通常是 root)身份执行指定的命令。而 sudo 的行为规则,全部由 /etc/sudoers 文件来定义和管理。正确理解和配置 sudoers 文件,不仅能提升系统管理的安全性,也能让权限分配更加灵活高效。本文将全面讲解 sudoers 文件的结构、写法、典型配置示例及最佳实践。欢迎大家分享点赞,点个在看和关注吧!


  1. 什么是 sudoers 文件?

/etc/sudoers 是 sudo 工具的主配置文件。它定义了哪些用户或用户组可以使用 sudo,能以谁的身份执行哪些命令,以及是否需要输入密码等行为细节。

sudoers 文件必须由 root 用户通过专门的编辑工具 visudo 修改,确保语法正确,避免因配置错误导致系统无法使用 sudo。

注意:直接用普通文本编辑器(如 vim 或 nano)打开 /etc/sudoers 是不安全的,必须用 visudo。


  1. sudoers 文件基本语法结构

一条典型的规则格式为:

用户或用户组 主机 = (以谁的身份) [是否免密码] 允许执行的命令

各部分含义:

*部分*

*说明*

用户或用户组

指定用户名或以 %组名 表示的用户组

主机

指定在哪些主机上有效,通常填写 ALL

(以谁的身份)

指定以哪个用户身份执行命令,常用 (ALL) 或 (root)

[是否免密码]

NOPASSWD: 表示免密码;不写则默认需要输入密码

允许执行的命令

指定具体允许执行的命令,必须使用绝对路径


  1. 常见配置示例

3.1 创建普通用户

作用:在系统中新增一个名为 pdsyw1024 的普通用户,默认无管理员(sudo)权限。


3.2允许用户执行所有命令(需输入密码)

pdsyw@pdsyw-PC:~/Desktop$ sudo visudo

pdsyw1024 ALL=(ALL) ALL

用户 pdsyw1024 在所有主机上,可以以任何身份执行任何命令,但执行时需要输入密码。


pdsyw1024@pdsyw-PC:~$ sudo apt install nginx

解释:用户 pdsyw1024 现在可以用 sudo 安装软件,比如安装 nginx,执行前会要求输入自己的登录密码。


3.3 允许用户执行特定命令且免密码

pdsyw@pdsyw-PC:~/Desktop$ sudo visudo

pdsyw1024 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

用户 pdsyw 可以直接重启 nginx 服务,无需输入密码,且只能执行指定命令。


pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx

pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx

对不起,用户 pdsyw1024 无权以 root 的身份在 pdsyw-PC 上执行 /usr/bin/systemctl stop nginx。


解释:用户只能重启 nginx服务,无法停止、启动或管理其他服务。

这是限制最小权限原则的体现。


3.4 给用户组统一授权

pdsyw@pdsyw-PC:~/Desktop$ sudo usermod -aG pdsyw pdsyw1024 

pdsyw@pdsyw-PC:~/Desktop$ id pdsyw1024 

uid=1001(pdsyw1024) gid=1001(pdsyw1024) 组=1001(pdsyw1024),7(lp),100(users),109(netdev),117(lpadmin),119(scanner),997(sambashare),1000(pdsyw)


含义:把用户 pdsyw1024 加入到 pdsyw 用户组中(-aG表示追加到新组,不影响原有组)。


pdsyw@pdsyw-PC:~/Desktop$ sudo visudo

%pdsyw ALL=(ALL) ALL


pdsyw 组内的所有用户,拥有 sudo 所有权限。

注意:组名前必须加 % 符号。

含义:% 表示用户组,赋予 pdsyw 组内所有成员完全的 sudo 权限,执行任何命令,需要输入密码。


pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx

pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx

pdsyw1024@pdsyw-PC:~$ sudo apt install nginx

解释:属于 pdsyw 组的用户可以正常用 sudo 执行各类系统管理命令。


3.5允许执行多个特定命令

pdsyw@pdsyw-PC:~/Desktop$ sudo visudo

pdsyw1024 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl stop nginx


含义:允许 pdsyw1024 免密码执行重启和停止 nginx 的命令,中间用逗号分隔多个命令。


pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx

pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx

pdsyw1024@pdsyw-PC:~$ sudo systemctl start nginx

对不起,用户 pdsyw1024 无权以 root 的身份在 pdsyw-PC 上执行 /usr/bin/systemctl start nginx。


解释:用户只能执行被列出的特定命令,不能超出范围,比如无法执行 start nginx。


  1. 使用 /etc/sudoers.d/ 子文件进行权限管理(推荐)

为了提高管理灵活性,推荐将 sudo 配置拆分成子文件,存放在 /etc/sudoers.d/ 目录下。

操作步骤:

新建子文件并编辑(用 visudo 检查语法):

pdsyw@pdsyw-PC:~/Desktop$ sudo visudo -f /etc/sudoers.d/pdsyw1024

pdsyw1024 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx


作用:在 /etc/sudoers.d/ 目录下,专门为 pdsyw1024 单独建一个规则文件,便于权限管理、维护和审计。

含义:只允许重启 nginx,免密码。



pdsyw@pdsyw-PC:~/Desktop$ sudo chmod 440 /etc/sudoers.d/pdsyw1024


作用:保证子文件权限是 -r--r-----(即 0440),符合 sudo 要求,防止文件被随意修改。


pdsyw1024@pdsyw-PC:~$ sudo systemctl start nginx

对不起,用户 pdsyw1024 无权以 root 的身份在 pdsyw-PC 上执行 /usr/bin/systemctl start nginx。

pdsyw1024@pdsyw-PC:~$ sudo systemctl restart nginx

pdsyw1024@pdsyw-PC:~$ sudo systemctl stop nginx

对不起,用户 pdsyw1024 无权以 root 的身份在 pdsyw-PC 上执行 /usr/bin/systemctl stop nginx。


解释:用户权限依然受到严格限制,只能执行授权的命令。


好处:

避免直接修改主 sudoers 文件,降低误操作风险。

按用户、应用、角色单独管理权限,更清晰、更规范。

系统维护、配置审计更方便。


  1. sudoers 文件中常用的 Defaults 配置

Defaults 行可以用来调整 sudo 的全局默认行为。

常见示例:

*配置*

*含义*

Defaults env_reset

清空大部分环境变量,防止环境污染

Defaults timestamp_timeout=30

设置 sudo 密码缓存时间,单位分钟(30分钟内不用重复输入)

Defaults insults

密码输错时显示幽默提示(娱乐用)

Defaults !requiretty

允许在无终端(比如脚本里)使用 sudo

例如:

pdsyw@pdsyw-PC:~/Desktop$ sudo visudo

Defaults timestamp_timeout=15

表示 sudo 密码输入一次后,15分钟内免输。


  1. 安全注意事项

*注意事项*

*说明*

始终使用 visudo 编辑

防止语法错误导致系统无法使用 sudo

指定命令时使用绝对路径

必须写完整路径,例如 /usr/bin/systemctl,不能只写命令名

权限最小化原则

只授权必要命令,避免给予过大权限

不滥用通配符

/usr/bin/* 等宽泛规则容易引发安全漏洞

保持子文件权限为 0440

防止未授权用户篡改 sudo 配置


  1. 小结

/etc/sudoers 是 Linux 系统中 sudo 权限的核心配置文件。

正确使用 sudoers 可以精确控制普通用户的操作权限,提升系统安全性。

推荐通过 /etc/sudoers.d/ 子文件进行分模块管理,规范又安全。

编辑时务必使用 visudo 工具,确保配置无误。

良好的 sudo 权限管理,不仅能有效提升系统运维效率,也是保障系统安全不可或缺的重要措施。


附录:常见命令参考

*操作*

*命令*

打开 sudoers 主文件

sudo visudo

编辑 sudoers 子文件

sudo visudo -f /etc/sudoers.d/用户名

查看命令绝对路径

which 命令名

设置文件权限为 0440

sudo chmod 440 /etc/sudoers.d/文件名


正确配置 /etc/sudoers,是保障 信创终端操作系统 安全性和运维效率的重要步骤。

本文结合 dde-printer 组件操作实例,讲解了从基础到进阶的完整配置方式,包含:

语法规则

用户与组授权

子文件管理

安全最佳实践

掌握这些技巧,能够帮助大家在日常管理中更加规范、灵活、安全地使用 sudo!

如果你觉得这篇文章对你有帮助,欢迎点赞、转发、点个在看~我们下次再见!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言