Linux入门真经-022文件的隐藏属性与默认权限
除了我们上一节介绍的基本权限之外,Linux文件还具备一些隐藏属性。当你觉得当前文件的权限没有问题但是文件访问依然异常的时候,就可以来查一下这个文件的隐藏属性。隐藏属性对系统安全提供了一定程度的保障,今天给大家介绍如何修改和查看文件的隐藏属性。
1、chattr:设置隐藏属性
[[email protected]localhost ~]# chattr [+-=][ASacdistu] 文件或目录名称
选项与参数:
+ :增加某一个特殊参数,其他原本存在参数则不动。
- :移除某一个特殊参数,其他原本存在参数则不动。
= :设置一定,且仅有后面接的参数
A :存取此文件(或目录)时,他的存取时间atime 将不会被修改。
a :文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性
c :自动的将此文件“压缩”。在读取的时候将会自动解压缩,在储存的时候,将会先进行压缩后再储存
d :当dump 备份时忽略本文件/目录
i :文件不能被删除、改名、设置链接也无法写入或新增数据!(root也不能),如果设置此属性的是目录,只能修改目录内文件的内容,而不能增删文件。只有root才能设置此属性S:文件内容变更之后,立即同步到硬盘
s :删除时用0填充该文件,无法恢复
u :如果该文件被删除时,其数据内容其实还存在磁盘中,方便日后恢复
对于ext系列的文佳系统,支持上述所有选项,xfs文件系统则只支持AadiS。(什么是文件系统我们以后会专门讨论)
2、lsattr:显示隐藏属性
[[email protected] ~]# lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R :连同子目录的数据也一并列出来
举例:创建文件并设置i属性,发现root用户也无法删除该文件:
[[email protected] ~]# touch testattr
[[email protected] ~]# chattr +i testattr
[[email protected] ~]# lsattr testattr
----i----------- testattr
[[email protected] ~]# rm testattr
rm: remove regular empty file ‘testattr’? y
rm: cannot remove ‘testattr’: Operation not permitted
[[email protected] ~]#
3、文件的默认权限
当我们创建一个文件的时候,文件是会有一个默认权限的,那么文件的默认权限是什么呢?
这取决于用户的遮罩码(umask)。
使用umask命令可以查看当前的遮罩码
[[email protected] ~]# umask
0022
这是一串八进制数,有些朋友可能会一头雾水,用户权限如果用八进制表示应该是三位呀,问什么此处只有四位数字呢。
其实,umask的正确使用姿势是这样的:
第一位数字是介绍特殊权限的,是下一节的内容,我们先不看。这样一来就只剩下三位,此处是022,但是这不是用户权限的最终结果
对于非目录文件,用666去减去umask,此处我们得到的是644,也就是默认文件权限是rw-r--r--。此处要注意的是,如果减去的结果中有奇数(执行权限),则该位加1.比如,如果umask后三位是023,666-023=643,第三位出现了执行权限,则这位数字加1,最终权限任然是644。
对于目录文件,使用777去减,如末三位为022的umask,默认的目录权限是754
默认root用户的umask是0022,普通用户是0002
可以通过umask 数字来更改当前用户的umask(一般提供后三位即可)
[[email protected] ~]# umask 023
[[email protected] ~]# umask
0023
我们之前说过umask第一位是描述特殊权限的,那么linux文件的特殊权限有哪些呢,下一节给大家介绍