天天看点

文件或目录的权限与属性

   在开始今天的话题之前,我们首先来回顾下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&lt;-------w-&gt;  </code>

<code>当创建一个文件   666&lt;rw-rw-rw-&gt; - 002&lt;-------w-&gt; = 664&lt;rw-rw-r--&gt;</code>

<code>当创建一个目录   777&lt;rwxrwxrwx&gt; - 002&lt;-------w-&gt; = 775&lt;rwxrwxr-x&gt;</code>

<code>例2: umask 033   033&lt;----wx-wx&gt;</code>

<code>当创建一个文件   666&lt;rw-rw-rw-&gt; - 033&lt;----wx-wx&gt; = 644&lt;rw-r--r--&gt;</code>

<code>当创建一个目录   777&lt;rwxrwxrwx&gt; - 033&lt;----wx-wx&gt; = 744&lt;rwxr--r--&gt;</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,如需转载请自行联系原作者

继续阅读