sudo通过/etc/sudoers文件实现精细权限控制,遵循最小权限原则,使用visudo编辑配置,结合用户组、Cmnd_Alias和NOPASSWD等机制,按需授权并定期审计撤销,确保安全与灵活兼顾。

在Linux中,管理临时权限的核心工具就是
sudo
sudo
/etc/sudoers
sudo
要配置
sudo
visudo
/etc/sudoers
visudo
sudo
基本用法: 普通用户执行需要root权限的命令时,只需在命令前加上
sudo
sudo systemctl restart nginx
授予临时权限的步骤:
visudo
/etc/sudoers
vi
用户 主机=(以哪个用户身份执行) 命令
devuser
nginx
devuser ALL=(root) /usr/bin/systemctl restart nginx
devuser
NOPASSWD:
devuser ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
visudo
这样,
devuser
sudo systemctl restart nginx
配置
sudo
ALL=(ALL) ALL
systemctl restart apache2
systemctl stop apache2
systemctl start apache2
Cmnd_Alias
Cmnd_Alias APACHE_CMDS = /usr/bin/systemctl start apache2, /usr/bin/systemctl stop apache2, /usr/bin/systemctl restart apache2 devuser ALL=(root) APACHE_CMDS
sudoers
%devgroup ALL=(root) APACHE_CMDS
注意
%
NOPASSWD:
NOPASSWD:
sudo
sudo
PATH
Defaults env_keep
sudo
/var/log/auth.log
syslog
编写
sudoers
单次任务授权: 假设一个开发人员
developer1
/etc/some_app/config.conf
vi /etc/some_app/config.conf
vi
cat
echo
developer1 ALL=(root) /usr/bin/cat /etc/some_app/config.conf developer1 ALL=(root) /usr/bin/echo * >> /etc/some_app/config.conf
这只是一个例子,实际操作中,可能需要一个更复杂的脚本来确保文件内容的完整性。
特定服务管理: 如果一个运维人员
opsuser
docker
opsuser ALL=(root) /usr/bin/systemctl restart docker.service, /usr/bin/systemctl stop docker.service, /usr/bin/systemctl start docker.service
这里我用了逗号分隔多个命令。如果命令列表很长,前面提到的
Cmnd_Alias
限制执行路径: 为了防止用户执行非预期的命令(例如,用户自己写了一个名为
ls
PATH
sudoers
PATH
devuser ALL=(root) /bin/ls, /bin/cat, /usr/bin/find
这样就确保了用户只能执行系统自带的
ls
cat
find
临时用户账户的配合: 对于真正的“临时”用户,比如外包团队成员,除了在
sudoers
sudoers
sudo
# 创建临时用户,并设置过期时间为2023年12月31日 sudo useradd -e 2023-12-31 temp_contractor sudo passwd temp_contractor # 然后在sudoers中为temp_contractor配置权限
虽然
sudoers
撤销权限和授予权限一样重要,甚至更重要。忘记撤销的临时权限,往往会成为日后系统安全隐患的伏笔。在我看来,权限的生命周期管理是一个闭环,授权只是开始,撤销才是结束。
编辑sudoers
sudo
visudo
/etc/sudoers
#
# 使用visudo打开文件 sudo visudo # 找到并删除或注释掉以下行: # devuser ALL=(root) /usr/bin/systemctl restart nginx # %devgroup ALL=(root) APACHE_CMDS
保存退出后,这些权限立即生效。
禁用或删除用户账户: 如果这个临时权限是授予一个临时用户账户的,那么在任务完成后,最彻底的方法是禁用或删除该用户账户。
sudo usermod -L temp_user
sudo usermod -e 1 temp_user
sudo userdel -r temp_user
-r
定期审计与审查: 我个人建议,所有的
sudoers
/etc/sudoers
使用配置管理工具: 在大型环境中,手动管理
sudoers
sudoers
以上就是如何在Linux中管理临时权限 Linux sudo临时授权的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号