通过前面的学习,我们知道了给文件设定权限的重要性,也知道了如何给文件设定权限。那么,读(r)、写(w)、执行(x)权限到底指的是什么呢?
首先要告诉大家的是,这些权限的含义并没有表面上那么简单,甚至同一权限对文件和目录的含义也不相同。
文件,是系统中用来存储数据的,包括普通的文本文件、数据库文件、二进制可执行文件,等等。不同的权限对文件的含义如表 1 所示。
rwx 权限 | 对文件的作用 |
---|---|
读权限(r) | 表示可读取此文件中的实际内容,例如,可以对文件执行 cat、more、less、head、tail 等文件查看命令。 |
写权限(w) | 表示可以编辑、新增或者修改文件中的内容,例如,可以对文件执行 vim、echo 等修改文件数据的命令。注意,无权限不赋予用户删除文件的权利,除非用户对文件的上级目录拥有写权限才可以。 |
执行权限(x) | 表示该文件具有被系统执行的权限。Window系统中查看一个文件是否为可执行文件,是通过扩展名(.exe、.bat 等),但在 Linux 系统中,文件是否能被执行,是通过看此文件是否具有 x 权限来决定的。也就是说,只要文件拥有 x 权限,则此文件就是可执行文件。但是,文件到底能够正确运行,还要看文件中的代码是否正确。 |
对于文件来说,执行权限是最高权限。给用户或群组设定权限时,是否赋予执行权限需要慎重考虑,否则会对系统安装造成严重影响。
目录,主要用来记录文件名列表,不同的权限对目录的作用如表 2 所示。
rwx 权限 | 对目录的作用 |
---|---|
读权限(r) | 表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录。一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容。 |
写权限(w) | 对于目录来说,w 权限是最高权限。对目录拥有 w 权限,表示可以对目录做以下操作:
|
执行权限(x) | 目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。 |
对目录来说,如果只赋予 r 权限,则此目录是无法使用的。很简单,只有 r 权限的目录,用户只能查看目录结构,根本无法进入目录(需要用 x 权限),更不用说使用了。
因此,对于目录来说,常用来设定目录的权限其实只有 0(---)、5(r-x)、7(rwx)这 3 种。
【例 1】某目录的权限如下所示:
系统有个账号名称为 vbird,此账户并不包含在 root 群组中,请问 vbird 对这个目录有何权限?是否可切换到此目录中?
【例 2】假设有个账号名称为dmtsai,他的家目录在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。若在此目录下有个名为 the_root.data 的文件,该文件的权限如下:
请问 dmtsai 对此文件的权限为何?可否删除此文件?