linux系统下文件的默认权限以及隐藏属性的作用

  • 来源:网络
  • 更新日期:2020-09-14

摘要:文件默认权限当我们创建一个文件时,这个文件默认就会被设置默认权限。# touch 1.txt # ls -l 1.txt -rw-r--r-- 1 root root 0 Sep 13 14:48 1.txt # mkdir abc # ll -d ab

文件默认权限

当我们创建一个文件时,这个文件默认就会被设置默认权限。

# touch 1.txt
# ls -l 1.txt 
-rw-r--r-- 1 root root 0 Sep 13 14:48 1.txt

# mkdir abc
# ll -d abc
drwxr-xr-x 2 root root 4096 Sep 13 14:51 abc

可以看到,新创建的文件权限为644,目录权限为755。那么这个644是怎么来的呢?原来系统会给新创建的文件默认权限,这个默认权限可以通过umask来查看。

# umask
0022

# umask -S
u=rwx,g=rx,o=rx

通过umask -S查看的权限即为新创建目录的默认权限,如果新创建的文件类型是文件的话,则需要减去x权限,所以新文件的默认权限是644(rw-r-xr-x)

我们还可以通过umask来修改文件的默认权限

umask 770

文件隐藏属性

不知道大家用过宝塔没,当我们通过宝塔新建一个站点的时候,宝塔默认会在网站的根目录下创建一个.user.ini文件。这个文件很奇怪,即使你是root用户,想要删除它也办不到。会出现下面的提示信息:

# rm -f .user.ini 
rm: cannot remove ‘.user.ini’: Operation not permitted

这里我们要讲下另一个概念,文件的隐藏属性,为什么叫隐藏属性呢?因为你通过ls -l是看不出这个文件有什么不一样的。

# ll .user.ini 
-rw-r--r-- 1 root root 51 Sep  5 18:48 .user.ini

想要看出蹊跷,就需要使用lsattr来查看

# lsattr .user.ini 
----i--------e-- .user.ini

这里,我们需要记住几个字符的含义:

i表示系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

a表示系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

所以,如果我们想要删除这个文件就需要修改它的隐藏属性。通过chattr可以做到。

# chattr -i .user.ini 
# rm -f .user.ini  <===删除成功了