1、Linux文件权限 1.1、如何查看到文件权限 使用ls -l
或者ll
指令可以直接查看到如下的标记,这些标记代表的相关文件或文件夹 的权限类型及所属:
其中分四段:
第一段,为文件/文件夹权限,其中首个bit位字符为文件类型,一共有如下的七种:前三种为常见类型
类型
说明
-
普通文件。
d
目录,字母d
是dirtectory
(目录)的缩写。
l
符号链接。请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息。
b
块设备文件。
c
字符设备文件。
p
管道文件
s
套接口文件
像类型为文件,如下面这种:
之后跟随的会有9个bit位,分别代表不同的权限类型,后续再进一步讨论。
第二段,为文件/子目录的链接数量 像上述的文件结果中,1表示有一个硬链接指向文件python.gram,一般来说文件类型均为1。如果为文件夹类型则表示的是链接的子目录个数。
第三段,为权限所属用户 表示拥有当前文件或目录的用户。
第四段,为权限所属群组 表示所属的群组(group)。群组下的每一个使用者都具有该文件\路径的控制权限,一个用户可以拥有一个以上的组,大部分都只属于1个群组。
1.2、ll命令介绍 在Ubuntu中默认不含ll命令,其实质为ls -l的别名,我们可以通过修改环境变量自行添加:
1 2 3 4 # 切换管理员模式 su # 修改系统环境变量 vim ~/.bashrc
添加或将下面这一段去掉注释:
修改完成之后,使环境变量生效:
注: root环境变量和普通用户环境变量不共通,使用ll
指令,不同用户下需单独修改。
2、权限分类 2.1、文件权限 在文件类型字节位后,紧接着的3*3个字符分3组,各**表示不同角色对此文件的读®、写(w)、执行权限(x)**:
第一段:3bit,对应**文件所有者(owner)**的权限
1 2 3 4 - rwx --- --- 对应文件所有者(owner)拥有读写及执行权限,设定值为700,其值等于下面三项值相加 - r-- --- --- 对应文件所有者(owner)拥有读权限,设定值为400 - -w- --- --- 对应文件所有者(owner)拥有写权限,设定值为200 - --x --- --- 对应文件所有者(owner)拥有执行权限,设定值为100
第二段:3bit,对应**文件所属用户群组(group)**的权限
1 2 3 4 - --- rwx --- 对应文件所属群组(owner)拥有读写及执行权限,设定值为070,其值等于下面三项值相加 - --- r-- --- 对应文件所属群组(owner)拥有读权限,设定值为040 - --- -w- --- 对应文件所属群组(owner)拥有写权限,设定值为020 - --- --x --- 对应文件所属群组(owner)拥有执行权限,设定值为010
第三段:3bit,对应**其他用户(others)**的权限
1 2 3 4 - --- --- rwx 对应其他用户(others)对文件拥有读写及执行权限,设定值为007,其值等于下面三项值相加 - --- --- r-- 对应其他用户(others)对文件拥有读写及执行权限,设定值为004 - --- --- -w- 对应其他用户(others)对文件拥有读写及执行权限,设定值为002 - --- --- --x 对应其他用户(others)对文件拥有读写及执行权限,设定值为001
上述权限对应下来则为八进制码表,二进制码的计算顺序为从右往左:
八进制位
权限
权限符号
二进制位
7
读\写\执行
rwx
111
6
读\写
rw-
110
5
读\执行
r-x
101
4
读
r–
100
3
写\执行
-wx
011
2
写
-w-
010
1
执行
–x
001
0
无权限
—
000
举例:
权限符号为rw-,其二进制位为110,则二进制转为八进制为,计算顺序为从右往左:2^0+2^1+2^1=6 ,即r为2号位值为1,w为1号为值为1,-为0号位值为0。
2.2、文件夹权限 文件夹的权限标识与文件相同,但所具有的含义不一样,对应如下:
r
:能够浏览目录信息,包括目录名称及所含文件等信息。无权限时无法查看对应内容
w
:能够删除新增或修改目录中的文件或目录。无权限时限制删除新增等操作
x
:当具有x
权限时,能够进入该目录。无权限时被限制进入
3、权限修改 3.1、修改文件/文件夹权限 1)chmod指令 chmod
修改文件权限:
[选项]为可选,支持以下常用参数:
参数
作用
-c
改变权限成功后再输出成功信息
-R
递归处理所有子文件
-f
改变权限失败后不显示错误信息
-v
显示执行过程详细信息
示例:
1 2 3 4 # 设置文件夹权限为770:文件所有者和用户群组有读\写\执行权限,其他用户无权限 chmod 770 testDir # 设置文件权限为707:文件所有者和其他用户有读\写\执行权限,用户群组无权限 chmod 707 testfile
注: 只有**文件所有者(owner)或管理员(root)**才允许修改文件权限。
2)chmod指令符号 在chmod指令中,可以使用用户表示符和权限控制符号来简化指令,更为的清晰,其对应的不同符号如下:
用户表示符
用户表示符
说明
u
所有者
g
拥有者同组用户
o
其它用户
a
所有用户
权限操作符
权限操作符
含义
+
表示添加权限
-
表示移除权限
=
表示设置权限为特定的值
权限符号
符号
含义
r
读取权限
w
写入权限
x
执行权限
组合使用举例:
1 2 3 4 5 6 7 8 # 给文件file.txt的所有者(u)增加读取(+r)权限 chmod u+r file.txt # 从文件file.txt的拥有者同组用户(g)中移除写入(-w)权限 chmod g-w file.txt # 给目录directory的其他用户(o)增加执行(+x)权限 chmod o+x directory # 给文件file.txt的所有用户(a)设置读取和写入权限 chmod a=rw file.txt
3.2、修改文件/文件夹所属用户 chown
修改文件/文件夹所属的用户:
1 chown [选项] 新所属用户名 文件名/文件夹名
chown
常用的[选项]参数:
常用参数
描述
-R, --recursive
递归地更改指定目录及其子目录中所有文件和目录的所有者。
--reference=RFILE
把指定文件的拥有者和用户组应用到其他文件, RFILE为参考文件。
from=CURRENT_OWNER[:CURRENT_GROUP]
仅在文件的当前所有者或用户组匹配指定的值时才更改文件的所有者和/或用户组。
--preserve-root
不允许在 “/” 上递归操作
-v, --verbose
显示详细的操作信息。
示例:
1 2 # 将file.txt文件所属用户修改为用户miniboy chown miniboy file.txt
注: 所修改的新用户,为存在的用户,否则会执行失败,提示无效用户。
--from=CURRENT_OWNER[:CURRENT_GROUP]
参数使用举例:当匹配到对应的所有者/用户组时才进行修改
1 2 # 当file.txt的当前所有者是olduser,用户组是oldgroup时,才将其所有者更改为newuser,用户组更改为newgroup chown --from=olduser:oldgroup newuser:newgroup file.txt
3.3、修改文件/文件夹所属群组 chgrp
更改文件或文件夹所属用户组(group):
1 chgrp [选项] 用户组名 文件名/文件夹名
在[选项]参数方面与chown
类似,常用参数如下:
参数
描述
-R, --recursive
递归地更改指定目录及其子目录中所有文件和目录 的所属用户组。
--reference=RFILE
把指定文件的用户组应用到其他文件。
--preserve-root
不要跨越文件系统的边界,这对于递归操作非常重要。
-v, --verbose
显示详细的操作信息。
--dereference
在符号链接指向文件本身时,处理符号链接指向的文件而不是符号链接文件本身。
使用示例:
1 2 # 将file.txt文件的所属群组修改为newgroup chgrp newgroup file.txt
chgrp
部分修改也能够通过chown
来实现,如修改拥有者和所属组:
1 2 chown :root file30.txt (修改所属组为root) chown root:root file30.txt (修改拥有者和所属组为root)
注: 只有超级用户(root)或者文件的当前所有者才能使用chgrp
命令。