在不公开 SSH 访问(糟糕的情况,fwiw)的共享主机上保护 Drupal 或 WordPress 安装时,lftp 似乎是批量设置目录和文件权限的正确方法。find 命令吹嘘你可以重定向它的输出,所以应该能够运行 find,grep exclude 以仅匹配以“/”结尾的行,表示目录,然后将此类匹配的权限设置为 755 并执行相反的操作文件匹配并设置为 644,然后微调特定文件,例如 settings.php 等。
lftp prompt> find . | grep "/$" | xargs chmod -v 755
不起作用,我确定我未能以正确的顺序和格式链接这些命令。
如何让它工作?
更新: “不工作”我的意思是上面的命令没有输出到控制台,也没有输出到 lftp 错误日志。它没有在本地运行这些命令,fwiw。我将减少命令作为演示:
find . | grep "/$"
将获取“find”的输出并根据字符串匹配的性质返回匹配项,此处为目录:
./daily/
./ffmpeg-installer/
./hourly/
./includes/
./includes/database/
./includes/database/mysql/
./and_so_forth_on_down
这很酷,因为我希望执行 chmod(以及 lftp 的内部命令,支持因 ftp 服务器而异)所以我像这样扩展命令:
find . | grep "/$" | xargs echo
哪个输出——什么都没有。也没有错误输出。从 grep 到 xargs 的管道没有发生。
我的目标是形成相当于:
chmod 755 ./daily/
chmod 755 ./ffmpeg-installer/
在 lftp 中,chmod 命令正在执行 ftp-server-permissions 更改,而不是本地 perms 更改。