Linux文件与目录管理(10)
默认权限
我们通过前几篇文章的演示可以发现,创建的目录默认权限是755(rwxr-xr-x),创建的文件的默认权限是644(rw-r--r--)。为什么呢?这就和Linux控制默认权限的内容相关了,这就是umask。
umask(了解即可):
[root@studyclub attribute]# umask
0022
在Linux中,创建文件的默认最大权限为666(rw-rw-rw-),即默认不给与可执行(x)权限。如果我们默认不想给予666的权限,那么我们可以通过umask来调整。权限666减去umask值就是最终的权限。我们来看:
# 设置umask,使默认权限为文件所有者可读可写不可执行,用户组只有写的权限,其他用户只有写的权限
# 根据上面的要求,我们得出文件的权限应该是rw所以需要666-umask=622--w--w-,换成数字表示法,应该是622。
# 所以需要666-umask=622,umask=044
# 我们看一下实际效果
[root@studyclub attribute]# umask 044
[root@studyclub attribute]# touch msk
[root@studyclub attribute]# ll msk
-rw--w--w- 1 root root 0 May 14 13:32 msk
下面我们看一种特殊情况,设置umask为011,这个时候默认的权限应该是655,那是不是创建的文件默认就有x权限了呢?
[root@studyclub attribute]# umask 011
[root@studyclub attribute]# touch file011
[root@studyclub attribute]# ll file011
-rw-rw-rw- 1 root root 0 May 14 13:41 file011
额,为什么看上去umask没起作用呢?我们记住一个原则,如果umask每个数都是偶数,则666-umask就是最终的默认权限,如果umask是奇数,需要这样计算:666-umask,计算后的结果,把奇数加1后就是最终的默认权限。上面的权限666-011=655,奇数有两个5,分别加1以后就是666,符合最终的结果。
实战练习:请设置umask为奇数,自行练习、验证上面的结论。
隐藏权限
文件除了上面提到的9个权限位以外,为了进一步提高安全性,还设置了隐藏属性。
chattr:(设置文件的隐藏属性)
我们先看命令格式:
[root@studyclub ~]# chattr [+-=][ASacdistu] 文件或目录名称
选项与参数:
+ :添加某一个特殊参数,原来存在参数不变。
- :移除某一个特殊参数,原来存在参数不变。
= :配置一定,且仅有后面接的参数
两个常用的参数:
a:当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root
才能配置这个属性。
i:这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连也无法
写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性
不常用参数(请学有余力的同学自行练习):
A:当配置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime
将不会被修改,可避免I/O较慢的机器过度的存取磁碟。这对速度较慢的计算机有帮助
S:一般文件是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上 S 这个
属性时,当你进行任何文件的修改,该更动会『同步』写入磁碟中。
c:这个属性配置之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,
但是在储存的时候,将会先进行压缩后再储存(看来对於大文件似乎蛮有用的!)
d:当 dump 程序被运行的时候,配置 d 属性将可使该文件(或目录)不会被 dump 备份
s:当文件配置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘
空间,所以如果误删了,完全无法救回来了喔!
u:与 s 相反的,当使用 u 来配置文件时,如果该文件被删除了,则数据内容其实还
存在磁碟中,可以使用来救援该文件喔!
我们看一下i这个参数:
[root@studyclub attribute]# touch testfile2# 创建一个测试文件
[root@studyclub attribute]# chattr +i testfile2# 给这个文件加上隐藏属性i
[root@studyclub attribute]# ll testfile2# 查看属性,隐藏属性看不出来
-rw-r--r-- 1 root root 0 May 15 18:37 testfile2
[root@studyclub attribute]# rm testfile2 # 删除文件
rm: remove regular empty file ‘testfile2’? y# 确认删除
rm: cannot remove ‘testfile2’: Operation not permitted# 提示没有权限删除
# 现在文件无法删除了,我们把这个加上的隐藏权限去掉吧
[root@studyclub attribute]# chattr -i testfile2 # 去掉隐藏权限i
[root@studyclub attribute]# rm testfile2 # 现在尝试删除,就可以成功删除文件
rm: remove regular empty file ‘testfile2’? y
再来看一个常用的a参数:
[root@studyclub attribute]# echo "welcome to studyclub" > testfile2 # 创建一个新文件并写入内容
[root@studyclub attribute]# chattr +a testfile2 # 给文件新加一个隐藏属性a
# 验证a属性的作用
[root@studyclub attribute]# echo "2 welcome to studyclub" > testfile2
-bash: testfile2: Operation not permitted# 不允许写入
[root@studyclub attribute]# echo "2 welcome to studyclub" >> testfile2# 只能追加
[root@studyclub attribute]# rm -f testfile2
rm: cannot remove ‘testfile2’: Operation not permitted# 文件也无法删除
lsattr(查看隐藏属性):
上面我们给文件添加隐藏权限的时候发现ls -l命令无法查看到这个添加属性。lsattr就是用来查看文件隐藏属性的命令。
[root@studyclub attribute]# lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏文件的属性也列出来,和ls命令里的-a选项的作用是一样的;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件,这个和ls命令里的-d选项的作用是一样的;
-R :连同子目录里的文件也一并列出来, 这个和ls命令里的-R选项的作用是一样的
实例展示:
[root@studyclub attribute]# lsattr testfile2
-----a---------- testfile2
[root@studyclub attribute]# chattr +i testfile2
[root@studyclub attribute]# lsattr testfile2
----ia---------- testfile2
008 - Linux文件与目录管理(5)
009 - Linux文件与目录管理(6)
010 - Linux文件与目录管理(7)
011 - Linux文件与目录管理(8)
012 - Linux文件与目录管理(9)
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·