文章总结: 本文系统介绍了Linux文件权限体系,涵盖用户与组分类、rwx三大权限含义、ls-l输出解读、八进制权限数值(如755、644)及chmod/chown命令用法。重点解析了SUID、SGID、StickyBit特殊权限位,并强调避免使用777权限,建议遵循最小权限原则。文章适合Linux初学者理解权限管理核心概念与安全实践。 综合评分: 84 文章分类: 安全建设,技术标准,安全意识
一文读懂 Linux 文件权限
内存泄漏
2026年7月10日 06:52 辽宁
在小说阅读器读本章
去阅读
以下文章来源于运维漫谈 ,作者漫谈君
运维漫谈 .
运维漫谈,漫谈整个网络安全、云计算、大数据、数据库、开发等运维技术干货,旨在分享干货,帮您更快学习相关知识,解决问题。
时光倒流回 20 世纪 90 年代中期,那是我第一次接触 Linux。当时我买了一张 Red Hat 5.0 的安装光盘,随书附带的教程宣称读者可以在 24 小时——或许是一周内学会 Linux。在那个由 MS-DOS 和 Apple ProDos 统治命令行认知的时代,这种说法听起来有些不可思议。
起初,我对 Linux 并不感冒,甚至觉得它只是 MS-DOS 的某种翻版。由于当时对命令行的理解尚浅,我曾一度由于这种“畏难情绪”而错过了它。然而,近三十年后的今天,我深刻意识到,正是 Linux 那套严密的权限体系,让它在稳定性与安全性上超越了包括 Windows 在内的许多操作系统。
Linux 系统中“一切皆文件”的设计哲学,要求每一位使用者必须理解权力的边界。
用户与组
在 Linux 的世界里,身份管理是权限控制的前提。系统通过三个维度来定义谁可以对文件进行操作。
1. 所有者(Owner/User, u)
这是文件的创造者。在默认情况下,谁创建了文件,谁就拥有对该文件的最高控制权。
2. 用户组(Group, g)
Linux 允许将多个用户归类到一个“组”中。通过给整个组赋予权限,系统管理员可以高效地管理团队协作。例如,开发组的所有成员都可以读取某个项目配置文件,而无需管理员逐一设置。
3. 其他人(Others, o)
除了文件所有者和所属组成员之外,系统中的所有其他用户都属于这一类。这也是安全防御中最关键的一环,通常需要最大限度地限制其权限。
三大核心权限:r、w、x
当我们谈论权限时,实际上是在谈论三种具体的操作能力。
- 读取权限 (Read, r):对于文件,意味着可以查看内容(如
cat指令);对于目录,意味着可以列出其中的文件名(如ls指令)。 - 写入权限 (Write, w):对于文件,意味着可以修改或删除内容;对于目录,意味着可以在其中创建、删除或重命名文件。
- 执行权限 (Execute, x):对于文件,意味着可以将其作为程序或脚本运行;对于目录,意味着可以进入该目录(如
cd指令)。
这里有一个新手经常忽略的细节:如果你只有某个目录的 r 权限而没有 x 权限,虽然你能看到文件名,却无法进入目录,也无法查看文件的大小、权限等详细属性。
如何读懂 ls -l
在终端输入 ls -l 后,你会看到一串看似乱码的字符,例如 -rw-r--r--。这其实是 Linux 权限的缩写代码,我们可以将其拆解为四个部分。
1. 首位字符:文件类型
-:代表普通文件。d:代表目录(Directory)。l:代表软链接(Link)。
2. 随后九位字符:权限三元组
这九个字符每三个一组,分别代表“所有者”、“所属组”和“其他人”的权限。
- 前三位 (rw-):所有者拥有读和写的权限,但没有执行权限。
- 中间三位 (r–):所属组只有读取权限。
- 后三位 (r–):其他人只有读取权限。
八进制权限
除了使用 rwx 这种符号表示法,Linux 还可以通过数字来精准控制权限。这套系统建立在二进制的基础上,非常优雅。
每个权限被赋予了一个分值:
- Read (r) = 4
- Write (w) = 2
- Execute (x) = 1
- 无权限 (-) = 0
通过将这三个数字相加,我们可以得到一个 0 到 7 之间的数字:
- 7 (4+2+1):代表
rwx(全权限) - 6 (4+2+0):代表
rw-(读写) - 5 (4+0+1):代表
r-x(读与执行) - 4 (4+0+0):代表
r--(只读)
常用数值速查表:
| 权限数值 | 符号表示 | 适用场景 |
| — | — | — |
| 755 | rwxr-xr-x | 常用于公共目录或可执行脚本,所有人可读可执行,仅主人可改。 |
| 644 | rw-r--r-- | 常用于普通文本文件,所有人可读,仅主人可改。 |
| 700 | rwx------ | 绝对私密的文件或目录,只有主人能碰。 |
| 777 | rwxrwxrwx | 极其危险!任何人都能随意读写删。 |
chmod 指令
chmod(Change Mode)是 Linux 系统中修改权限的利器。它有两种主要的使用方式。
1. 符号法(更直观)
如果你想给文件所有者增加执行权限,可以使用: chmod u+x script.sh
如果你想移除其他人的写入权限: chmod o-w data.txt
如果你想让所有人都有读取权限: chmod a+r config.ini(这里的 a 代表 all)
2. 数字法(更高效)
这是专业运维人员最常用的方式。如果你想一次性将一个文件夹内的权限设为“主人全开,其他人只读执行”: chmod 755 folder_name
容易被忽视的所有权变更
有时候,仅仅修改权限是不够的。如果你从外部挂载了一块硬盘,或者从其他服务器同步了数据,文件的“所有者”信息可能不正确。这时需要用到 chown 指令。
chown user:group filename
这条指令可以同时修改文件属于哪个用户以及哪个组。记住,只有超级用户(root)才有权力更改文件的所有者,这保证了系统的安全性。
特殊权限位 SUID, SGID 与 Sticky Bit
在标准权限之外,Linux 还有三种特殊的权限,它们解决了特定的安全与协作问题。
- SUID (Set User ID):
出现在所有者的执行位上(表现为 s)。如果一个程序设置了 SUID,那么任何用户在运行该程序时,都会临时获得该程序所有者的权限。最典型的例子是 /usr/bin/passwd,普通用户通过它修改密码时,需要临时获得 root 权限来写入影子文件。
- SGID (Set Group ID):
出现在组权限的执行位上。在目录下设置 SGID 后,任何人在该目录下创建的新文件,都会自动继承该目录的所属组,而不是创建者的所属组。这对于团队共享文件夹非常有用。
- Sticky Bit (粘滞位):
出现在其他人的执行位上(表现为 t)。它通常用于公共目录(如 /tmp)。设置了粘滞位后,即使用户对目录有写权限,也只能删除自己创建的文件,无法删除别人的文件。
在很多技术论坛上,你会看到新手在遇到“Permission Denied”报错时,习惯性地输入 chmod -R 777 /path/to/dir。这在生产环境中是极其危险的行为。
将权限设为 777 意味着你向全世界敞开了大门。任何拥有系统访问权限的人(甚至是利用漏洞潜入的黑客)都可以修改、替换或删除这些文件。如果该目录下包含敏感配置或系统核心组件,整台服务器可能会瞬间瘫痪或沦为肉鸡。
正确的处理逻辑应该是:
- 确认当前用户是谁(
whoami)。 - 确认文件所有权(
ls -l)。 - 按需赋予最小权限。如果只是需要运行脚本,
755足够;如果只是需要读取配置,644足够。
如果你觉得这篇文章对你有帮助,欢迎点赞、转发并关注。
在你的 Linux 学习生涯中,是否也曾因为误操作权限而导致过“惨案”?或者你有哪些关于权限管理的独门秘籍?欢迎在评论区分享你的故事。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:内存泄漏 《一文读懂 Linux 文件权限》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论