我们的服务器用的是一种 Linux 类型的操作系统,理解这种类型的操作系统的文件与目录的权限,会对以后使用这种操作系统非常有帮助,以后你遇到的很多问题可能都跟权限有关。
在 Linux 操作系统里运行的程序都会选择使用某个用户,比如你安装了一个 Web 服务器,这个服务器就可能会在系统里创建一个它需要的用户,服务器在运行的时候会就会使用这个用户。这个用户的权限就决定了这个 Web 服务器是否可以处理某个目录或者文件。比如它要在一个目录里创建日志文件,然后往这个日志文件里写入日志信息,这就要求这个运行 Web 服务器的用户,要对这个存储日志文件的目录拥有可以写入的权限。
在系统里除了 root 用户不受任何限制以外,其它用户的权限是由系统里的目录与文件本身来决定的。也就是一个目录或者文件可以自己决定哪一些用户可以如何处理它们,可以分别设置它们的拥有者(owner),用户组(group),还有其它人(other)这三种人的权限。
可以设置的权限有三种,读取(r),写入(w)还有 执行(x),每个权限都由一个字母表示。另外减号(-)在权限中表示无权,字母 d 表示目录。
在 Linux 类型的操作系统里,目录与文件的权限会用 10 个字符来表示,第一个字符用来表示是不是目录,如果是目录它的值就会是 d ,如果是文件,第一个字符就会是减号。剩下的 9 个字符分成三组,每组 3 个字符,用来表示目录与文件的拥有者,用户组,还有其它人的读取,写入还有执行的权限,有这个权限就用表示权限的字母,没有这个权限就用减号表示。
用 ls 命令,配合 -la 选项列出目录与文件的时候会显示权限信息,还包含它们的拥有者还有用户组是什么。比如一个表示权限的信息是这样的: -rw-r--r-- ,通过这个权限信息我们可以判断这个东西是个文件,它的拥有者可以读取与写入这个文件,用户组可以读取这个文件,其它人也可以读取这个文件。
这个权限信息的第一个字符是减号,所以说明这是一个文件,如果是目录的话,第一个字符应该是字母 d 。假设这个文件的拥有者是 wanghao,这个用户对这个文件拥有 读取(r) 与 写入(w) 这两个权限,没有 执行(x) 权限,因为是用减号(-)表示的执行权限。
表示用户组权限的三个字符里面只有一个 r,这就表示用户组对这个文件只有 读取(r) 权限,不能写入也不能执行。最后的三个字符表示其它人对这个文件的权限,这里也只有一个字母 r,所以其它人对这个文件也只有读取的权限,没有 写入(w) 与 执行(x)权限。
除了用字母 r,w 还有 x 表示读取,写入还有执行权限以外,我们还可以通过三个数字表示它们,r=4,w=2,x=1。这样如果用三位数字表示这个文件的权限的话,应该是 644,因为文件的拥有者有 r(4) 与 w(2)这两个权限,相加的结果就是 6(4 + 2 + 0 = 6),这个数字表示的就是这个文件的拥有者的权限。表示用户组权限的三个字符里面只有一个 r(4),所以可以用数字 4 表示用户组的权限。表示其它人权限的三个字符里面也只有一个字母 r (4),所以可以使用数字 4 来表示其它人对这个文件的权限。