系统环境: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
文件为例:
- 第一组为文件拥有者的权限(u),文件拥有者Rethink的权限为
rw-
,即读写权限; - 第二组为与文件拥有者同组的用户权限(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
- 第三组为其他非本用户组的权限(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
命令用来改变文件的属性,设置方法支持使用数字或者是符号。
- 使用数字类型改变文件权限
文件的可读、可写和可执行权限可以用数字表示,即:
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
- 使用符号类型改变文件权限
下图中,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...】