У меня есть выделенный сервер под управлением Ubuntu 10.04 с 10 пользователями. Несколько недель назад я настраивал Apache с псевдонимом для каждого пользователя, у каждого был www / внутри своего / home /, и я указал субдомен для каждого www /
Alias /foo /home/foo/www/
<Directory /home/foo/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Он хорошо работает с обычным веб-сайтом, но когда я хочу использовать shell_exec с PHP, у меня возникают проблемы с правами. Apache не имеет достаточных прав для записи в папку. Я попытался добавить группу www-data в www / &, чтобы предоставить моим пользователям права на www-data, но это не работает ...
Вот результат команды ls -a
drwxr-xr-x 8 foo www-data 4096 2012-07-24 08:44 www/
Есть ключ к тому, чтобы это исправить?
Вы захотите использовать userdir вместо этого в Apache.
Он позволяет Apache получить доступ к определенному каталогу в домашнем каталоге ваших пользователей - по умолчанию
/home/foo/public_html
http://www.techytalk.info/enable-userdir-apache-module-ubuntu-debian-based-linux-distributions/ есть довольно хорошее руководство о том, как это настроить.
С вашей текущей схемой разрешений на www-папке, www-data
-group получила только права на чтение и выполнение в каталоге. Дайте ему права на запись с помощью следующей команды:
chmod 0775 www
Если каталог содержит больше каталогов, и вам необходимо применить новые разрешения рекурсивно, вы можете выполнить следующие команды:
find www -type d -exec chmod 0775 '{}' \;
find www -type f -exec chmod 0664 '{}' \;