一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

服务器用户权限最小化原则如何落实

时间:2026-08-14 08:40:49 编辑:袖梨 来源:一聚教程网

服务器用户权限最小化是全链路控制,需创建专用低权限账户(如useradd -r -s /usr/sbin/nologin -M -U servicename)、服务进程全程降权运行(如Nginx配置user www-data;或systemd设User=appuser+NoNewPrivileges=yes)、文件权限按需分配(如/var/www/html设755/644、上传目录禁exec)、sudo精确白名单授权(如backupuser仅限指定rsync命令)并启用审计日志。

服务器用户权限最小化不是设个密码或改个权限数字就完事,而是从账户创建、运行身份、文件访问到操作审计,全链路只给“刚好够用”的权限。

创建专用低权限账户

别用默认用户或root跑服务,每个服务都该有独立身份:

  1. useradd -r -s /usr/sbin/nologin -M -U servicename创建系统级服务账户,禁用登录、不建家目录、自动配同名组
  2. 确认/etc/passwd中该用户shell字段为/usr/sbin/nologin,且UID在1–999系统保留范围内
  3. 普通运维账号也禁用root登录:执行sudo passwd -l root,并在/etc/ssh/sshd_config中设PermitRootLogin no

服务进程全程降权运行

进程启动那一刻就不该碰root——不是“先root再降权”,而是“从头到尾都不需要”:

  1. Nginx/Apache配置里明确写user www-data;,确保worker进程以该用户运行
  2. systemd服务单元中,在[Service]段加User=appuserGroup=appgroup,再配合NoNewPrivileges=yes防提权
  3. 查实际运行状态:ps aux | grep yourservice,USER列必须是你的专用账户,不能是root

文件与目录权限按需分配

权限不是越小越好,而是“谁用、怎么用、用在哪”三者匹配:

  1. 根目录(如/var/www/html)设为755(目录)、644(文件),属主属组均为www-data:www-data
  2. 上传目录(如/var/www/html/uploads)设为750,禁止执行权限(noexec挂载选项更佳)
  3. 配置文件(如/etc/nginx/nginx.conf)属主设为root:root,权限644600,www-data不能读
  4. find /path -type f -perm /o+w定期扫其他用户可写文件,及时收敛

sudo授权必须精确到命令

不给角色,只给动词;不放白名单,不设ALL:

  1. visudo编辑/etc/sudoers.d/backup,写死可执行命令,例如:backupuser ALL=(root) NOPASSWD: /usr/bin/rsync /data/ /backup/
  2. 验证是否生效:sudo -lU backupuser,输出应仅含你明确定义的那几条,多一条都不行
  3. 启用日志记录:Defaults logfile="/var/log/sudo.log",并设该文件权限为600、属主root:root

热门栏目