LINUX文件权限

系统环境: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)。

《LINUX文件权限》


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三者的并集,我们可以通过运算符号来修改文件属性。 《LINUX文件权限》
    例如,我们要把rainbow.html文件的权限属性设置为-rwxr-xr-x,应该这样做:
chmod u=rwx,go=rx rainbow.html

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

chmod a+w,a-x rainbow.html

【To be continue…】

    原文作者:Rethink
    原文地址: https://www.jianshu.com/p/fb8692281711
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞