在开始今天的话题之前,我们首先来回顾下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
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]#