如何编辑sudoers文件实现用Python应用杀进程且不授予root kill权限
问题根因
你当前的/etc/sudoers配置仅授权user123以root身份执行/usr/local/bin/killzombies.py脚本,触发权限报错的核心原因是:
- 若你运行脚本时未加
sudo前缀,脚本内部存在调用sudo kill -9的逻辑,此时sudo会校验/bin/kill的执行权限,你并未给该命令单独授权,因此触发报错 - 就算你加了
sudo运行脚本,若脚本内部仍保留了sudo kill的冗余逻辑,也会触发二次sudo权限校验,同样会抛出该错误
修复方案
全程不需要给user123开放sudo kill的权限,按下面步骤操作即可:
- 编辑
/usr/local/bin/killzombies.py脚本,删掉所有命令前的sudo前缀,直接调用/bin/kill即可。当你用sudo运行整个脚本时,脚本内的所有命令默认都会以root身份执行,不需要二次加sudo。 - 后续执行脚本时统一使用sudo前缀:
sudo /usr/local/bin/killzombies.py
- (可选优化)如果不想每次输入完整路径和sudo,可以给user123配置命令别名:
打开user123家目录下的.bashrc(用zsh则修改.zshrc),末尾添加一行:
alias killzombies='sudo /usr/local/bin/killzombies.py'
执行source ~/.bashrc(对应zsh执行source ~/.zshrc)后生效,后续直接输入killzombies即可执行脚本。
效果确认
调整后完全符合你的预期:
- user123仅能通过固定脚本清理僵尸进程,没有单独执行
sudo kill -9的权限 - 脚本运行不会再触发权限报错
内容的提问来源于stack exchange,提问作者linda_s
相关产品推荐
相关产品推荐

