在Linux中,经常使用类似777,775这样的数字来表示权限,下面以我所理解的来记录说明。
1. 用户类型
- Linux将用户分成了所有者(owner)、组成员(group)、其他(ohter)、超级用户(root)。
- 其中root用户可以无视权限读写执行所有的文件。
2. 权限解读
- 当我们使用ls命令列出文件信息的时候,会出现以下内容:drwxrwxrwx
-
将该内容分割为:d rwx rwx rwx(用ABCD表示)
- A:用来指示该项是文件或者是文件夹的类型:
- 如果是文件夹,则用【d】表示。
- 如果是文件,则用【-】表示。
- 如果是连接,则用【l】表示。
- B:表示文件/文件夹对所有者的权限。
- C:表示文件/文件夹对所有者所在的组成员的权限。
- D:表示文件/文件夹对于其他用户的权限。
- A:用来指示该项是文件或者是文件夹的类型:
-
rwx说明
- r:表示具有读(read)的权限。
- w:表示具有写(write)的权限。
- x:表示具有执行(execute)的权限。
- 如果是没有权限,则用【-】表示,如drwxr-xr-x,表示文件所有者对该文件具有读写执行的权限,组成员以及其他用户只有都跟执行的权限。
3. 权限跟数字的关系
-
通过权限解读我们搞清楚了权限跟字符的关系。
-
现在我们通过以下表格进行说明777、775所表示的权限。
所有者 组成员 其他用户 权限 rwx wrx rwx 二进制 111 111 111 十进制 7 7 7 所有者 组成员 其他用户 权限 rwx w-x r-x 二进制 111 101 101 十进制 7 5 5 -
文件或者文件夹的权限可以被拥有写权限的用户以及root用户修改,修改权限需要使用chmod命令进行修改
4. 权限修改
- 命令格式1:chmod [ugoa] [-cfvR] [±=][rwxX] [文件路径]
- 格式1说明:
- [ugoa]:表示对应的用户类型,u表示该文件的拥有者,g表示组成员,o表示其他用户,a代表所有的用户。
- [-cfvR]:表示参数项:
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f:若该文件权限无法被更改也不要显示错误讯息
- -v:显示权限变更的详细资料
- -R:对目录下的所有文件与子目录进行相同的权限变更
- [+-=]:+表示增加对应权限,-表示去除对应的权限,=表示修改为相应的权限
- [wrxX]:表示对应的权限,X表示特殊权限,即:只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
- 示例1:
#将file.txt设置为所有人都可以读,修改完成之后不用显示内容,即[-cfvR]参数项可不填写
chmod ugo+r file.txt
#也可以使用以下的命令,即用a来代表所有的用户
chmod a+r file.txt
#设置file.txt文件为其他用户不可写入,即去除其他用户的写入权限
chmod o-w file.txt
#设置/disk文件夹下所有的文件以及子目录为所有人可读
chmod -R a+r /disk
- 命令格式2:chmod [ABC] [文件路径]
- 格式2说明:ABC的内容为数字
- A:表示文件拥有者的权限
- B:表示组成员拥有的权限
- C:表示其他用户拥有的权限
- 示例2:
#设置file.py的权限为:拥有者(A)读写执行权限(rwx=111=7),组成员(B)拥有读执行权限(w-x=101=5),其他成员(C)拥有执行权限(--x=001=1)
chmod 751 file.py
#设置file.py的权限为:所有用户(ABC)都拥有读写执行权限(rwx=111=7)
chmod 777 file.py
#设置/disk文件夹下所有的文件以及子目录的权限为:拥有者(A)读写执行权限(rwx=111=7),组成员(B)拥有读执行权限(w-x=101=5),其他成员(C)拥有执行权限(--x=001=1)
chmod -R 751 /disk