Linux多用户管理通过主组/附加组、umask、ACL和SGID实现精细化权限控制:用户属主组且可加入多附加组;文件属组权限对附加组成员生效;ACL支持特定用户/组授权;SGID确保共享目录新建文件自动继承属组;需定期审计并遵循最小权限原则。

Linux多用户管理的核心在于合理分配权限和利用组策略控制访问,避免“全有或全无”的粗放式授权。
用户与组的基本关系
每个用户属于一个主组(创建用户时自动生成),也能加入多个附加组。文件的属组权限对附加组成员同样生效,这是实现协作的关键机制。
常用操作示例:
- 创建用户并指定主组:sudo useradd -g devteam -G docker,git alice
- 查看用户所属组:groups alice 或 id alice
- 修改用户附加组:sudo usermod -aG sudo,billing bob(-a 表示追加,不覆盖原有组)
权限策略:从umask到ACL精细化控制
默认权限由 umask 控制(如 002 表示新文件权限为 664,目录为 775),但仅靠ugo+rwx无法满足复杂场景。ACL(访问控制列表)可为特定用户或组单独授权。
典型应用:
- 让非属组成员读写某项目目录:setfacl -m u:carol:rwX /srv/project
- 设置默认 ACL(对后续新建文件生效):setfacl -d -m g:devteam:rwx /srv/project
- 查看 ACL 设置:getfacl /srv/project
注意:启用 ACL 需确保文件系统挂载时带有 acl 选项(如 mount -o remount,acl /)。
组策略落地:/etc/group 与共享目录实践
组不是虚拟概念,而是真实参与权限判断的实体。通过统一维护 /etc/group 并配合 SGID 目录,可实现“组内协作、自动继承”。
标准做法:
- 为项目创建专用组:sudo groupadd -g 1200 projx
- 将相关用户加入该组:sudo usermod -aG projx user1 user2
- 设置共享目录并启用 SGID:sudo mkdir /shared/projx && sudo chgrp projx /shared/projx && sudo chmod 2775 /shared/projx
其中 2775 的首位 2 即 SGID 位,确保该目录下新建文件自动继承 projx 为属组,无需手动干预。
权限审计与最小化原则
定期检查高敏感目录(如 /etc、/var/log、项目根目录)的权限配置,坚持“只给必要权限”原则。
实用命令:
- 查找 world-writable 目录:find /usr/local -type d -perm -002 2>/dev/null
- 检查关键配置文件是否被非授权用户可读:ls -l /etc/shadow /etc/passwd | grep -v 'root:root'
- 锁定闲置账户:sudo usermod -L olduser(添加 ! 前缀禁用密码)
权限收紧后务必验证业务功能,避免因过度限制导致服务异常。










