一. 文件权限的基本概念
Linux 是多用户、多任务操作系统,为了区分不同用户对文件的操作权限,引入了用户身份和权限类型的概念
- 用户身份分类:
- 所有者(Owner):创建文件 / 目录的用户,对文件拥有最高控制权。
- 所属组(Group):文件所属的用户组,组内用户共享部分权限。
- 其他人(Others):既不是所有者也不在所属组的其他用户。
- 权限类型:
- 读取(r):允许查看文件内容(对目录而言,允许列出目录内的文件)。
- 写入(w):允许修改文件内容(对目录而言,允许创建、删除、重命名目录内文件)。
- 执行(x):允许运行可执行文件(对目录而言,允许进入该目录)。
二. 权限的表示方式
2.1 符号表示法
通过 r(读取)、w(写入)、x(执行)和 -(无权限)组成。一共有10个字符,第一个代表文件类型。从第二个符号开始 ,每组三个字符,一共有三组,分别代表所有者、所属组、其他人的权限。
举例:-rwxr-xr--
- 文件类型:-(
-
表示普通文件,d
表示目录,l
表示软链接)。 - 所有者(2-4):rwx(可读、可写、可执行)
- 所属组(5-7):r-x (可读、不写、可执行)
- 其他人(8-10):r-- (只读,不写、不执行)
2.2 符号表示法的特殊权限
特殊权限:用 s、t 代替对应权限位中的x
- Set UID(SUID,4000)
- 仅对可执行文件有效,当用户执行设置了 SUID 的文件时,会临时获得该文件所有者的权限(而非执行者自身的权限)。
- 执行结束后,权限自动恢复为用户原有权限。
- s 代替第4位的 x
- Set GID(SGID,2000)
- 对可执行文件:执行文件时,临时获得文件所属组的权限(类似 SUID,但针对组)。
- 对目录:在该目录下新建的文件或子目录,会自动继承目录的所属组(而非创建者的默认组),确保组内权限一致性。
- s 代替第7位的 x
- Sticky Bit(粘滞位,1000)
- 目录内的文件只能被其所有者或 root 删除,其他用户即使对目录有w权限,也不能删除他人文件。
- t 代替第10位的 x
2.3 数字表示法
用数字代表权限,每个权限对应一个数值,求和表示组合权限。r = 4 , w = 2 , x = 1 , - = 0 ,从第二位开始,每三个数相加:
举例:-rwxr-xr-- ,权限则是754(4+2+1=7,4+0+1=5,4+0+0=4)
2.4 数字表示法的特殊权限
Linux权限的数字表示法中一共有4个数字,第一位表示特殊权限,后三位表示基础权限。通过2.2可知 SUID是4000 ,SGID是2000,Sticky Bit是1000。
举例:
- 4755 = 4000 + 755 : -rwsr-xr-x ,第4位的x改为s
- 2770 = 2000 + 770 : -rwxrws--- ,第7位的x改为s
- 1777 = 1000 + 777 : -rwxrwxrwt ,第10位的x改为t