[CentOS 7系列]文件或目录的权限与属性

在开始今天的话题之前,我们首先来回顾下ls命令。在ls命令中参数“-l”会显示出来目标的详细信息,如下所示:

[root@server02~]#ls-l/tmp/
总用量4
-rwx------.1rootroot8365月2706:19ks-script-ogzDFA
drwxr-xr-x.5rootroot755月3005:26test
drwxr-xr-x.2rootroot65月3004:15test1
drwxr-xr-x.3rootroot175月3004:16test2
-rw-------.1rootroot05月2706:10yum.log
[root@server02~]#

在前几帖中,我们曾提到过第一列(上图的“-”和“d”等)标记的是对象的文件类型。而后面还有10位,最后一位“.”表示开启了selinux,当关闭后,这个标识位将会消失。而中间的“rwxr-xr-x”等9位字符标记的是对象的权限。

这9位字符中,前三位描述的是所有者(如上图某行的第一个root,表示所有者是root用户)的权限,中间三位描述的是所属组(如上图某行的第二个root,表示所属组是root组)的权限,最后三位则描述的是除所有者和所属组外其他人的权限。其中“r”表示可读,“w”表示可写,“x”表示可执行,而“-”则表示的是没有该项权限。

在使用时,我们把“r”规定值为4,“w”为2,“x”为1,以及“-”为0,如rwx=7、r-x=5等。这样也就方便我们描述对象的权限。


chmod

1、命令作用

赋予文件或目录权限

2、命令格式

chmod [options] file

3、参数

-R对目前目录下的所有文件和子目录进行相同的权限变更。

4、样例

[root@server02test]#ll
总用量0
-rw-r--r--.1rootroot05月3007:031.txt
-rw-r--r--.1rootroot05月3007:032.txt
drwxr-xr-x.2rootroot65月3007:04file1
[root@server02test]#chmod7771.txt
[root@server02test]#chmodu=rwx,g=rw,o=r2.txt
[root@server02test]#chmodg+wfile1
[root@server02test]#ll
总用量0
-rwxrwxrwx.1rootroot05月3007:031.txt
-rwxrw-r--.1rootroot05月3007:062.txt
drwxrwxr-x.2rootroot65月3007:04file1
[root@server02test]#

注:推荐使用数字的方式赋予权限。


chown

1、命令作用

更改文件或目录的所有者或所属组

2、命令格式

chown[options] file

3、参数

-R对目前目录下的所有文件和子目录进行相同的权限变更。

4、样例

[root@server02test]#ll
总用量0
-rwxrwxrwx.1rootroot05月3007:031.txt
-rwxrw-r--.1rootroot05月3007:032.txt
drwxrwxr-x.2rootroot65月3007:04file1
[root@server02test]#chownuser11.txt
[root@server02test]#chownuser2:user22.txt
[root@server02test]#chown:user3file1
[root@server02test]#ll
总用量0
-rwxrwxrwx.1user1root05月3007:031.txt
-rwxrw-r--.1user2user205月3007:032.txt
drwxrwxr-x.2rootuser365月3007:04file1
[root@server02test]#

注:chgrp命令也可以更改所属组,因为chown也可以更改,不推荐使用


通过chown和chgrp两条命令,我们可以赋予文件或目录权限,也可以更换其所有者和所属组。那么,当一个新的文件和目录被创建的时候,它们的权限是怎么设置的呢?

[root@server02test]#mkdirdirectory
[root@server02test]#touch1.txt
[root@server02test]#ll
总用量0
-rw-r--r--.1rootroot05月3007:291.txt
drwxr-xr-x.2rootroot65月3007:28directory
[root@server02test]#

可以看到默认生成的目录权限是755,文件权限是644。这样设置的原因是,目录需要执行权限才能cd进入目录下,而文件不需要执行权限,这样更安全些。而完成这个权限设置的功臣就是linux系统内的umask值。

[root@server02test]#umask
0022
[root@server02test]#

umask值默认为0022。目录采用777(rwxrwxrwx),文件采用666(rw-rw-rw-)的初始值,和umask值通过减权限(不是减法)的方式运算出目录和文件的初始权限。

例1:umask002002<-------w->
当创建一个文件666<rw-rw-rw->-002<-------w->=664<rw-rw-r-->
当创建一个目录777<rwxrwxrwx>-002<-------w->=775<rwxrwxr-x>
例2:umask033033<----wx-wx>
当创建一个文件666<rw-rw-rw->-033<----wx-wx>=644<rw-r--r-->
当创建一个目录777<rwxrwxrwx>-033<----wx-wx>=744<rwxr--r-->


chattr

改变文件或目录属性

chattr[options] file

-i不可以增加、追加、删除和更改,重命名任何内容和信息。

-a只可以追加内容,不可以删除、更改和重命名。

4、样例

[root@server02test]#chattr+i1.txt
[root@server02test]#chattr+a2.txt
[root@server02test]#chattr-i1.txt


lsattr

查看文件或目录属性

lsattr[options] file

-d列出目录的属性信息。

-a列出当前文件或目录下的所有文件(包含隐藏文件)的属性信息。

-R列出目录下的所有文件和子目录及其下的所有文件的属性信息。

4、样例

[root@server02test]#lsattr
----------------./directory
----i-----------./1.txt
-----a----------./2.txt
----i-----------./dir1
[root@server02test]#lsattr-a
----------------./.
----------------./..
----------------./directory
----i-----------./1.txt
-----a----------./2.txt
----i-----------./dir1
----------------./.3.txt
[root@server02test]#lsattr-d
----------------.
[root@server02test]#lsattr-Rdirectory
-----a----------directory/test.txt
----------------directory/dir2

directory/dir2:
-----a----------directory/dir2/100.txt

[root@server02test]#

相关文章

linux下开机自启: 在/etc/init.d目录下新建文件elasticsear...
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以...
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用...
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一...
设置时区(CentOS 7) 先执行命令timedatectl status|grep &...
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 B...