chmod - 更改文件模式
要更改文件或目录的模式(权限), CHMOD 命令被使用。 请注意,只有文件的所有者或超级用户才能更改文件或目录的模式。 CHMOD 支持两种不同的指定模式更改的方式:八进制数表示或符号表示。 我们将首先介绍八进制数表示。
八进制到底是什么?
八进制(基数为 8)及其表亲十六进制(基数为 16)是常用于在计算机上表示数字的数字系统。 我们人类,由于我们(或至少我们中的大多数人)生来就有十个手指,因此使用以 10 为基数的数字系统进行计数。 另一方面,计算机出生时只有一根手指,因此所有的计数都以二进制(以 2 为底)进行。 他们的数字系统只有两个数字,0 和 1。所以在二进制中,计数看起来像这样:
0、1、10、11、100、101、110、111、1000、1001、1010、1011...
在八进制中,计数是用数字 0 到 1 完成的,例如:2、3、4、5、6、7、10、11、12、13、14、15、16、17、20、21、XNUMX、 XNUMX...
十六进制计数使用数字零到九加上字母“A”到“F”:
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10、11、12、13...
虽然我们可以看到二进制的意义(因为计算机只有一根手指),但八进制和十六进制有什么用? 答案与人类的便利性有关。 很多时候,一小部分数据在计算机上表示为 位模式. 以RGB颜色为例。 在大多数计算机显示器上,每个像素由三种颜色成分组成:24 位红色、XNUMX 位绿色和 XNUMX 位蓝色。 一个可爱的中蓝色将是一个 XNUMX 位数字:
010000110110111111001101
你想如何整天读写这些数字? 我不这么认为。 这是另一个数字系统可以提供帮助的地方。 十六进制数中的每个数字代表二进制中的四位数字。 在八进制中,每个数字代表三个二进制数字。 所以我们的 24 位中蓝色可以压缩成一个六位十六进制数:
436FCD
由于十六进制数中的数字与二进制数中的位“对齐”,我们可以看到颜色的红色分量是 43、绿色 6F 和蓝色 CD。
如今,十六进制表示法(通常称为“hex”)比八进制更常见,但我们很快就会看到,八进制表示二进制的三位的能力将非常有用……
使用八进制表示法,我们使用八进制数来设置所需权限的模式。 由于八进制数中的每个数字代表三个二进制数字,这很好地映射到
用于存储文件模式的方案。 下表显示了我们的意思:
表 9-4:二进制和八进制文件模式
八进制 | 二进制 | 文件模式 |
0 | 000 | --- |
1 | 001 | - X |
2 | 010 | -W- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | RX |
6 | 110 | RW |
7 | 111 | RWX |
通过使用三个八进制数字,我们可以设置所有者、组所有者和
世界:
[我@linuxbox ~]$ > foo.txt
[我@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 我我 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt
[我@linuxbox ~]$ ls -l foo.txt
-rw------- 1 我我 0 2016-03-06 14:52 foo.txt
[我@linuxbox ~]$ > foo.txt
[我@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 我我 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt
[我@linuxbox ~]$ ls -l foo.txt
-rw------- 1 我我 0 2016-03-06 14:52 foo.txt
通过传递参数“600”,我们能够设置所有者的读写权限,同时删除组所有者和世界的所有权限。 尽管记住八进制到二进制的映射可能看起来不方便,但您通常只需要使用一些常用的: 7 (RWX)6(RW)5(RX)4(r--)和0(---).
chmod 还支持用于指定文件模式的符号表示法。 符号表示法分为三个部分:更改将影响谁,将执行哪些操作,以及将设置什么权限。 为了指定谁受到影响,使用字符“u”、“g”、“o”和“a”的组合如下:
表 9-5:chmod 符号表示法
符号含义
符号含义
u “user”的缩写,表示文件或目录的所有者。
g 组所有者。
o “others”的缩写,意思是世界。
“所有”的缩写。 “u”、“g”和“o”的组合。
如果未指定字符,则将假定为“all”。 操作可以是“+”表示添加权限,“-”表示删除权限,或者“=”表示只应用指定的权限,其他所有权限将被删除。
权限由“r”、“w”和“x”字符指定。 下面是一些符号表示法的例子:
表 9-6:chmod 符号表示法示例
符号 含义
符号 含义
u+x 为所有者添加执行权限。
ux 删除所有者的执行权限。
+x 为所有者、组和世界添加执行权限。
相当于 一个+x.
o-rw 删除所有者和组所有者以外的任何人的读写权限。
go=rw 设置组所有者和除所有者之外的任何人都具有读写权限。 如果组所有者或世界之前具有执行权限,则它们将被删除。
u+x,go=rx 为owner添加执行权限,设置组和其他人的读取和执行权限。 多个规格可以用逗号分隔。
有些人喜欢使用八进制表示法,有些人真的很喜欢符号。 符号表示法的优点是允许您设置单个属性而不会干扰任何其他属性。
看看 CHMOD 手册页了解更多详细信息和选项列表。 关于“--recursive”选项的注意事项:它同时作用于文件和目录,因此它不像人们希望的那样有用,因为我们很少希望文件和目录具有相同的权限。