温馨提示×

Linux Minimal的权限设置如何操作

小樊
41
2025-12-14 05:50:20
栏目: 智能运维

Linux Minimal 权限设置实操指南

一 核心原则与基线

  • 坚持最小权限原则 PoLP:用户、进程、服务仅拥有完成其任务所必需的最低权限,避免过度授权(如随意使用 777、递归粗暴 chmod)。
  • 日常以普通用户登录,通过 sudo 按需提权;禁止或严格限制 root 远程登录。
  • 关键系统文件保持严格权限:如 /etc/shadow 600/etc/ssh/sshd_config 600;公共临时目录 /tmp 1777(粘滞位)。
  • 服务以专用系统用户运行,避免以 root 直接启动;必要时结合 ACLSELinux/AppArmor 做强制访问控制。

二 用户与 sudo 精细化

  • 创建专用系统用户(禁止登录)运行服务:
    • 示例:sudo useradd -r -s /sbin/nologin nginx
  • 为运维人员授予最小 sudo 权限(使用 visudo 编辑):
    • 仅允许重启某服务:user1 ALL=(ALL) /bin/systemctl restart nginx
    • 仅允许管理某目录文件:user2 ALL=(ALL) /bin/chown user2:webadmins /var/www/html, /bin/chmod 750 /var/www/html
  • 禁止 root 远程登录(SSH):
    • 编辑 /etc/ssh/sshd_configPermitRootLogin no,随后 sudo systemctl restart sshd
  • 用户与组管理常用命令(CentOS Minimal 同样适用):
    • 增删用户:sudo useradd -m newusersudo userdel -r olduser
    • 设置密码:sudo passwd newuser
    • 增删组:sudo groupadd developerssudo gpasswd -a newuser developers
    • 查看身份:id newuser
    • 变更属主/属组:sudo chown newuser:developers /data/app
    • 变更权限:sudo chmod 750 /data/app(目录常用 750,文件常用 644)

三 文件系统与访问控制

  • 关键文件与目录权限基线:
    • sudo chmod 644 /etc/passwdsudo chmod 600 /etc/shadowsudo chmod 600 /etc/ssh/sshd_config
    • sudo chmod 1777 /tmp(粘滞位,防越权删除)
  • 目录默认权限建议:
    • 常规目录 755,普通文件 644;避免使用 chmod -R 777 与随意递归修改。
  • 细粒度授权用 ACL(超出 u/g/o 的场景):
    • 授予用户对单文件读写:sudo setfacl -m u:user1:rw /var/www/html/index.html
    • 查看 ACL:getfacl /var/www/html/index.html
  • 防篡改关键文件:
    • 设置不可变属性:sudo chattr +i /etc/passwd;撤销:sudo chattr -i /etc/passwd
  • 按目录委派运维协作:
    • 建组:sudo groupadd webadmins
    • 赋权:sudo chown :webadmins /var/www/html && sudo chmod 770 /var/www/html
    • 加用户入组:sudo usermod -aG webadmins user1

四 服务、网络与强制访问控制

  • 服务以非 root运行(systemd 单元示例):
    • [Service] 下设置:User=nginxGroup=nginx,随后 sudo systemctl daemon-reload && sudo systemctl restart nginx
  • 资源与命名空间隔离(可选):
    • cgroups 限制 CPU/内存:sudo cgcreate -g cpu,memory:/nginxsudo cgset -r cpu.shares=512 nginxsudo cgset -r memory.limit_in_bytes=512M nginx
    • 命名空间隔离:sudo unshare --pid --fork /bin/bash
  • 网络最小暴露面:
    • 使用 firewalldsudo systemctl enable --now firewalldsudo firewall-cmd --permanent --add-service=http --add-service=sshsudo firewall-cmd --reload
    • iptables:仅内网网段访问 80:sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT,其余 DROP
  • 强制访问控制(MAC):
    • SELinux(RHEL/CentOS):sudo setenforce 1,为服务设置文件上下文(如 httpd_sys_content_t)并 restorecon
    • AppArmor(Debian/Ubuntu):为服务编写策略并 apparmor_parser 加载

五 审计、合规与验证

  • 审计关键文件与 sudo 使用:
    • 监控敏感文件:sudo auditctl -w /etc/passwd -p wa -k passwd_changes;审计日志:sudo ausearch -k passwd_changes
    • 查看 sudo 使用:sudo grep sudo /var/log/auth.log
  • 完整性校验与基线巡检:
    • AIDEsudo aideinit && sudo aide --check
    • Lynissudo lynis audit system
  • 变更风险控制:
    • 避免 chmod -R 与随意 777;对生产变更采用最小变更集变更前后校验回滚预案

0