Я использую centos 5.7 с cPanel WHM под управлением fastcgi / suEXEC
Я пытаюсь сделать определенную папку доступной для записи, чтобы сценарий мог загружать файлы, но, похоже, возникают проблемы.
Папка (и все рекурсивные папки), которую я хочу сделать доступной для записи:
/home/mydomain/public_html/uploads
И я хочу, чтобы только скрипты, запущенные пользователем songbanc, могли писать в этот каталог.
Я пробовал следующее:
chown -R songbanc /home/mydomain/public_html/uploads
chmod -R 755 /home/mydomain/public_html/uploads
Но это все равно не работает.
Скрипт будет загружать файлы только в том случае, если я вручную установлю разрешения через FTP-клиент на 777.
Я предполагаю, что неправильно понимаю, как установить разрешения для пользователей с помощью fastcgi, и, надеюсь, кто-то может мне помочь.
заранее спасибо
РЕДАКТИРОВАТЬ: Запуск getfacl в одном из скриптов или папок дает следующее:
# file: home/mydomain/public_html/ripples/1.jpg
# owner: songbanc
# group: songbanc
Значит, хозяин прав? Я совсем запуталась!
РЕДАКТИРОВАТЬ 2:
Сюжет сгущается ... lsattr и chattr возвращают Несоответствующий ioctl для устройства При чтении флагов на ...
Прежде всего, suEXEC
это модуль Apache 1.x. По разным причинам и по вопросам поддержки обновление до Apache 2.x с suPHP
это правильный путь. Смотрите мой предыдущий пост Вот о том, как обновить.
Могло произойти несколько вещей, которые я кратко коснусь, однако обновление до suPHP, скорее всего, решит эту проблему. Важно отметить, что изменение PHP 5 Handler
быть suPHP
здесь важная часть.
Причины:
Ты не бежишь suEXEC
и на самом деле скрипты не выполняются под именем пользователя. Вы можете выполнить top -u username -d 1
где имя пользователя - это имя пользователя учетной записи. Вы должны заметить, что файлы php появляются на этом экране каждый раз, когда они запускаются.
У родительской папки нет правильных разрешений. Если вы используете более старую версию Apache, и я подозреваю, что это так, поскольку вы упомянули suEXEC
вы можете уйти с этим. Если бы вы использовали suPHP, это не было бы проблемой, так как он ее поймает. Поэтому убедитесь, что родительские папки имеют правильные разрешения.
Вы не используете PHP. suPHP или suEXEC предназначены только для сценариев PHP. Если вы используете что-то еще, они могут или не могут запускаться под этим пользователем, в зависимости от того, как у вас установлен Apache. По большей части должны, но кто знает!
Вывод: обновитесь до Apache 2.x с помощью suPHP, и вы будете защищены. Просто убедитесь, что вы изменили обработчик PHP на suPHP, как описано в опубликованной мной ссылке.