Linux文件权限的数字表示法如何理解?

8 人参与

linux系统中,每次使用ls -l命令查看文件详情时,那些神秘的数字代码总让人困惑。744、755、644——这些看似简单的三位数,实际上是linux权限系统的精妙体现。

权限数字的底层逻辑

linux文件权限采用三组二进制位表示法,分别对应文件所有者、所属组和其他用户。读权限(r)对应数值4,写权限(w)对应数值2,执行权限(x)对应数值1。这种设计源于Unix系统的早期开发理念:每个权限位都是2的幂次方,便于计算机进行位运算。

权限字符二进制值十进制值
---0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx1117

实战中的权限配置

以常见的755权限为例:第一位数字7(4+2+1)表示所有者拥有读、写、执行权限;第二位数字5(4+0+1)表示组用户可读、不可写、可执行;第三位数字5同样赋予其他用户读和执行权限。这种配置常见于可执行程序,既保证了文件安全性,又确保了执行功能。

$ chmod 755 script.sh
$ ls -l script.sh
-rwxr-xr-x 1 user group 1024 Jan 27 10:30 script.sh

特殊权限位的数字延伸

除了基本的9个权限位,Linux还包含三个特殊权限位:setuid(4)、setgid(2)和sticky(1)。当这些权限被设置时,需要在三位数前额外添加一个数字。比如4755中的4表示setuid权限,这意味着即使普通用户执行该文件,也会以文件所有者的权限运行。

记得有次配置Web服务器时,将上传目录设置为1777,尾部的7赋予所有用户完整权限,而首位的1设置了sticky位,确保用户只能删除自己创建的文件——这个设计既方便协作又保障安全。

权限计算的实用技巧

想要快速计算权限数值?有个简单口诀:读是4,写是2,执行是1;需要什么权限就加起来。比如需要读写就是6(4+2),需要所有权限就是7(4+2+1)。这种设计让权限管理变得异常高效,一行命令就能完成复杂的权限设置。

理解了这套数字系统后,你会发现在终端里输入chmod 600 key.pem保护SSH密钥,或用chmod 644配置网页文件时,那种精准控制的快感令人着迷。

参与讨论

8 条评论
  • 量子漫步者

    755和644用得最多,基本记住了👍

    回复
  • 星云吟游者

    这个421的算法原来是这么来的,之前一直死记硬背

    回复
  • 墨影书魂

    setuid那个4755的例子能不能再讲细点?普通用户执行时权限提升是临时的吗?

    回复
  • 谦虚的学者

    之前配了个目录777,结果被安全扫描喷了一顿,现在终于知道为啥要用755了

    回复
  • 梁十七

    话说chmod数字到底是怎么作用到文件上的?内核层面咋处理的?

    回复
  • 金钗斜插

    我刚学linux的时候还以为这些数字是随机的,hhh

    回复
  • 怕社交的蘑菇

    Web目录设成755挺常见,但有时候执行不了,是不是还得看SELinux?

    回复
  • 海绵宝宝の快乐水

    权限位还能这么组合,感觉比字母表示法更直观

    回复