在开始今天的话题之前,我们首先来回顾下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值通过减权限(不是减法)的方式运算出目录和文件的初始权限。
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]#