- Linux下文件的权限类型一般可分为
读
、写
、执行
,分别对应字母r
、w
、x
; - Linux下权限的粒度有
拥有者
、(拥有者所属的)用户组
、其他用户
,每个文件都可以针对三个粒度分别设置不同的权限类型;一般情况下,一个文件仅能归属于一个用户和用户组,若其他用户想获得该文件的权限,可将该用户加入具有权限的用户组,一个用户可同时归属于多个用户组。
更改文件权限(chmod命令)
命令格式
chmod <可选项> <权限设定字串> <文件名> |
参数说明
常用的可选项
-R
:以递归的方式对当前目录下的所有文件与子目录进行相同的权限更改
权限设定字串
<ugoa> <+-=> <rwx> |
u
:该文件的拥有者g
:与该文件拥有者同属一个用户组的用户o
:其他用户a
:所有用户+
:授予权限-
:撤销权限=
:唯一设定权限r
:可读取w
:可写入x
:可执行
备注
对于目录来说,
拥有
r
权限可查看该目录下的内容(即可以使用ls
命令)w
权限是最高权限,例如:- 在该目录下新建文件或子目录
- 删除该目录下已有的文件或子目录(无视文件和子目录的权限)
- 对已有的文件或子目录更名
- 移动或复制该目录下的文件/子目录
拥有
x
权限即可进入目录(即可以使用cd
命令)
文件名
支持单个或多个的文件名/目录名
举个栗子
向所有用户授予读取文件A.txt
的权限
chmod ugo+r A.txt |
chmod a+r A.txt |
只向文件B.sh
的拥有者授予读写以及执行的权限
chmod u+rwx B.sh |
只向拥有者以及与拥有者同属一个用户组的用户授予读写文件A.txt
和B.conf
的权限,其他用户可读不可写
chmod a+r,ug+w,o-w A.txt B.conf |
向所有用户授予读写当前路径下所有文件和子目录的权限
chmod -R a+rw * |
文件权限数字表示
用数字4
、2
、1
分别表示文件的读
、写
、执行
权限,不同的权限组合也由其他八进制数字表示,例如:
读写和执行权限(
rwx
)为4+2+1=7
可读写不可执行的权限(
rw-
)为4+2=6
可读可执行不可写的权限(
r-x
)为4+1=5
因为每个文件都可针对三个粒度分别授予不同的权限,所以可用3个八进制数分别表示拥有者
、(拥有者所属的)用户组
、其他用户
的权限。
chmod <ugo> <文件名> |
其中,u
、g
、o
分别为表示拥有者
、(拥有者所属的)用户组
、其他用户
拥有的权限的八进制数。
举个栗子
授予所有人读写和执行文件x.sh
的权限
chmod 777 x.sh |
只向拥有者授予可读写文件C.json
的权限
chmod 600 C.json |
更改文件拥有者(chown命令)
一般只有root
用户拥有该操作权限。
chown <可选项> <user>(<:group>) <文件名> |
可选项
:同chmod
user
:新的文件拥有者:group
:新的文件拥有者所属的用户组
举个栗子
将文件a.txt
和b.json
的拥有者更改为用户组users
的用户nimitiz
chown nimitiz:users a.txt b.json |
将当前目录下的文件和子目录的所有内容的拥有者更改为用户组users
的用户nimitiz
chown -R nimitiz:users * |
也可以只更改拥有者:
chown nimitiz c.conf |
十位权限表示
十位权限的最高位(第一位)表示的是文件类型:
d
:表示的是目录-
:表示的是文件s
:表示的是套接字文件p
:表示的是管道文件或有名管道文件l
:表示的是符号链接文件b
:表示的是面向块的设备文件c
:表示的是面向字符的设备文件
十位权限的第二位到第四位对应的粒度是拥有者
,第五位到第七位对应的粒度是(拥有者所属的)用户组
,第八位到第十位对应的粒度是其他用户
。
举个栗子
-rw------- |
只向拥有者授予读写权限。
-rwxr-xr-x |
向拥有者
授予读写和执行权限,向(拥有者所属的)用户组
和其他用户
只授予读和执行的权限。
参考资料: