Debian Linux服务器:为用户配置受限sudo权限并禁止访问特定目录
Debian Linux服务器:为用户配置受限sudo权限并禁止访问特定目录
嘿,我来一步步帮你搞定Debian服务器上的这个权限配置需求,全程都是新手友好的操作,放心跟着来就行:
一、先把受限用户归到统一组(后续管理更省心)
首先推荐创建一个专门的用户组,把所有需要受限sudo权限的用户拉进来,这样后续改权限只需要调整组配置,不用挨个用户修改:
- 创建专属组:
sudo addgroup limited-sudo - 把已有的用户加入该组(替换成实际用户名):
sudo usermod -aG limited-sudo alice - 如果是新建用户,创建时直接加组:
sudo useradd -m -G limited-sudo bob
二、编辑sudoers配置(核心:限制sudo命令范围)
重中之重:永远别直接用vim/nano编辑/etc/sudoers主文件!一定要用visudo命令,它会自动做语法检查,避免你写错导致sudo权限彻底失效!
我们可以在/etc/sudoers.d/目录下新建独立配置文件(比改主文件更安全,也方便后续维护):
- 打开新配置文件:
sudo visudo -f /etc/sudoers.d/limited-users - 粘贴以下配置内容,你可以根据实际需求调整黑名单里的命令:
# 允许组内用户执行大部分sudo命令,排除黑名单的危险操作与目录访问 %limited-sudo ALL=(ALL:ALL) ALL, \ !/usr/bin/sudo, !/usr/bin/su, !/bin/bash, !/bin/sh, \ !/usr/bin/* /home/*, !/bin/* /home/*, \ !/usr/bin/* /backups/*, !/bin/* /backups/*
配置内容解释:
%limited-sudo:表示规则对limited-sudo组的所有用户生效ALL=(ALL:ALL) ALL:默认允许执行所有sudo命令!/usr/bin/sudo:禁止用户用sudo再次提权,避免无限套娃拿到全权限!/usr/bin/su, !/bin/bash, !/bin/sh:禁止切换到root shell或打开新终端(这是绕开权限限制的常见手段)!/usr/bin/* /home/*, !/bin/* /home/*:禁止用任何系统命令访问其他用户的home目录(比如ls /home、cat /home/alice/secret.txt都会被拦截)!/usr/bin/* /backups/*, !/bin/* /backups/*:同理禁止访问你的备份目录
- 保存退出:在visudo里按
Ctrl+O,回车确认文件名,再按Ctrl+X退出
三、加固特定目录的文件系统权限(双重保险)
光靠sudo限制还不够,咱们再从文件系统权限层面加固,就算有漏洞,用户也碰不到敏感目录:
- 把所有用户的home目录权限改成仅所有者可读写执行:
sudo chmod 700 /home/*
(这个命令会把/home下所有用户目录的权限设为700,只有目录主人和root能访问) - 对你的备份目录(比如
/backups)做同样设置:sudo chmod 700 /backups
再把目录所有者设为你自己(替换成你的用户名):sudo chown your-username:your-username /backups
四、测试配置是否生效
切换到受限用户账号,测试几个关键场景:
- 尝试安装软件包:
sudo apt install htop→ 应该能正常执行 - 尝试访问其他用户的home目录:
sudo ls /home/alice→ 会提示“对不起,用户xxx无权执行此命令” - 尝试提权到root:
sudo su→ 同样会被拒绝
如果测试出问题,回到visudo检查配置有没有语法错误,或者调整黑名单里的命令即可。
备注:内容来源于stack exchange,提问作者CryptoRythmer




