我需要更改Apache中htdocs
目录的权限为特定组,并具有特定的读/写/执行权限。
目录需要具有775权限,文件需要具有664权限。
如果我对htdocs
进行递归的664更改,则所有文件和目录都将更改为664。
我不想手动更改目录。
是否有一种方法只更改文件或目录?
chmod
命令本身就可以实现这个功能;X
符号权限表示“执行,如果有意义”,通常适用于目录而非文件。因此,您可以使用以下命令:
chmod -R u=rwX,go=rX /path/to/htdocs
唯一的潜在问题是:如果任何一个普通文件已经设置了执行权限,chmod
就会认为这是有意的并保留它。如果这可能成为一个问题 且 你正在使用 GNU 版本的 chmod
(也就是你在 Linux 上),你可以像这样删除任何杂乱的执行权限:
chmod -R a-x,u=rwX,go=rX /path/to/htdocs
chmod
中不起作用(其他版本我不确定)。这是因为 bsd 版本基于“原始(未修改)模式”来应用 X
权限,即在进行 a-x
修改之前它是否有任何执行位(请参见man页面)。请注意保留 HTML 标签。find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
find
方法可以清理掉它们所有,而 u=rwX,go=rX
并没有清理任何东西。 - IncredibleHatfind
命令搜索目录并对其应用chmod命令:find -type d | xargs chmod 775
使用类型f
来表示文件:
find -type f | xargs chmod 775
chmod -R o-rwx directory
”命令可以完全删除其他用户的访问权限,而不考虑他们是否有执行权限。find <path> -type d -exec chmod 775 {} +
或者
find <path> -type d -exec chmod 755 {} +
我使用的解决方案与Gordon提供的类似:
chmod -R ug=rw,o=r,a+X /path/to/folder/
对于文件夹应该始终设置为775,对于文件应该设置为664,即使之前已经为某个文件设置了执行权限。
尝试:
find htdocs -type d -exec chmod 775 {} +
对于目录或文件
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
xargs
最终会失败。更多信息请查看man 手册。 - Jared Scott`chmod -R a-rwx,u+rwX,go+rX`
这将有效地删除用户、组和其他所有权限,然后只添加您需要的权限。 - Axel Wilczekchmod
。但我会在我的答案中加上解释。 - Gordon Davisson