在开始今天的话题之前,我们首先来回顾下ls命令。在ls命令中参数“-l”会显示出来目标的详细信息,如下所示:
<code>[root@server02 ~]# ls -l /tmp/</code>
<code>总用量 4</code>
<code>-rwx------. 1 root root 836 5月 27 06:19 ks-script-ogzDFA</code>
<code>drwxr-xr-x. 5 root root 75 5月 30 05:26 test</code>
<code>drwxr-xr-x. 2 root root 6 5月 30 04:15 test1</code>
<code>drwxr-xr-x. 3 root root 17 5月 30 04:16 test2</code>
<code>-rw-------. 1 root root 0 5月 27 06:10 yum.log</code>
<code>[root@server02 ~]#</code>
在前几帖中,我们曾提到过第一列(上图的“-”和“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、样例
<code>[root@server02 test]# ll</code>
<code>总用量 0</code>
<code>-rw-r--r--. 1 root root 0 5月 30 07:03 1.txt</code>
<code>-rw-r--r--. 1 root root 0 5月 30 07:03 2.txt</code>
<code>drwxr-xr-x. 2 root root 6 5月 30 07:04 file1</code>
<code>[root@server02 test]# chmod 777 1.txt</code>
<code>[root@server02 test]# chmod u=rwx,g=rw,o=r 2.txt</code>
<code>[root@server02 test]# chmod g+w file1</code>
<code>-rwxrwxrwx. 1 root root 0 5月 30 07:03 1.txt</code>
<code>-rwxrw-r--. 1 root root 0 5月 30 07:06 2.txt</code>
<code>drwxrwxr-x. 2 root root 6 5月 30 07:04 file1</code>
<code>[root@server02 test]#</code>
注:推荐使用数字的方式赋予权限。
chown
更改文件或目录的所有者或所属组
chown [options] file
<code>-rwxrw-r--. 1 root root 0 5月 30 07:03 2.txt</code>
<code>[root@server02 test]# chown user1 1.txt</code>
<code>[root@server02 test]# chown user2:user2 2.txt</code>
<code>[root@server02 test]# chown :user3 file1</code>
<code>-rwxrwxrwx. 1 user1 root 0 5月 30 07:03 1.txt</code>
<code>-rwxrw-r--. 1 user2 user2 0 5月 30 07:03 2.txt</code>
<code>drwxrwxr-x. 2 root user3 6 5月 30 07:04 file1</code>
注:chgrp命令也可以更改所属组,因为chown也可以更改,不推荐使用
通过chown和chgrp两条命令,我们可以赋予文件或目录权限,也可以更换其所有者和所属组。那么,当一个新的文件和目录被创建的时候,它们的权限是怎么设置的呢?
<code>[root@server02 test]# mkdir directory</code>
<code>[root@server02 test]# touch 1.txt</code>
<code>-rw-r--r--. 1 root root 0 5月 30 07:29 1.txt</code>
<code>drwxr-xr-x. 2 root root 6 5月 30 07:28 directory</code>
可以看到默认生成的目录权限是755,文件权限是644。这样设置的原因是,目录需要执行权限才能cd进入目录下,而文件不需要执行权限,这样更安全些。而完成这个权限设置的功臣就是linux系统内的umask值。
<code>[root@server02 test]# umask</code>
<code>0022</code>
umask值默认为0022。目录采用777(rwxrwxrwx),文件采用666(rw-rw-rw-)的初始值,和umask值通过减权限(不是减法)的方式运算出目录和文件的初始权限。
<code>例1:umask 002 002<-------w-> </code>
<code>当创建一个文件 666<rw-rw-rw-> - 002<-------w-> = 664<rw-rw-r--></code>
<code>当创建一个目录 777<rwxrwxrwx> - 002<-------w-> = 775<rwxrwxr-x></code>
<code>例2: umask 033 033<----wx-wx></code>
<code>当创建一个文件 666<rw-rw-rw-> - 033<----wx-wx> = 644<rw-r--r--></code>
<code>当创建一个目录 777<rwxrwxrwx> - 033<----wx-wx> = 744<rwxr--r--></code>
chattr
改变文件或目录属性
chattr [options] file
-i 不可以增加、追加、删除和更改,重命名任何内容和信息。
-a 只可以追加内容,不可以删除、更改和重命名。
<code>[root@server02 test]# chattr +i 1.txt</code>
<code>[root@server02 test]# chattr +a 2.txt</code>
<code>[root@server02 test]# chattr -i 1.txt</code>
lsattr
查看文件或目录属性
lsattr [options] file
-d 列出目录的属性信息。
-a 列出当前文件或目录下的所有文件(包含隐藏文件)的属性信息。
-R 列出目录下的所有文件和子目录及其下的所有文件的属性信息。
<code>[root@server02 test]# lsattr</code>
<code>---------------- ./directory</code>
<code>----i----------- ./1.txt</code>
<code>-----a---------- ./2.txt</code>
<code>----i----------- ./dir1</code>
<code>[root@server02 test]# lsattr -a</code>
<code>---------------- ./.</code>
<code>---------------- ./..</code>
<code>---------------- ./.3.txt</code>
<code>[root@server02 test]# lsattr -d</code>
<code>---------------- .</code>
<code>[root@server02 test]# lsattr -R directory</code>
<code>-----a---------- directory/test.txt</code>
<code>---------------- directory/dir2</code>
<code>directory/dir2:</code>
<code>-----a---------- directory/dir2/100.txt</code>
<code></code>
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/1933264,如需转载请自行联系原作者