Linux权限(超详细彻底搞懂Linux的权限)

[复制链接]
发表于 2026-10-4 15:12:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Linux 的权限体系是运维和内容管理的基础。本文从两类用户讲起,梳理权限公式、文件类型与 rwx 的三种表达、chmod 的角色写法和八进制写法、chown 与 chgrp、目录权限的特殊性、缺省权限与 umask,最后讲清粘滞位为什么能解决共享目录误删的问题。

一、Linux 的两种用户

  • 超级用户 root:不受任何限制,系统里什么都能做。
  • 普通用户:受权限约束。

用 whoami 可以查看当前是哪种用户。直观区分办法是看命令提示符:root 是 #,普通用户是 $。

切换用户:su

用 su 切换身份。root 切到普通用户直接 su 用户名;普通用户切到 root 则只敲 su 再输 root 密码。

提权:sudo

sudo 只对普通用户的指定命令做短暂提权。刚配好却报权限错,通常是因为当前用户不在 /etc/sudoers 里——需要管理员把该用户加进允许使用 sudo 的用户组(一般是 sudo 或 wheel)。

二、权限管理

权限的本质

权限限定的是角色,权限要求目标具备对应属性,所以可以记成一句话:权限 = 角色 + 目标权限属性。角色分三种:拥有者(User,u)、所属组(Group,g)、其他(Others,o)。拥有者是文件的所有者,所属组是所有者所在的用户组,其他是除所有者和所属组之外的一切人。

others 之所以常常不单独记录,是因为它几乎等于所有人:数量庞大、操作频繁、难以精确追踪,记录意义不大,审计重点本来就在于具体是谁、属于哪个组、执行了什么命令,而 others 的权限变动通常很少发生。

文件类型与权限值

ls -l 出来的首字符表示类型:d 是目录,- 是普通文件。后面九位每三位一组,依次对应拥有者、所属组、其他:

  • r 允许读
  • w 允许写
  • x 可执行

例如 drwxr-xr-x 2 root root 4096 Dec 1 7:53 code/ 表示:拥有者可读可写可执行,所属组可读不可写可执行,其他可读不可写可执行。

二进制与八进制

rwx 是两态的,要么有要么没有。rw-rw-r-- 对应的二进制是 110 110 100,八进制就是 664。六百六十四这个写法在 chmod 里用得最多。

修改权限:chmod

按角色改:chmod u-r 文件名 去掉拥有者读权限,chmod u+r 加回;chmod g-r 与 chmod g+r 同理针对所属组。按八进制改更直接:八进制 666 就是二进制 110 110 110,即 rw-rw-rw-,执行 chmod 666 文件名 一次搞定。

四条必须记住的规则:

  1. 用户只能改自己的文件权限。
  2. 没有权限时系统会直接拒绝访问。
  3. 判定权限时系统会识别用户角色,且只判定一次,顺序是拥有者、所属组、other。
  4. root 用户不受这些限制。

另外要区分:有可执行权限不等于文件可执行,比如文本脚本有 x 位但仍需解释器才能跑。

改归属:chown 与 chgrp

chown 改文件或目录的拥有者,chgrp 改所属组。普通用户默认不能把文件转交给别人,除非先提权——这是防止误传敏感文件的一道闸。

目录权限的特殊性

注意这里说的是普通用户,root 不受限:

  • 目录没有 r,就无法查看目录里的文件列表(ls 会报错)。
  • 目录没有 w,就无法在目录里新建或删除文件。

反过来想,x(可执行/进入)决定了能不能 cd 进去,三者缺一不可。

缺省权限与 umask

  • 普通文件起始权限是 666,默认不带可执行。
  • 目录起始权限是 777,默认带可执行。

最终权限 = 起始权限 & (~umask)。umask 的含义是:凡是在 umask 里出现的权限位,都不应该出现在最终权限里。默认权限由系统决定且无法在创建时指定,通过 umask 才能灵活控制新建文件的权限,让代码产物的权限是可预期的。

粘滞位 Sticky Bit

做个实验:在某个普通用户的目录下同时放一个普通用户文件和一个 root 文件,前者的权限相对 root 就是 other,普通用户按 rwx 就能操作它;把 root 文件的 other 位全关掉后,普通用户就完全动不了它——但仍能删除它。结论很关键:一个文件能不能被删除,跟文件本身无关,只跟它所在目录的 w 权限有关。

于是多用户共享场景就出问题了:/tmp 这类公共目录里,大家都能改,甚至能删别人的。解决武器就是粘滞位。设置了粘滞位的目录,用户只能删自己的文件,想删除或移动必须自己是文件所有者或 root,哪怕有写权限也不行。

chmod +t directory   # 为目录设置粘滞位
chmod -t directory   # 移除目录的粘滞位

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表