是什么意思chmod -R a-x,a=rX,u+w
?
chmod
更改文件权限,-R
使其递归完成,但是什么:
a-x
a=rX
u+w
这里?
答案1
a-x
清除每个人(用户、组、其他)的可执行位。
a=rX
设置每个人的读取位以及目录的可执行位;看posix / chmod 中的大写 X 是什么?了解详情。它清除所有其他位。 (这不能与 组合a-x
,因为X
这里也会为任何设置了可执行位的非目录设置可执行位;首先应用a-x
可确保只有目录才能设置其可执行位。)
u+w
为用户设置写入位。
结果是所有目录最终都具有 755 权限,而其他所有目录都具有 644 权限。这里有一些例子:
步 | 常规文件 | 可执行文件 | 目录 |
---|---|---|---|
a-x |
??-??-??- |
??-??-??- |
??-??-??- |
a=rX |
r--r--r-- |
r--r--r-- |
r-xr-xr-x |
u+w |
rw-r--r-- |
rw-r--r-- |
rwxr-xr-x |
如果我们省略该a-x
步骤,则将设置可执行文件的位之一x
(否则它就不是可执行文件),并且该a=rX
步骤将像处理目录一样处理它。
如果您更喜欢用“读、写、执行”的方式进行推理,那么a=r,u+w,a+X
可能更容易理解:
步 | 常规文件 | 可执行文件 | 目录 |
---|---|---|---|
a=r |
r--r--r-- |
r--r--r-- |
r--r--r-- |
u+w |
rw-r--r-- |
rw-r--r-- |
rw-r--r-- |
a+X |
r--r--r-- |
r--r--r-- |
rwxr-xr-x |
这在至少某些版本的 macOS 上也能更好地工作,这些版本X
只能通过+
操作来识别,而不是=
.
看了解 UNIX 权限和文件类型了解更多背景信息,以及结合 find-chmod 用于目录和 find-chmod 用于常规文件对于其他方法。
答案2
这些是指定权限的象征性方式,因此您不必记住每个权限的值并能够将它们添加在一起。
,
只是一个分隔符,允许您指定多个权限(权限更改),在您的示例中存在三个单独的权限a-x
,a=rX
和u+w
。
每个权限都以它适用于谁的规范开始,可以是你爵士,G团,哦其他(注意不要认为 o 代表所有者)或全部(或者这些的组合,您可以使用 例如ug
为用户和组指定某些内容。然后跟在+
,-
或=
,表示您是否要添加权限、删除权限或精确指定权限。最后是实际权限,即最常见的是r头,w仪式和eXecute(意思是搜索目录),但也有 setuid/setgid 的字符(s)、粘性(t), 和X在手册页中描述为“仅当文件是目录或已具有某些用户的执行权限时才执行/搜索”。
在你的例子中a-x
意味着删除(-
) eX每个人的 ecute 许可(All),并且u+w
意味着添加 (+
)w仪式许可你爵士最后(除了我以与它们被赋予的顺序不同的顺序解释它们=它们如何应用)每个人的权限(All)被设置为读取和执行(在目录上,eX文件上的执行之前已被删除)。
请注意,如果按照我解释的顺序对它们进行评估,那么它们u+w
将毫无意义,因为每个人都遵循的规则 - 但我以与给出的顺序不同的顺序解释它们,最后得到最复杂的(“X”)。