Я знаю, что права доступа к файлам были рассмотрены здесь ранее, но я изо всех сил пытаюсь разобраться в концепции моего сценария.
- Я создал файлы на старой установке Ubuntu.
- Я скопировал файлы в мою новую установку Ubuntu и поместил их в мой webroot.
- Когда я пытаюсь запустить файлы (это PHP-файлы), я получаю сообщение об ошибке, касающееся разрешений
пытаясь это исправить, я предположил, что они все еще должны принадлежать предыдущему владельцу, поэтому я запустил chown -R
каталог с моим именем пользователя в качестве аргумента, чтобы взять на себя ответственность за все файлы в каталоге. Следует отметить, что имена пользователей между новой и старой установками Ubuntu были одинаковыми.
Когда я пытаюсь запустить файлы снова, та же проблема: ошибка 500 из-за проблем с разрешениями. Кто-нибудь может сказать мне, какие еще шаги я должен предпринять?
Webroot для моей установки apache находится внутри моей домашней папки. Если я создаю новые файлы в моем webroot, они также работают как положено, это только старые файлы, которые вызывают проблему.
источник
chmod -R 777 dir
соответствующий каталог. Я не могу не думать, что есть лучший способ сделать этоОтветы:
В каталогах над вашим webroot должен быть установлен бит выполнения, чтобы позволить Apache спускаться в каталоги.
Если ваш Webroot находится в
/home/user/htdocs
, то/
,/home
,/home/user
и/home/user/htdocs
должны иметь выполнить набор битов.Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не сможет написать в нее. Происходит и обратное.
Это можно «исправить», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), чтобы вновь созданные файлы и папки были доступны для записи группе.
Кроме того, вы можете установить альтернативный Apache MPM: Apache2 MPM ITK ( информация о настройке ) и настроить его так, чтобы Apache работал под вашим пользователем.
источник
Если документы вашего сервера находятся в
/home/$USER/public_html
каталоге, вам нужно запуститьпередать право собственности на папку DocumentRoot пользователю
www-data
и группеwww-data
.Затем вы можете добавить себя в группу
www-data
Наконец, вам нужно сделать папку DocumentRoot доступной для записи владельцем (пользователем www-data) и самим собой (как часть
www-data
группы):Для удобства вы можете сделать скрипт с именем
public_html_fix.sh
content:Сохраните его внутри
/home/$USER/bin
и сделайте его исполняемым, используя:Затем вы вызываете его всякий раз, когда вам нужно, из какой бы файловой системы вы ни оказались:
источник
www-data
группе, читающих ваши файлы или пишущих в этом отношении?chmod -R 775 /home/$USER/public_html
действительно ужасноfind /home/$USER/public_html -type d -exec chmod 775 {} \;
иfind /home/$USER/public_html -type f -exec chmod 664 {} \;
намного лучшеПомимо chmoding файлов и редактирования apache .conf файлов, я хочу сказать, что у меня ничего не получалось, потому что мои файлы были в разделе, который я автоматически смонтировал через nautilus. Это ограничивает раздел только для вашего пользователя.
Чтобы проверить, видны ли ваши файлы
www-root
пользователю apache (запуститьps -aux | grep apache2
для проверки), запустите следующую команду:и попробуйте прочитать файл из корня вашего документа.
Если файл не читается, проверьте, что:
1) вы установили все остальные права доступа к файлам
2) вы использовали
FollowSymlinks
в своих.conf
файлах, если это необходимо3) вы установили DocumentRoot
3) смонтировать раздел для всех пользователей. Я должен был отредактировать
/etc/fstab
и указать свой раздел через его UUID:Затем размонтируйте ваш раздел через nautilus и сделайте
sudo mount -a
. Если все идет хорошо, ваши файлы сейчас находятся под/mnt
. Обновите свои символические ссылки, и все готово.источник
Лучший способ, который я нашел, - это то, как VirtualMin это делает.
создать пользователя и группу "myhome"
Сделать пользователя Apache участником группы "myhome". Не наоборот, как некоторые объяснения здесь описывают
Теперь Apache имеет доступ для чтения и выполнения к / home / myhome в дополнение к / home / myhome / www
Пользователь "myhome" имеет право на запись
источник
www-data
принадлежит к группеmyhome
. Все файлы и каталоги имеют групповые права на запись и принадлежатmyhome:myhome
. Я перезапустил Apache. Apache по-прежнему не может писать новые файлы и папки. (PHP скрипт с использованием www-data: www-data user / group)