我遇到了多个 WordPress 网站的安全问题,我需要递归地更改文件夹“wp-content”(以及其中的任何内容)的所有权(和权限)。
我需要找到所有指定的文件夹wp-content
(有几个)并更改它们及其所有内容,以便它们的所有者拥有nginx:nginx
文件夹权限 755 和文件权限 644。
我无法找到找到这些文件夹然后更改所有权的方法。
有什么线索吗? :/
答案1
您可以使用 GNUfind
和 GNUxargs
搜索wp-content
目录并将结果以 NUL 结尾传递给 shell 脚本:
find /path/to/directory -type d -name 'wp-content' -print0 | xargs -0 sh -c '
for dir; do
# change user and group recursively to nginx
chown -R nginx:nginx "$dir"
# change dirs to 755
find "$dir" -type d -exec chmod 755 {} +
# change files to 644
find "$dir" -type f -exec chmod 644 {} +
done
' sh
或者,您可以将脚本部分保存在 shell 脚本中myscript.sh
:
#!/bin/sh
for dir; do
# change user and group recursively to nginx
chown -R nginx:nginx "$dir"
# change dirs to 755
find "$dir" -type d -exec chmod 755 {} +
# change files to 644
find "$dir" -type f -exec chmod 644 {} +
done
然后使 shell 脚本可执行
chmod +x myscript.sh
并使用该操作运行find
(不一定是 GNU 实现)-exec
并将结果传递给脚本:
find /path/to/directory -type d -name 'wp-content' -exec ./myscript.sh {} +
答案2
你可以这样做:
LC_ALL=C find . '(' -name wp-content -type d -o \
-path '*/wp-content/*' '(' -type d -o -type f ')' \
')' -exec chown nginx:nginx {} + \
-exec chmod u=rwX,g=rX,o=rX {} +
这样,您只需对目录进行一次爬网,并根据需要运行尽可能少的调用chown
,chmod
并且仅更改目录和常规文件的所有权/权限(不包括符号链接、设备、fifos...)。
通过某些find
实现,您可以简化'(' -type d -o -type f ')'
为-type f,d
.
答案3
也可以使用以下命令来完成。
find some-folder-path -type d -name wp-content -exec chown new-user:new-group {} \;
上述命令将更改名为 wp-content 的所有文件夹的所有权和组。
find some-folder-path -type d -exec chmod 755 {} \;
find some-folder-path -type f -exec chmod 644 {} \;
上述命令会将文件的权限更改为 644,将文件夹的权限更改为 755。