Arc*_*ing 24 permissions chmod posix
我知道什么是ugoa(所有者、组、其他人、全部)或rwx(读取/正确/执行)或 4,2,1 或-, f, d, l,我试图读入man chmod以了解什么是大写X,chmod但没有一个条目。然后我在 posix/chmod 中阅读了这篇文章,但被困在了这段话中:
仅当目标 a) 是目录 b) 已经为用户、组或其他人中的任何一个设置了至少一个可执行位时才设置可执行位。
我还在这篇文章中读到了这个代码示例:
chmod -R u=rwX,g=rX,o=rX testdir/
Run Code Online (Sandbox Code Playgroud)
我知道testdir/对所有者 (u)、组 (g) 和其他人 (o)有递归许可,但我承认我仍然错过了大写 X 的意图。
也许这里的教学措辞可以对此有所了解(我在这里发布的主要原因是因为我没有找到关于此的 SE 会议)。
更新
对不起,我错过了那个男人。我没想到 X 会出现在参数列表之前,我认为搜索返回的是 x 而不是 X,我的错。
Ste*_*itt 28
手册页说:
仅当文件是目录或已对某些用户具有执行权限时才执行/搜索 (
X)
POSIX说:
的烫发符号X应代表执行/查询的文件模式位的部分,如果该文件是一个目录,或者如果当前的(未修饰的)文件模式位具有执行位中的至少一个(S_IXUSR,S_IXGRP,或S_IXOTH)集。如果文件不是目录并且在当前文件模式位中没有设置任何执行位,则应忽略它。
这是一个有条件的权限标志:chmod查看它当前正在处理的任何内容,如果它是一个目录,或者它是否在其当前权限(所有者、组或其他)中设置了任何执行位,它的行为就好像请求的权限是x,否则它会忽略它。在chmod应用特定X指令时验证条件,因此您可以在同一运行中清除执行位,a-x,a=rwX只设置目录上的可执行位。
您可以通过查看stat输出的“访问”部分或ls -l. 执行位由 表示x。-rwxr-xr-x对可执行文件通用,表示为所有者、组和其他用户设置了可执行位;-rw-r--r--对于其他文件很常见,表示未设置可执行位(但为每个人设置了读取位,为所有者设置了写入位)。请参阅了解 UNIX 权限及其属性,其中包含更多详细信息。
因此,在您的示例中,u=rwX将所有者权限设置为在所有情况下都可以读写,对于目录和可执行文件,请执行;同样对于组 ( g=rX) 和其他 ( o=rX),读取和执行目录和可执行文件。
这个操作符的目的是允许用户给出chmod各种文件和目录,并获得正确的执行权限(假设没有一个文件设置了无效的执行位)。它避免了必须区分文件和目录(如在传统find . -type f -exec chmod 644 {} +和find . -type d -exec chmod 755 {} +命令中),并尝试以合理的方式处理可执行文件。
(请注意,MacOS的chmod显然只支持X针对+操作)。
ImH*_*ere 11
来自man chmod:
字母 rwxXst 为受影响的用户选择文件模式位:读取(r)、写入(w)、执行(或搜索目录)(x)、 仅当文件是目录或已经对某些文件具有执行权限时才执行/搜索用户 (X),在执行 (s) 时设置用户或组 ID,限制删除标志或粘滞位 (t)。
(强调我的)。
然而,这并没有很清楚地说明它。这篇文章有两个规则来阐明它的作用:
例如,我们对目录发出以下 chmod 命令:
# chmod -R u=rwX,g=rX,o=rX testdir/`
Run Code Online (Sandbox Code Playgroud)
使用大写的 X,上面的命令根据以下两条规则设置可执行属性:
如果文件是一个目录,那么它为所有者、组和世界设置可执行属性,这意味着他们可以进入这个目录。
如果文件是一个普通文件,那么它会在它的权限中添加可执行属性,如果文件已经设置了一些执行位。如果文件没有设置执行位,则不会添加任何执行位。
使用小写的 x 不可能只用一个命令就达到这个结果。
希望澄清使用的X。
| 归档时间: |
|
| 查看次数: |
11347 次 |
| 最近记录: |