LINUX文件权限

作者: Rethink | 来源:发表于2018-10-01 21:16 被阅读9次

    系统环境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux

    文件属性

    Linux文件的基本属性共有9个,分别对应u|g|o组别的r|w|x属性,如下例所示:

    # ll rainbow.html 
    -rw-r--r--   1      Rethink Rethink   207988     Aug 11 13:35   rainbow.html
    [文件属性]   [连接数] [属主]  [属组]    [文件大小]  [修改日期]      [文件名]
    

    文件属性的第一位表示此文件的类型,常见的类型如下:

    [d]  表示为目录
    [-]  表示为文件
    [l]  表示为link file 链接文件
    [b]  表示为设备文件中可供存储的接口设备
    [c]  表示为设备文件中的串行接口设备,如鼠标、键盘等
    

    接下来的属性中,将三个划分一组,共三组,每组均为[rwx-]参数的组合,其中[r]表示可读(read),[w]表示可写(write),[x]表示可执行(excute)。


    rainbow.html文件为例:
    1. 第一组为文件拥有者的权限(u),文件拥有者Rethink的权限为rw-,即读写权限;
    2. 第二组为与文件拥有者同组的用户权限(g),同组用户只有读权限,查看某个用户的属组可以使用以下方法:
    # id dockerroot
    uid=997(dockerroot) gid=994(dockerroot) groups=994(dockerroot)
    
    # cat /etc/passwd | grep dockerroot
    dockerroot:x:997:994:Docker User:/var/lib/docker:/sbin/nologin
    
    1. 第三组为其他非本用户组的权限(o);

    更改文件权限

    更改文件属组:chgrp

    改变文件所属用户组很简单,直接使用chgrp命令即可,chgrp是"change group"的缩写,要注意,修改后的用户组名称必须在/etc/group文件中存在,不然就会显示错误。

    # ll rainbow.html 
    -rw-rw-r-- 1 Rethink Rethink 21 Oct  1 11:47 rainbow.html
    # chgrp test1 rainbow.html 
    
    '文件属组已被改变'
    # ll rainbow.html 
    -rw-rw-r-- 1 Rethink test1 21 Oct  1 11:47 rainbow.html
    

    注意:如果是递归更改目录的属组,则需要加上-R参数,即将子目录下所有的文件和目录的属组都更新为此用户组。

    chgrp -R rain/
    

    更改文件属主:chown

    和上一个命令相对应,chown是"change owner"的缩写。要注意,修改后的用户必须是已在/etc/passwd中存在,不然就会显示错误。接上一个例子:

    # chown test1 rainbow.html 
    '文件属主已由Rethink变为test1'
    # ll rainbow.html 
    -rw-rw-r-- 1 test1 test1 21 Oct  1 11:47 rainbow.html
    

    注意:如果是递归更改目录的属主,则需要加上-R参数,即将子目录下所有的文件和目录的属主都更新为此用户。

    一般来说,chgrp命令用来修改属组,chown命令用来修改属主。但其实用chown一个命令就够了,它的完整命令格式为:

    chown/chgrp  参数 属主:属组  文件或目录名
    

    用冒号连接新的属组和属主,二者之一可以为空,但是冒号不能省略,比如:

     # ll rainbow.html 
    -rw-rw-r-- 1 test1 test1 21 Oct  1 11:47 rainbow.html
    '同时修改属组和属主'
    # chown test12:test12 rainbow.html
    # ll rainbow.html 
    -rw-rw-r-- 1 test12 test12 21 Oct  1 11:47 rainbow.html
    
    '只修改属组,注意冒号不能省略'
    # chown :dockerroot rainbow.html 
    # ll rainbow.html 
    -rw-rw-r-- 1 test12 dockerroot 21 Oct  1 11:47 rainbow.html
    

    补充:chown命令支持的参数有:

      -c或--changes  效果类似"-v"参数,但仅回报更改的部分。 
     -f或--quite或--silent  不显示错误信息。 
     -h或--no-dereference  之对符号连接的文件作修改,而不更动其他任何相关文件。 
     -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
     -v或--version  显示指令执行过程。 
     --dereference  效果和"-h"参数相同。 
     --help  在线帮助。 
     --reference=<参考文件或目录>  把指定文件或目录的拥有者与所属群组全部设成和参考文件或目 录的拥有者与所属群组相同。 
     --version  显示版本信息。
    

    更改文件属性:chmod

    使用chmod命令用来改变文件的属性,设置方法支持使用数字或者是符号。

    1. 使用数字类型改变文件权限
      文件的可读、可写和可执行权限可以用数字表示,即:
    r:4
    w:2
    x:1
    

    将同属组的3个文件属性代表的数字相加,如当文件属性为[-rwxrw-r--],则可以表示为:

    u(owner)=r+w+x=4+2+1=7
    g(group)=r+w=4+2=6
    o(other)=r=4
    

    当设置的属性更改时,该文件属性对应的数字就是764,命令格式为:

    chmod [-R] 764 filename
    
    1. 使用符号类型改变文件权限
      下图中,a 表示all ,即u|g|o三者的并集,我们可以通过运算符号来修改文件属性。
      例如,我们要把rainbow.html文件的权限属性设置为-rwxr-xr-x,应该这样做:
    chmod u=rwx,go=rx rainbow.html
    

    如果想增加rainbow.html文件的写入权限,去除原有的执行权限,应该这样做:

    chmod a+w,a-x rainbow.html
    

    【To be continue...】

    相关文章

      网友评论

        本文标题:LINUX文件权限

        本文链接:https://www.haomeiwen.com/subject/trfnoftx.html