Linux用户与权限管理:从基础概念到ACL高级控制

发布时间:2026/7/29 3:15:58

Linux用户与权限管理:从基础概念到ACL高级控制 1. 用户基础概念1.1 用户定义在Linux系统中用户User是用于身份识别、权限隔离和资源访问管控的账户实体。每个用户都有一个唯一的数字标识符——UIDUser ID。系统内核仅识别UID而不识别用户名UID是用户身份验证和权限检查的核心依据。UID分为三大类0超级用户root用户拥有系统最高权限1-999系统用户系统服务或守护进程使用的账户通常不允许交互式登录1000及以上普通用户普通登录用户由管理员创建用户核心配置文件/etc/passwd存储用户基本信息包含7个字段用户名、密码占位符、UID、GID、备注、家目录、登录shell/etc/shadow存储加密后的密码及密码策略信息1.2 组定义用户组Group是多个用户的集合其主要作用是简化Linux文件/目录的权限管理。系统通过GIDGroup ID数字标识来识别组。每个用户必须有一个主组Primary Group同时可以加入多个附加组Supplementary Groups。2. 常见用户操作命令2.1 查看当前登录用户Linux提供了多种查看登录用户的方式who显示所有登录系统的用户信息包含终端、登录时间、IP地址whoami输出当前操作用户的用户名w功能最全显示登录用户及其当前执行的命令、系统负载等信息2.2 查看指定用户组# 查看指定用户组信息 cat /etc/group | grep 组名 示例查看sudo组信息 cat /etc/group | grep sudo2.3 查看用户的ID和所属组# 查看指定用户的UID、GID及所属组 id 用户名 示例查看当前用户信息 id 或查看特定用户 id alice2.4 添加用户# 基本语法 useradd [选项] 用户名 常用选项 -u指定UID0-超级用户1-999系统用户1000普通用户 -G指定附加组多个组用逗号分隔 -d指定家目录路径 -s指定登录shell -m创建家目录通常与-d一起使用 -g指定主组 示例创建普通用户bobUID为1001主组为users附加组为sudo useradd -u 1001 -g users -G sudo -m -d /home/bob -s /bin/bash bob3. 组操作命令3.1 添加组# 语法 groupadd [选项] 组名 常用选项 -g指定GID -r创建系统组GID小于1000 示例创建开发组 groupadd -g 2000 developers3.2 修改组# 语法 groupmod [选项] 组名 常用选项 -g修改GID -n修改组名格式-n 新组名 原组名 示例将developers组GID改为2001 groupmod -g 2001 developers 示例将developers组重命名为devteam groupmod -n devteam developers3.3 删除组# 语法 groupdel 组名 注意生产环境中建议谨慎删除组特别是当组内有用户时 示例删除testgroup组 groupdel testgroup4. 用户管理进阶4.1 用户分类超级用户Super UserUID0通常是root系统用户System UserUID1-999用于系统服务普通用户Regular UserUID≥1000普通登录账户4.2 修改用户# 语法 usermod [选项] 用户名 常用选项 -u修改UID -G覆盖用户的附加组会替换原有附加组 -aG追加附加组不替换原有组 -m移动家目录到新位置通常与-d一起使用 -d修改家目录路径 -s修改登录shell -l修改用户名 示例修改用户alice的UID为1002 usermod -u 1002 alice 示例为alice追加sudo附加组 usermod -aG sudo alice 示例修改alice的家目录并移动原有文件 usermod -m -d /home/alice_new alice5. 权限设置5.1 chmod命令# 语法 chmod [选项] [权限] 文件/目录名 权限表示方法 1. 符号模式u/g/o/a /-/ r/w/x 2. 数字模式4位八进制数 示例符号模式 chmod ux script.sh # 给所有者添加执行权限 chmod g-w file.txt # 移除所属组的写权限 chmod or file.txt # 设置其他用户只有读权限 chmod ar file.txt # 给所有用户添加读权限 示例数字模式 chmod 755 script.sh # rwxr-xr-x chmod 644 file.txt # rw-r--r-- chmod 750 directory/ # rwxr-x---5.2 权限位详解Linux文件权限实际上由4位数字组成格式为特殊位 所有者 所属组 其他用户如0755。第1位特殊权限位取值范围1、2、4分别代表1粘滞位 - t/T通常用于目录确保只有文件所有者、目录所有者或root才能删除/重命名文件2设置组ID - sgid文件以所属组的身份执行目录中新创建的文件继承目录的组所有权4设置用户ID - suid文件以所有者的身份执行而不是执行者第2-4位分别表示所有者、所属组、其他用户的rwx权限读4写2执行1大小写含义小写t同时设置了执行权限(x)和粘滞位大写T设置了粘滞位但没有执行权限(x)同理适用于s/Ssuid/sgid示例# 设置粘滞位目录 chmod 1777 /shared/tmp # 或使用符号模式 chmod t /shared/tmp 设置suid程序 chmod 4755 /usr/bin/passwd 查看结果-rwsr-xr-x 设置sgid目录 chmod 2775 /shared/project 新创建的文件将继承project组的权限6. ACL访问控制列表ACLAccess Control List提供了比传统Unix权限更细粒度的访问控制机制允许为特定用户或组设置独立的权限。6.1 查看ACL# 语法 getfacl 文件/目录名 示例查看文件ACL getfacl important.doc 输出示例 # file: important.doc # owner: alice # group: developers user::rw- group::r-- other::r-- user:bob:rwx group:testers:r-x6.2 设置ACL# 语法为用户设置ACL setfacl [-R] -m u:用户名:权限 文件/目录名 语法为组设置ACL setfacl [-R] -m g:组名:权限 文件/目录名 选项说明 -m修改modifyACL规则 -R递归设置对目录及其子目录/文件生效 示例为用户bob设置对file.txt的读写执行权限 setfacl -m u:bob:rwx file.txt 示例为developers组设置对project目录的读写权限递归 setfacl -R -m g:developers:rw project/ 示例设置默认ACL新创建的文件继承ACL setfacl -m d:u:charlie:rw shared_dir/6.3 删除ACL条目# 语法删除特定用户的ACL setfacl [-R] -x u:用户名 文件/目录名 语法删除特定组的ACL setfacl [-R] -x g:组名 文件/目录名 示例删除bob对file.txt的ACL权限 setfacl -x u:bob file.txt 示例递归删除developers组对project目录的ACL setfacl -R -x g:developers project/6.4 清空ACL# 语法清空文件/目录的所有ACL权限恢复为标准Unix权限 setfacl -b 文件/目录名 示例清空document.txt的所有ACL设置 setfacl -b document.txt 示例递归清空目录及其内容的ACL setfacl -R -b shared_folder/6.5 ACL实战案例场景项目管理目录需要精细权限控制# 1. 创建项目目录 mkdir -p /projects/website 2. 设置基础权限 chmod 770 /projects/website chown alice:developers /projects/website 3. 为项目经理设置完全控制 setfacl -m u:bob:rwx /projects/website 4. 为测试组设置读和执行权限 setfacl -m g:testers:r-x /projects/website 5. 为实习生设置只读权限 setfacl -m u:charlie:r-- /projects/website 6. 设置默认ACL确保新创建的文件继承权限 setfacl -m d:u:bob:rwx /projects/website setfacl -m d:g:testers:r-x /projects/website setfacl -m d:u:charlie:r-- /projects/website 7. 查看最终ACL设置 getfacl /projects/website7. 总结Linux用户与权限管理体系是一个层次化的安全框架基础层用户和组的概念通过UID/GID进行身份识别标准权限层基于所有者、所属组、其他用户的三元组权限模型使用chmod进行管理特殊权限层suid、sgid、粘滞位提供额外的安全和控制功能扩展权限层ACL访问控制列表实现更细粒度的权限分配在实际系统管理中建议遵循最小权限原则根据实际需求选择合适的权限控制机制。对于简单的共享场景标准Unix权限通常足够对于复杂的多用户协作环境ACL提供了更灵活的解决方案。

相关新闻