FreeBSD 脚本 - 与手动执行(tcsh)的结果不同

FreeBSD 脚本 - 与手动执行(tcsh)的结果不同

这个问题之前在https://joomla.stackexchange.com/questions/20697/securing-a-joomla-installation-on-apache-mod-php但它可能更适合这里,因为它不是 Joomla 特有的。

我正在尝试在 tcsh 中执行一个脚本,在命令行上单独运行命令和执行脚本会得到不同的结果。尝试保护 public_html 下的所有目录;然后为某些目录分配更多开放权限(例如缓存、日志等)。

find ./public_html -type f ! -user apache -exec chmod 644 {} \;
find ./public_html -type d ! -user apache -exec chmod 755 {} \;
chmod -R 777 public_html/cache/
chmod -R 777 public_html/administrator/cache/
chmod -R 777 public_html/logs/
chmod -R 777 public_html/tmp/

在上面,我经常发现所有权限都受到限制,但运行脚本后,缓存、日志或 tmp 目录等都无法写入。如果我在命令行上一个接一个地执行所有命令,它会按预期工作。如果您知道我应该查看什么,那就太好了?

谢谢您的任何建议。

答案1

嗯,没有答案——我仍然不确定为什么它不能这样工作,但我现在发现这find ...directory也包括目录本身。所以我现在将 chmod 命令更改为

find public_html/cache/ public_html/administrator/cache/ public_html/logs/  -type f ! -user apache -exec chmod 666{} \;
find public_html/cache/ public_html/administrator/cache/ public_html/logs/ -type d ! -user apache -exec chmod 777{} \;

这对我来说很管用。我意识到在 shell 连续执行期间,一旦遇到脚本无权 chmod 的文件/目录,就会出错。

相关内容