Назад | Перейти на главную страницу

Сценарий 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/

В приведенном выше описании довольно часто я обнаруживаю, что все разрешения ограничены, но, например, каталоги cache, log или tmp недоступны для записи после запуска скрипта. Если я выполняю все команды одну за другой в командной строке, все работает как положено. Было бы здорово, если бы у вас была идея, на что я должен смотреть вместо этого?

Спасибо за любое предложение.

Хм, нет ответов - я все еще не уверен, почему это не работает, но теперь я обнаружил, что 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{} \;

Это подходит для меня. Я обнаружил, что во время выполнения оболочки подряд она выдает ошибку, когда встречает файл / каталог, в котором скрипт не имеет прав на chmod.