前面讲解ls命令时,我们已经知道长格式显示的第一列就是文件权限的描述,例如:
[root@localhost ~ ] # ls -l install.log -rw-r--r--. 1 root root 24772 1月 14 18:17 install.log第一列的权限位如果不计算最后的“.”(最后的.是在Red Hat 6 的版本才开始出现的。表示这个文件是受SELinux保护的。对权限的设置没有影响。),则共有10位,这10位权限位的含义如图下图所示。
Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。
虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用info ls命令查看。在这里只讲一些常见的文件类型。
-:普通文件。d:目录文件。Linux中一切皆文件,所以目录也是文件的一种。l:软链接文件。b:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。c:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。p:管道符文件。这是一种非常少见的特殊设备文件。s:套接字文件。这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。提示:前三种文件个是最为常见。其他格式文件没事不要碰。
如果有字母,则代表拥有对应的权限;如果是“”,则代表没有对应的权限。
同样拥有“rwx”权限。
同样拥有“rwx”权限。
所有者,所属组,其他用户权限的优先级 (1)如果所有者(UID)匹配,用户权限适用 (2)否则,如果所属组(GID)匹配,组权限适用 (3)如果都不匹配,其它权限适用
匹配优先级:所有者>所属组>其他用户
首先,读、写、执行权限对文件和目录的作用是不同的。
读(r): 对文件有读(r)权限,代表可以读取文件中的数据。 如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令。
写(w): 对文件有写(w)权限,代表可以修改文件中的数据。 如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。 注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
说明: 我们之前说过分区,在root目录下有一个abc文件,abc文件会有自己的i节点,i节点里边存放的是i节点号,时间,权限,位置,与之对应的block块中存放着数据。而abc文件的文件名是存放在他上级目录的block块中的。上级目录的block块中存放着abc文件的文件名和对应的i节点号。
我对abc文件有写的权限,这个权限是控制abc文件的block块的。所以说对文件中数据有写的权限。而abc文件的文件名是放在上级目录的block块中的,所以也要有上级目录写的权限,才能有对目录的block块中的数据有操作权限,因为abc文件名是root目录的数据,要拥有root目录写的权限,最终才能删除abc文件。
如下图:
执行(x): 对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。 在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。 这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。 对文件来说,执行(x)权限是最高权限。
目录的可用权限其实只有以下几个:
0:任何权限都不赋予。5:基本的目录浏览和进入权限。7:完全权限。因为给目录只赋予读的权限是没有意义的,也就是4。因为你要现有执行权限才能进入到目录里,才有查看目录的操作,也就是4+1。
注意:自己做实验的时候不要用root用户,用普通用户进行操作。