怎样限制deluser命令的使用范围
导读:限制 deluser 使用范围的可行方案 前置要点 deluser 在 Debian/Ubuntu 上用于删除用户账户,属于高危操作,执行需要 root 或 sudo 权限。默认不会删除用户的家目录与邮件目录,需要显式使用 –remove...
限制 deluser 使用范围的可行方案
前置要点
- deluser 在 Debian/Ubuntu 上用于删除用户账户,属于高危操作,执行需要 root 或 sudo 权限。默认不会删除用户的家目录与邮件目录,需要显式使用 –remove-home 等选项;若用户仍有登录会话或进程,删除会被拒绝,除非使用 –force 强制。因此,限制谁能执行、能删除谁、能带哪些选项,是降低风险的关键。
推荐做法
- 使用 sudoers 精确授权
- 原则:只授予最小必要权限,禁止危险选项(如 –force、–remove-home),并限制可操作的用户名或用户范围。
- 示例(/etc/sudoers 或 /etc/sudoers.d/90-deluser-restrict):
# 仅允许 op 组在 test 子系统中删除“test-”前缀的账户,且禁止危险选项 %op ALL=(root) /usr/sbin/deluser --system --quiet 'test-*' # 仅允许 alice 删除用户 bob(精确匹配),且不允许任何额外选项 alice ALL=(root) /usr/sbin/deluser bob # 允许 devops 删除除 root、admin、ubuntu 之外的任意用户(黑名单方式) %devops ALL=(root) /usr/sbin/deluser --system --quiet \ '!/usr/sbin/deluser --system --quiet root' \ '!/usr/sbin/deluser --system --quiet admin' \ '!/usr/sbin/deluser --system --quiet ubuntu' \ ALL - 说明:
- 将实际路径替换为
which deluser的输出(常见为 /usr/sbin/deluser)。 - 使用“精确用户名”或“通配模式”限制目标;通过命令前缀禁止 –force、–remove-home 等危险开关。
- 建议以“白名单”为主(允许列表)来最小化风险。
- 将实际路径替换为
- 通过包装脚本做二次校验
- 思路:禁止直接调用 deluser,统一走受控脚本,脚本内做“用户名白名单/黑名单、禁止危险选项、二次确认、操作审计”等检查,再 exec deluser。
- 示例(/usr/local/bin/safe-deluser):
#!/usr/bin/env bash set -euo pipefail LOG="/var/log/safe-deluser.log" ALLOWED_USERS=(alice bob) BANNED_USERS=(root admin ubuntu) if [[ " ${ ALLOWED_USERS[*]} " != *" $SUDO_USER "* ]]; then echo "ERROR: $SUDO_USER not allowed" | tee -a "$LOG" exit 1 fi if [[ " ${ BANNED_USERS[*]} " == *" $1 "* ]]; then echo "ERROR: deleting $1 is forbidden" | tee -a "$LOG" exit 1 fi # 禁止危险选项 for arg in "$@"; do case "$arg" in --force|--remove-home|--purge-home|--remove-all-files) echo "ERROR: dangerous option $arg is not allowed" | tee -a "$LOG" exit 1 ; ; esac done echo "$(date -u) $SUDO_USER deleting $*" > > "$LOG" exec /usr/sbin/deluser --system --quiet "$@" - 授权方式:
%op ALL=(root) /usr/local/bin/safe-deluser *
- 环境与流程控制
- 禁止 root 直接登录,统一通过 sudo 执行;将需要执行删除操作的账号加入受控组(如 op),并在组内细化授权。
- 开启审计与日志:确保 sudo 日志与系统审计(如 auditd)记录关键操作,便于事后追溯。
- 操作前强制备份与复核:删除前备份目标用户数据,执行时二次确认,降低误删风险。
快速最小示例
- 目标:仅允许 op 组成员删除名称以 app- 开头的系统用户,且禁止 –force 与 –remove-home。
- 步骤:
- 编辑 sudoers
%op ALL=(root) /usr/sbin/deluser --system --quiet 'app-*' - 验证
sudo -l -U op # 查看 op 的可用权限 sudo deluser --force app-foo # 应被拒绝(含 --force) sudo deluser app-bar # 成功(匹配白名单且无非授权选项) - 审计
grep deluser /var/log/auth.log
- 编辑 sudoers
注意事项
- 删除用户前,注意其可能仍在登录或有进程运行;若未使用 –force,deluser 会拒绝删除。强制删除(–force)风险高,应严格限制。
- 删除操作不可逆,务必先备份重要数据,并在变更窗口内执行,避免影响业务连续性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样限制deluser命令的使用范围
本文地址: https://pptw.com/jishu/765454.html
