前言

Linux 系统对于文件的权限有严格的控制,必须具有相对应的权限才可以对某个文件进行操作。

Linux 系统中的权限主要包括读 (r)、写 (w)、执行 (x)。

Linux 系统的权限粒度分为拥有者、群组、其他组三种属组。每个文件都可以针对三个属组设置不同的 rwx 权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,所以一个用户可以同时归属于多个组。

权限的表示

权限可以使用字符表示:-代表无权限,r 代表读权限,w 代表写权限,x 代表执行权限。

也可以使用二进制表示:根据各个位置权限的有无对应二进制数 1 和 0,转化为八进制数就是 r=4,w=2,x=1。

1
2
3
4
r-- = 100 = 4
-w- = 010 = 2
--x = 001 = 1
--- = 000 = 0

实际上,所有的权限都可以使用二进制或八进制数字的形式表达:

1
2
3
4
5
6
7
8
rwx = 111 = 7:读 + 写 + 执行
rw- = 110 = 6:读 + 写
r-x = 101 = 5:读 +执行
r-- = 100 = 4:读
-wx = 011 = 3:写 + 执行
-w- = 010 = 2:写
--x = 001 = 1:执行
--- = 000 = 0:无权限

十位权限表示法

十位权限表示法中的最高位表示文件类型,其余的 9 位表示三个属组的读、写和执行的权限。

文件类型

文件类型主要分为:

  • d:directroy,目录;
  • -:regular file,文件;
  • s:socket,套字文件;
  • p:pipe,管道文件;
  • l:symbolic link,符号链接文件;
  • b:block-oriented device file,面向块的设备文件;
  • c:charcter-oriented device file,面向字符的设备文件;

属组权限

如果使用权限使用字符表示,那么前 3 位为拥有者的权限,中间 3 位为群组的权限,最后 3 位为其他组的权限。如果权限使用数字表示,那么 3 个属组可以使用 3 个八进制数表示各自的权限。以下是常见的权限及对应的 3 位八进制数字:

  • -rw------- (600):只有拥有者有读写权限。
  • -rw-r--r-- (644):只有拥有者有读写权限;而属组用户和其他用户只有读权限。
  • -rwx------ (700):只有拥有者有读、写、执行权限。
  • -rwxr-xr-x (755):拥有者有读、写、执行权限,属组用户和其他用户只有读、执行权限。
  • -rwx--x--x (711):拥有者有读、写、执行权限,属组用户和其他用户只有执行权限。
  • -rw-rw-rw- (666):所有用户都有文件读、写权限。
  • -rwxrwxrwx (777):所有用户都有读、写、执行权限。

参考

  1. Linux 权限详解(chmod、600、644、700、711、755、777、4755、6755、7755)