在Linux中管理sudo权限主要通过用户组或编辑/etc/sudoers文件实现。推荐使用用户组方式:在Debian/Ubuntu系统中将用户添加到sudo组(sudo usermod -aG sudo username),在CentOS/RHEL中添加到wheel组(sudo usermod -aG wheel username);撤销权限则用gpasswd -d命令将其从对应组移除。此方法安全、简洁,适用于大多数场景。对于精细化控制,可使用visudo命令编辑/etc/sudoers文件,添加如“username ALL=(ALL:ALL) ALL”赋予完全权限,或限制特定命令执行,避免直接用文本编辑器修改以防语法错误导致系统无法使用sudo。相比su命令需目标用户密码且缺乏审计,sudo以自身密码认证、支持细粒度授权和日志记录,更安全可控。管理多用户时应遵循最小权限原则,按职责划分用户组统一授权,谨慎使用NOPASSWD选项,并定期审计权限配置,结合Ansible等配置管理工具实现自动化与一致性维护。

在Linux系统中,启用或关闭用户的sudo权限,核心在于修改
/etc/sudoers
sudo
wheel
为用户启用sudo权限通常有两种主要方式,各有其适用场景和考量:
1. 通过用户组管理(推荐且常用)
这是最直接也最推荐的方法。在大多数现代Linux发行版中,系统会预设一个或多个组,其成员被允许执行
sudo
sudo
wheel
启用权限: 要给用户
your_username
# 对于基于Debian/Ubuntu的系统 sudo usermod -aG sudo your_username # 对于基于CentOS/RHEL的系统 sudo usermod -aG wheel your_username
这里的
-aG
-a
-G
su - your_username
关闭权限: 撤销用户
your_username
# 对于基于Debian/Ubuntu的系统 sudo gpasswd -d your_username sudo # 对于基于CentOS/RHEL的系统 sudo gpasswd -d your_username wheel
gpasswd -d
2. 直接编辑 /etc/sudoers
这种方式提供了更细粒度的控制,但风险也更高。你需要使用
visudo
/etc/sudoers
visudo
启用权限: 执行
sudo visudo
your_username ALL=(ALL:ALL) ALL
这行配置的意思是:用户
your_username
ALL
ALL
ALL
ALL
%sudo
%wheel
%sudo ALL=(ALL:ALL) ALL
保存并退出
visudo
关闭权限: 同样使用
sudo visudo
#
# your_username ALL=(ALL:ALL) ALL
保存并退出。
我个人在日常管理中,更倾向于通过用户组来管理sudo权限。它更简洁,也更不容易出错。只有当需要对特定用户或组进行非常精细的权限控制(比如只允许执行某个特定命令,或者免密码执行某个命令)时,我才会考虑直接编辑
/etc/sudoers
/etc/sudoers
说实话,每次当我需要直接编辑
/etc/sudoers
visudo
如果你直接用
vi
/etc/sudoers
sudoers
sudo
我记得有一次,我在一个测试环境里,为了省事直接用
vi
sudoers
sudo
su -
visudo
visudo
sudo
su
这俩命令在表面上看起来都是为了执行特权操作,但骨子里它们的工作方式和设计哲学截然不同。我经常看到新手会把它们搞混,但理解它们之间的差异对于Linux系统管理和安全至关重要。
sudo
sudo command
/etc/sudoers
command
command
sudo
sudo
su
su - other_user
other_user
other_user
su
su
su
sudo
我个人更倾向于使用
sudo
sudo
su
管理多个用户的sudo权限,远不止简单地加组或删行那么简单,它更像是一门艺术,融合了技术、安全策略和一点点哲学。我的经验告诉我,混乱的权限管理迟早会酿成大祸。
坚持最小权限原则(Principle of Least Privilege): 这是黄金法则。只赋予用户完成其工作所需的最低权限。如果一个用户只需要重启某个服务,就不要给他执行所有命令的权限。在
/etc/sudoers
your_username ALL=/usr/bin/systemctl restart your_service
这样,
your_username
your_service
利用用户组进行权限分组: 对于拥有相同职责的用户,把他们归入同一个组(比如
devops
dbadmin
sudoers
%devops ALL=(ALL) /usr/bin/systemctl restart nginx
这比为每个用户单独配置要高效得多。
合理使用NOPASSWD
NOPASSWD
your_username ALL=(ALL) NOPASSWD: /usr/bin/apt update
我一般会把这个选项限制在特定的、无害的命令上,比如
apt update
定期审计sudoers
/etc/sudoers
sudo
wheel
考虑配置管理工具: 如果你管理着大量的Linux服务器和用户,手动管理
sudoers
sudoers
总的来说,安全地管理sudo权限是一个持续的过程。它要求我们既要理解技术细节,又要对潜在的安全风险保持警惕,并不断优化我们的管理策略。
以上就是Linux如何启用和关闭用户sudo权限的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号