前言
Linux系统中的文件和目录权限系统的基本权限通常由三组三位数字或字母表示,分别对应文件所有者、所属组和其他用户的读(r)、写(w)和执行(x)权限。但除此之外,还有三个特殊的权限位:SUID、SGID和Sticky Bit(SBIT)。
在Unix和Linux系统中,chmod命令用于更改文件或目录的权限。
本文介绍使用四位数字(八进制)来设置权限,它们所代表的意义。
一、特殊权限位(二进制的第一位):
这一位通常用于设置文件的特殊权限,包括:
4:设置用户ID(setuid):当执行文件时,程序以文件所有者的身份运行。
2:设置组ID(setgid):对于目录,新创建的文件将继承该目录的组,而不是创建者的主组。对于文件,这一位通常被忽略。
1:粘滞位(sticky bit):仅对目录有效。当一个目录被设置为粘滞位后,只有文件的所有者或超级用户(root)才能删除或重命名该目录下的文件。这通常用于防止用户删除其他用户在该目录下的文件(例如/tmp目录)。
如果不设置任何特殊权限,这一位通常为0。
二、文件所有者权限(二进制的第二位到第四位):
这是一个三位二进制数(转换为八进制表示,即为一位数)。每一位分别代表读(r)、写(w)和执行(x)权限。
例如,7(二进制111)表示所有者有读、写和执行权限;5(二进制101)表示所有者有读和执行权限,但没有写权限。
三、文件所属组权限(二进制的第五位到第七位):
同样是一个三位二进制数,转换为八进制表示。每一位分别代表读、写和执行权限。
例如,6(二进制110)表示组有读和写权限,但没有执行权限。
四、其他用户权限(二进制的第八位到第十位):
仍然是一个三位二进制数,转换为八进制表示。每一位分别代表读、写和执行权限。
例如,4(二进制100)表示其他用户只有读权限。
举例
权限4755表示:
4:设置用户ID(setuid)。
7(二进制111):文件所有者有读、写和执行权限。
5(二进制101):文件所属组有读和执行权限,但没有写权限。
5(同上):其他用户也有读和执行权限,但没有写权限。
总结
四位数字中,
第一位是特殊权限位,用于设置setuid、setgid和sticky bit。
第二位(二进制的第二位到第四位)表示文件所有者的权限。
第三位(二进制的第五位到第七位)表示文件所属组的权限。
第四位(二进制的第八位到第十位)表示其他用户的权限。