chmod 命令用来修改文件或目录的权限,chmod 英文全称 “change mode”。
在 Linux/Unix 的文件调用权限分为三级:
文件所有者(Owner)
用户组(Group)
其它用户(Other Users)
我们先使用 ll 命令查看一下当前用户目录文件的权限信息,如下:
[hxstrive@localhost ~]$ ll total 4 -rw-rw-r--. 1 hxstrive hxstrive 173 May 26 22:32 demo.txt drwxr-xr-x. 2 hxstrive hxstrive 6 Apr 2 20:51 Desktop drwxr-xr-x. 2 hxstrive hxstrive 6 Apr 2 20:51 Documents drwxr-xr-x. 2 hxstrive hxstrive 6 Apr 2 20:51 Downloads ...
上面 ll 命令输出信息中,drwxr-xr-x 表示权限的权限信息,分为四个部分,每部分含义如下图:
在 Linux 中,文件或目录权限的控制分别以:
读取(Read):使用 r 字符表示,或者使用数字 4 表示,二进制为 100。
写入(Write):使用 w 字符表示,或者使用数字 2 表示,二进制为 010。
执行(Execute):使用 x 字符表示,或者使用数字 1 表示,二进制为 001。
注意:如果不具有任何权限,则使用“-”字符表示,或者使用数字 0 表示。
文件或目录的权限范围可以使用如下字母进行表示:
u(User):表示文件或目录的拥有者。
g(Group):表示文件或目录的所属群组。
o(Other):表示文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a(All):表示全部的用户,包含拥有者,所属群组以及其他用户。
操作符号如下:
+ 添加某个权限,例如:chmod a+r demo.txt 为所有用户在 demo.txt 文件上添加读取权限
- 取消某个权限,例如:chmod o-x demo.txt 为其他用户在 demo.txt 文件上取消执行权限
= 赋予给定权限并取消其他所有权限
chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...] chmod [-cfRv][--help][--version][数字代号][文件或目录...] chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
(1)假设当前目录下面存在 demo.txt 文件,使用 chmod 将该文件权限修改为允许所有用户进行读、写、执行,并且显示更改信息。
[hxstrive@localhost ~]$ chmod -c a+rwx demo.txt mode of 'demo.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx)
上面语句等同于下面语句:
# 权限分开授予,有点麻烦 [hxstrive@localhost ~]$ chmod -c ugo+r,ugo+w,ugo+x demo.txt mode of 'demo.txt' changed from 0666 (rw-rw-rw-) to 0777 (rwxrwxrwx)
或者
[hxstrive@localhost ~]$ chmod -c 777 demo.txt mode of 'demo.txt' changed from 0666 (rw-rw-rw-) to 0777 (rwxrwxrwx)
其中,7 = r(4) + w(2) + x(1),第一个 7 表示文件拥有者权限,第二个7表示文件所属组权限,第三个7表示其他用户权限。
(2)假如当前目录下面存在一个 demo 目录,使用 chmod 中的 -R 选项进行递归修改文件的权限为所有用户可读、可写、可执行,且通过 -v 输出修改权限的信息。
[hxstrive@localhost ~]$ chmod -R -v 777 demo mode of 'demo' changed from 0775 (rwxrwxr-x) to 0777 (rwxrwxrwx) mode of 'demo/demo1.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx) mode of 'demo/demo2.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx) mode of 'demo/demo3.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx) mode of 'demo/bak' changed from 0775 (rwxrwxr-x) to 0777 (rwxrwxrwx) mode of 'demo/bak/bak1.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx) mode of 'demo/bak/bak2.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx)
更多关于命令详细参考手册,请使用 man 命令或者 --help 参数获取帮助信息