Linux 用户与权限(rwx)详解

📅 2026/7/2 11:15:20
Linux 用户与权限(rwx)详解
Linux 是一个多用户Multi-user、多任务Multi-task操作系统。为了保证不同用户之间的数据安全Linux 提供了一套完善的权限管理机制。Linux 权限系统主要由以下几部分组成用户User用户组Group文件权限rwx特殊权限SUID、SGID、StickyACL扩展权限本文重点介绍 Linux 最基础也是最重要的用户与 rwx 权限模型。一、Linux 用户体系Linux 中一切操作都是以用户身份进行的。例如用户登录 │ ▼ Shell(Bash) │ ▼ 所有程序都以当前用户身份运行查看当前用户whoami例如root查看当前 UIDid例如uid1000(alice) gid1000(alice) groups1000(alice),27(sudo),100(users)二、Linux 用户分类Linux 用户主要分三类1、超级用户Rootroot 是 Linux 中权限最高的用户。特点UID 0可以访问任何文件可以修改系统配置可以管理所有用户基本不受普通权限限制查看id root输出uid0(root) gid0(root)2、普通用户例如alice bob tom特点UID ≥ 1000大多数发行版只能访问自己有权限访问的资源例如useradd alice查看id aliceuid1001(alice) gid1001(alice)3、系统用户很多服务都会创建自己的用户mysql www-data nginx postgres redis daemon例如cat /etc/passwd看到mysql:x:112:118:MySQL Server:/nonexistent:/bin/false特点一般 UID 1000不允许登录用于运行后台服务三、用户组GroupLinux 使用用户组管理权限。例如alice bob tom都属于dev这样project/ Groupdev三个用户都可以访问。查看当前组groups例如alice sudo docker dev查看某用户id aliceuid1000(alice) gid1000(alice) groups 1000(alice) 27(sudo) 999(docker)四、Linux 用户信息文件/etc/passwd所有用户信息cat /etc/passwd例如alice:x:1000:1000:Alice:/home/alice:/bin/bash格式用户名 密码占位 UID GID 描述 HOME目录 登录Shell例如alice:x:1000:1000:Alice:/home/alice:/bin/bash表示用户名alice UID1000 GID1000 HOME/home/alice Shell/bin/bash/etc/shadow真正密码sudo cat /etc/shadow例如alice:$6$xxxxx...普通用户不能读取。/etc/group组信息cat /etc/group例如docker:x:999:alice,bob表示docker组 成员 alice bob五、Linux 文件权限查看ls -l例如-rwxr-x--- 1 root dev 1024 Jun 18 test.sh分解-rwxr-x---可以分成- rwx r-x ---分别表示文件类型 Owner Group Others六、文件类型第一位表示类型字符类型-普通文件d目录l软链接c字符设备b块设备p管道sSocket例如-rw-r--r--普通文件。drwxr-xr-x目录。lrwxrwxrwx软链接。七、rwx 权限后九位rwxr-x---分成rwx r-x ---分别表示Owner Group Others每组三位r w xrRead读权限。对于文件允许cat less more cp例如cat test.txt没有 rPermission denied目录r 表示可以查看目录内容。例如ls dirwWrite写权限。文件允许修改内容 追加内容 删除内容受目录权限影响例如echo hello file目录w 表示允许创建文件 删除文件 重命名例如touch a.txt rm a.txtxExecute执行权限。文件./run.sh必须x否则Permission denied目录x 表示允许进入目录 cd dir 访问目录中的文件例如没有 xcd dir失败。八、目录权限与文件权限的区别很多初学者容易混淆目录和文件的rwx含义。权限文件目录r读取文件内容查看目录列表lsw修改文件内容创建、删除、重命名目录中的文件x执行文件进入目录、访问目录中的对象例如drwx------表示Owner 可以 ls cd touch rm别人全部禁止。九、数字权限八进制1. 基础数字与权限对应表 (0 - 7)Linux 将基本权限分为三种读r、写w、执行x。它们分别被赋予固定的权重值4、2、1。没有权限则记为0。数字权限组合字母表示二进制计算方式说明0无权限---0000不能读、不能写、不能执行1仅执行--x0011只能执行对目录来说代表“进入”2仅写入-w-0102只能写入/修改3写入 执行-wx0112 1可以修改并执行4仅读取r--1004只能读取/查看5读取 执行r-x1014 1可以读取并执行6读取 写入rw-1104 2可以读取和修改不能执行7读 写 执行rwx1114 2 1拥有所有基本权限2. 完整的权限结构3位数字一个完整的 3 位数字权限如755分别代表三类用户的权限第 1 位数字所有者User/Owner的权限第 2 位数字所属组Group的权限第 3 位数字其他人Others的权限举例7547(rwx)所有者 可读、可写、可执行5(r-x)所属组 可读、可执行4(r--)其他人 仅可读3. 最常见的权限组合示例在实际工作中你经常会遇到以下几种经典的权限组合数字字母表示常见用途说明644rw-r--r--普通文件所有者可读写其他人只能读。最安全的默认文件权限。755rwxr-xr-x目录 / 脚本所有者全权限其他人可读和进入/执行。最安全的默认目录权限。600rw-------敏感配置文件仅所有者可读写。常用于 SSH 私钥 (id_rsa)、数据库密码文件等。700rwx------私人目录仅所有者可读写和进入。常用于用户的家目录。777rwxrwxrwx共享目录所有人可读写执行。极度危险容易导致安全漏洞应尽量避免使用。711rwx--x--xWeb 用户目录所有者全权限其他人只能进入执行。常用于 Web 服务器的用户主目录。4. 进阶特殊权限4位数字有时候你会看到 4 位数字的权限如4755或1777这里的第 1 位数字代表特殊权限后 3 位依然是常规权限。特殊数字权限名称作用说明典型应用场景4SUID(Set User ID)当普通用户执行该文件时临时获得文件所有者的权限。/usr/bin/passwd(权限为4755)普通用户需要修改/etc/shadow密码文件通过 SUID 临时获取 root 权限。2SGID(Set Group ID)作用于文件执行时临时获得文件所属组的权限。作用于目录在该目录下新建的文件其所属组自动继承该目录的所属组。团队协作目录确保大家创建的文件都属于同一个组方便互相修改。1Sticky Bit(粘滞位)仅作用于目录虽然目录权限是 777大家都能写但用户只能删除属于自己的文件不能删除别人的文件。/tmp目录 (权限为1777)公共临时目录防止用户互相删除文件。十、chmod 修改权限数字方式chmod 755 file符号方式chmod ux file增加chmod gw file删除chmod o-r file全部chmod ax file说明符号含义uOwnergGroupoOthersaAll十一、chown 修改所有者修改用户chown alice file修改用户和组chown alice:dev file递归chown -R alice:dev project十二、chgrp 修改所属组修改组chgrp dev file递归chgrp -R dev project十三、权限判断规则假设-rwxr-----OwneraliceGroupdev当前用户bob属于devLinux 判断顺序是否为 rootUID0是则通常允许访问部分能力如不可执行文件执行、只读文件系统等仍受限制。是否为文件 Owner是则使用 Owner 权限位。是否属于文件所属 Group 或任一附加组是则使用 Group 权限位。否则使用 Others 权限位。注意权限不会叠加。一旦命中某一类Owner、Group 或 Others只检查该类权限。例如Ownerrw- Group--- Othersr--如果用户是文件 Owner即使 Others 有r权限也不能读取文件因为 Owner 权限已经命中且没有读权限。十四、权限检查实例文件-rwxr-x---OwnerrootGroupdev用户所属关系最终权限rootOwnerrwxalice属于 devGroupr-xbob不属于 devOthers---十五、常见权限场景1. Shell 脚本无法执行Permission denied原因chmod x script.sh2. 无法进入目录cd project提示Permission denied原因目录没有x3. 能看到目录但不能进入权限dr--r--r--结果ls dir可以若父目录允许访问。cd dir失败。4. 能进入目录却不能列出内容权限d--x--x--x结果cd dir可以。ls dir失败。但如果已知文件名cat dir/test.txt且文件本身有读权限则可以访问。十六、最佳实践遵循最小权限原则仅授予完成工作所需的最小权限避免使用777。目录通常使用755或750普通文件通常使用644或640可执行程序根据需要设置为755。共享项目优先使用用户组管理权限而不是将文件频繁修改为不同 Owner。需要更细粒度控制时使用 ACL而不是创建大量重复的用户组。理解目录权限比文件权限更重要文件能否删除、创建主要取决于目录的w和x权限而不是文件自身的w权限。定期检查权限使用ls -l、id、groups、namei -l path等命令排查权限问题必要时结合getfacl查看 ACL。