一,常规权限
常规权限指的是文件的针对文件所有者、不同用户组的可读、可写、可执行权限。在命令模式下执行ls -al可以得到:
drwxr-x--- 4 root root 4096 Sep 8 14:06 .gconf
-rw-r--r-- 4 root root 4096 Sep 8 14:06 install.log
首先第一块是由10位字符组成。第一个是表示这个文件是目录,或是文件,或是链接文件等。具体含义如下:
d:目录
-:文件
l:链接文件
b:设备文件中可供存储的借口设备
c:设备文件中串行端口设备
接下来九位字符分为三组,分别表示文件所有者、文件用户组和其他用户做所拥有的权限,以第一行的第一组为例:rwx
第一位r表示读权限,这里表示文件所有者对这个文件拥有读权限,当然根据这个文件的具体属性(即这个文件是目录还是一般的文件),读权限的具体含义不尽相同,但是这里统一指的是读权限;第二位w表示写权限;第三位x表示执行权限,这在不同文件情况下定义还是有区别的。也就是说对于一组字符来说,第一位表示读权限,第二位表示写权限,第三位表示执行权相,相应的位置上如果是对应的字符,则表示拥有此权限,如果为-,则表示不具有此权限。类似以第一组,第二组表示文件所在用户组的用户拥有读和执行的权限,但不具备写权限。第三组同理。
针对不同文件的具体属性,权限的具体含义也是不同的,这点非常重要。具体来说,可以分为目录和文件两大类:
1、文件
r:可读取此文件的实际内容;
w:可以编辑此文件的内容;
x:可以执行该文件;
2、目录
r:表示具有读取目录结构列表的权限;
w:表示具有改动该目录结构列表的权限:包括新建、删除、重命名和移动文件及目录;
x:表示是否可以进入该目录;
二,默认权限
默认权限指的是在新建文件和目录是权限的默认值。由于文件和目录权限的具体含义不同,所以一般来说,默认的权限也是不同的。文件默认是没有x权限的,所以默认权限为:-rw-rw-rw-,而目录一般是具有所有权限的,所以默认权限为:drwxrwxrwx。 那么新建一个文件或者目录就是对应的权限么?当然不是。
这里还要减去一个umask配置的缺省权限,顾名思义就是默认权限中要减去的权限。先看示例吧:在root用户下输入umask指令,得到:0022
首先,这里的第一位数字0表示特殊权限,暂且不谈,后面三位分别表示三组权限的缺省权限。第一个0表示对于文件的所有者来说缺省权限为0,即无缺省权限,也就是具备所有的默认权限,以此类推,文件所在用户组和其他用户组的缺省权限都为w权限,就需要在默认权限中省去此权限。分到具体情况表现为:
新建文件:默认权限为-rw-rw-rw-,umask=0022,实际权限为-rw-r--r--
新建目录:默认权限为drwxrwxrwx,umask=0022,实际权限为dr-xr-xr-x
三,隐藏权限
隐藏权限主要用于系统安全方面。例如你想将一个文件设置为不可删除状态,以免你误删。那这个隐藏权限就起作用了。
首先,可以设置文件特殊权限:
chattr [+-=] [ASacdistu] 文件和目录
+:增加一个特殊参数
-:移除一个特殊参数
=:设定特殊参数集合
具体字母代表的含义为:
A:存取此文件时,访问时间不会被更改;
S:对文件的更改会同步到磁盘中;
a:文件数据只能增加,不能删除也不能修改,只有root才能修改;
c:自动压缩,读取的时候自动解压缩;
d:不会被dump;
i:不能被删除、改名、设定链接、无法写入,只有root才能修改;
s:如果被删除,将被完全移除出这个硬盘;
u:和s相反,如果被删除了,数据其实还在,还可以不就。
其次可以利用lsattr来查询隐藏的属性。