游戏开发工具

Linux读写执行权限(-r、-w、-x)的真正含义是什么?

通过前面的学习,我们知道了给文件设定权限的重要性,也知道了如何给文件设定权限。那么,读(r)、写(w)、执行(x)权限到底指的是什么呢?

首先要告诉大家的是,这些权限的含义并没有表面上那么简单,甚至同一权限对文件和目录的含义也不相同。

rwx 权限对文件的作用

文件,是系统中用来存储数据的,包括普通的文本文件、数据库文件、二进制可执行文件,等等。不同的权限对文件的含义如表 1 所示。

表 1 rwx 权限对文件的作用
rwx 权限对文件的作用
读权限(r)表示可读取此文件中的实际内容,例如,可以对文件执行 cat、more、less、head、tail 等文件查看命令。
写权限(w)表示可以编辑、新增或者修改文件中的内容,例如,可以对文件执行 vim、echo 等修改文件数据的命令。注意,无权限不赋予用户删除文件的权利,除非用户对文件的上级目录拥有写权限才可以。
执行权限(x)表示该文件具有被系统执行的权限。Window系统中查看一个文件是否为可执行文件,是通过扩展名(.exe、.bat 等),但在 Linux 系统中,文件是否能被执行,是通过看此文件是否具有 x 权限来决定的。也就是说,只要文件拥有 x 权限,则此文件就是可执行文件。但是,文件到底能够正确运行,还要看文件中的代码是否正确。

对于文件来说,执行权限是最高权限。给用户或群组设定权限时,是否赋予执行权限需要慎重考虑,否则会对系统安装造成严重影响。

rwx 权限对目录的作用

目录,主要用来记录文件名列表,不同的权限对目录的作用如表 2 所示。

表 2 rwx 权限对目录的作用
rwx 权限对目录的作用
读权限(r)表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录。一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容。
写权限(w)对于目录来说,w 权限是最高权限。对目录拥有 w 权限,表示可以对目录做以下操作:
  • 在此目录中建立新的文件或子目录;

  • 删除已存在的文件和目录(无论子文件或子目录的权限是怎样的);

  • 对已存在的文件或目录做更名操作;

  • 移动此目录下的文件和目录的位置。

一旦对目录拥有 w 权限,就可以在目录下执行 touch、rm、cp、mv 等命令。
执行权限(x)目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。

对目录来说,如果只赋予 r 权限,则此目录是无法使用的。很简单,只有 r 权限的目录,用户只能查看目录结构,根本无法进入目录(需要用 x 权限),更不用说使用了。

因此,对于目录来说,常用来设定目录的权限其实只有 0(---)、5(r-x)、7(rwx)这 3 种。

【例 1】
某目录的权限如下所示:

drwxr--r--.  3  root  root  4096  Jun 25 08:35   .ssh

系统有个账号名称为 vbird,此账户并不包含在 root 群组中,请问 vbird 对这个目录有何权限?是否可切换到此目录中?

答案:vbird 对此目录仅具有 r 的权限,因此 vbird 可以查询此目录下的文件名列表。因为 vbird 不具有 x 的权限,因此 vbird 并不能切换到此目录内。


【例 2】
假设有个账号名称为dmtsai,他的家目录在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。若在此目录下有个名为 the_root.data 的文件,该文件的权限如下:

-rwx------. 1 root  root  4365 Sep 19 23:20  the_root.data

请问 dmtsai 对此文件的权限为何?可否删除此文件?

答案:由于 dmtsai 对此文件来说是其他人的身份,因此这个文件他无法读、无法编辑也无法执行,也就是说,他无法变动这个文件的内容就是了。但是由于这个文件在他的家目录下,他在此目录下具有 rwx 的完整权限,因此对于 the_root.data 这个文件来说,是能够删除的。