查看文件权限
- 命令:
ls -l,可以查看当前目录所有文件的相关信息,包括文件权限。
- 该命令的输出如图(某C++项目目录),共有9列,下面讲解每一列的信息。
共3个文件,其中CMakeLists.txt为文件,include和src为文件夹
- 第一列:文件类型和文件权限,共10个字符,每个字符都表示其含义。例如,
-rw-rw-r--
- 第1个字符:表示文件类型。
-文件普通,d文件夹,l软链接(类似于快捷方式),c设备文件等
- 第2-4个字符:表示该文件所有者的权限,分别为
r可读、w可写、x可执行。如果没有该权限,用-表示。
- 第5-7个字符:表示该文件所有组的权限,该组的所有成员都拥有指定权限。
- 第8-10个字符:表示其他用户权限。
- 对于目录:
- 可读权限
r:列出该目录下的所有文件
- 可写权限
w:能在该目录下,创建、删除、重命名文件
- 可执行权限
x:进入目录
- 举例说明:
CMakeLists.txt文件
-表示该文件类型为普通文件
rw-表示该文件所有者root,可读、可写、不可执行
rw-表示该文件所有组,即root用户组,可读、可写、不可执行
r--表示对于其他用户,该文件只读
- 第二列:对于文件,表示硬链接个数;对于目录,表示子文件个数
- 第三列:表示该文件的所有者,例如
root
- 第四列:表示该文件的所有组,例如
root用户组。注意,文件的所有者并不一定要在所有组中
- 第五列:表示文件大小,单位为字节
- 第6-8列:表示修改时间
- 第九列:表示文件名
文件默认权限
- 文件默认权限,表示文件被创建或下载时拥有的权限
- 对于普通文件,默认权限为:
-rw-r--r--,即所有者可读可写、不可执行,所有组成员和其他用户只读
- 对于目录,默认权限为:
drwxr-xr-x,即所有者可读可写可执行,所有组和其他用户可读可执行
文件权限的数字表示法
- 在权限表示中,一般采用二进制的1表示有对应权限、0表示无对应权限。这是表示权限的常用方法,不只是Linux文件权限
- 在Linux文件权限中,用二进制的
100表示可读r,二进制的010表示可写w,二进制的001表示可执行x。即4表示可读,2表示可写,1表示可执行。将这些权限中的一部分进行按位或运算,就可以表示一个文件是否拥有对应权限,表格如下
| 权限 |
说明 |
二进制数字 |
对应十进制数 |
| --- |
不可读、不可写、不可执行 |
000 |
0 |
| --x |
只可执行 |
001 |
1 |
| -w- |
只可写 |
010 |
2 |
| -wx |
可写可执行 |
011 |
3 |
| r-- |
只读 |
100 |
4 |
| r-x |
可读写执行 |
101 |
5 |
| rw- |
可读可写 |
110 |
6 |
| rwx |
可读可写可执行 |
111 |
7 |
修改文件权限
- 命令:
chmod,文件权限可以采用rwx表示,也可以采用数字表示法
- 文件权限可以采用
rwx表示
u所有者权限、g所有组权限、o其他用户权限、a以上所有
+增加权限、-删除权限、=权限赋值
- 举例,以
CMakeLists.txt文件为例:
chmod u+x CMakeLists.txt:给该文件的所有者添加可执行权限
chmod g=rw CMakeLists.txt:修改所有组组成员的权限为可读可写,不可执行
chmod o-r CMakeLists.txt:删除该文件其他用户的可读权限
chmod a=rwx CMakeLists.txt:将该文件的所有者、所有组、其他用户权限均改为可读可写可执行,即-rwxrwxrwx
- 文件权限采用数字表示
- 用一个十进制数表示权限,三个十进制数分别表示所有者权限、所有组权限、其他用户权限
- 举例:
chmod 777 CMakeLists.txt:对所有用户开放该文件的所有权限。类似于chmod a=rwx CMakeLists.txt
chmod 764 CMakeLists.txt:对文件所有者开放可读可写可执行,文件所有组成员开放可读可写、不可执行,其他用户只读。类似于:chmod u=rwx CMakeLists.txt; chmod g=rw CMakeLists.txt; chmod o=r CMakeLists.txt
chmod 755 CMakeLists.txt:对文件所有者开放可读可写可执行,文件所有组和其他用户开放可读可执行、不可写。类似于:chmod CMakeLists.txt a=rx; chmod CMakeLists.txt u+w
- 递归修改该目录下所有子文件:
-R
修改文件从属
- 修改文件的所有者:
chown
- 语法结构:
chown 用户名 文件路径或chown 用户名:用户组 文件路径,修改该文件的所有者或同时修改所有者所有组
- 递归修改目录的所有子文件:
-R
- 举例:
chown www-data CMakeLists.txt:将该文件的所有者改为www-data
chown -R git:root src:将src目录的所有者改为git用户,所有组改为root用户组,同时递归修改其所有子文件
- 修改文件的所有组:
chgrp
- 语法结构:
chgrp 用户组 文件路径,修改该文件的所有组
- 递归修改目录的所有子文件:
-R