Dar*_*212 89 permissions command-line chmod
当谈到做一个可执行文件之间有什么区别chmod 755和chmod +x我的时候会用哪个呢?到目前为止chmod +x,我只使用过并且我只是阅读了一些东西并且使用了它chmod 755,我不知道使用chmod 755或是否更好chmod +x。
Rav*_*ina 196
为了能够比较它们,我们应该从相同的角度来看待它们,所以:
chmod +x等于chmod ugo+x(基于umask值)chmod 755 等于 chmod u=rwx,go=rx首先你应该知道:
+ 表示将此权限添加到文件已有的其他权限中。= 意味着忽略所有权限,完全按照我提供的设置它们。
读取 = 4,写入 = 2,执行 = 1
这是它背后的二进制逻辑(如果您有兴趣):
Symbolic: r-- -w- --x | 421
Binary: 100 010 001 | -------
Decimal: 4 2 1 | 000 = 0
| 001 = 1
Symbolic: rwx r-x r-x | 010 = 2
Binary: 111 101 101 | 011 = 3
Decimal: 7 5 5 | 100 = 4
/ / / | 101 = 5
Owner ---/ / / | 110 = 6
Group ------/ / | 111 = 7
Others ---------/ | Binary to Octal chart
Run Code Online (Sandbox Code Playgroud)使用+x您是在告诉将 ( +) 可执行位 ( x) 添加到所有者、组和其他人。
ugo+x或u+x,g+x,o+xx它会考虑所有这些。正如@Rinzwind 指出的那样,它基于umask价值,它在umask允许的基础上增加了一点。请记住,如果您指定目标,o+r则umask不再有任何效果。u+x仅向所有者添加可执行位。使用755您指定:
u=rwx(所有者为 4+2+1)g=rx(4+1 组)o=rx(其他人为 4+1)所以chmod 755就像:chmod u=rwx,g=rx,o=rx或chmod u=rwx,go=rx。
小智 9
另一种看待它的方式(我觉得更容易理解)是相对地chmod +x设置权限,而绝对地设置它们。chmod 755
在chmod 755文件上运行后,其权限将为755,或rwxr-xr-x.
chmod +x将仅获取现有权限,并向文件添加执行权限。
不同之处在于设置了哪些权限以及您使用哪种模式来设置它们。
与chmod +x你为所有的可执行位-所有者,所有者组和其他用户。这称为符号模式。引用man chmod:
运算符 + 使选定的文件模式位添加到每个文件的现有文件模式位中;- 导致它们被移除;和 = 导致它们被添加并导致未提及的位被删除,但目录的未提及的设置用户和组 ID 位不受影响。
当chmod 755您使用八进制数时,其二进制表示用于设置特定的权限位。前(左)3 位对应所有者权限,中间3 位对应组权限,最后(最右)对应所有其他用户的权限。位的顺序总是相同的,read,write,execute或者rwx因此,正是因为顺序相同,单个数字在转换为二进制表示时,将设置该数字中对应位置位为 1 的许可位,并取消设置为 0 的一位。 具体来说:
7是二进制的 111,因此您正在为所有者设置所有读取、写入和执行位;rwx设置。5是二进制的 101,因此您设置了读取和执行但禁用写入位,并且由于组和其他用户的值为 5,因此这两个类别将具有相同的权限。如此r-x设置。这是小演示:
bash-4.3$ touch file1 file2
bash-4.3$ chmod +x file1
bash-4.3$ chmod 755 file2
bash-4.3$ ls -l file1 file2
-rwxrwxr-x 1 xieerqi xieerqi 0 7? 6 13:54 file1
-rwxr-xr-x 1 xieerqi xieerqi 0 7? 6 13:54 file2
Run Code Online (Sandbox Code Playgroud)