Я знаю, что права доступа к файлам уже обсуждались здесь раньше, но я изо всех сил пытаюсь разобраться в концепции моего сценария.
Я создал файлы на старой установке ubuntu.
Я скопировал файлы в свою новую установку ubuntu и поместил их в свой webroot.
Когда я пытаюсь запустить файлы (это файлы PHP), я получаю сообщение об ошибке, связанное с разрешениями
в попытке исправить это, я предположил, что они все еще должны принадлежать предыдущему владельцу, поэтому я побежал chown -R в каталоге с моим именем пользователя в качестве аргумента, чтобы стать владельцем всех файлов в каталоге. Следует отметить, что имена пользователей между новыми и старыми установками ubuntu были одинаковыми.
Когда я пытаюсь запустить файлы снова, та же проблема: ошибка 500 из-за проблем с разрешениями. Кто-нибудь может сказать мне, какие еще шаги я должен предпринять?
Webroot для моей установки apache находится в моей домашней папке. Если я создаю новые файлы в своем webroot, они также работают так, как ожидалось, проблема возникает только со старыми файлами.
В каталогах над вашим webroot должен быть установлен бит execute, позволяющий Apache спускаться в каталоги.
Если ваш веб-корень находится по адресу /home/user/htdocs, в /, /home, /home/user и /home/user/htdocs должен быть установлен бит выполнения.
Приведенное выше решение "работает", но оно не идеально. Если вы создали папку, Apache не сможет выполнить запись в нее. Происходит и обратное.
Это можно "исправить", установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), чтобы вновь созданные файлы и папки были доступны для записи группой.
В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK (информация о настройке) и настройте конфигурацию так, чтобы Apache работал под вашим пользователем.
Помимо chmoding файлов и редактирования файлов apache .conf, я хочу сказать, что у меня ничего не получалось, потому что мои файлы находились на разделе, который я автоматически смонтировал через nautilus. Это ограничивает раздел только для вашего пользователя.
Чтобы проверить, видны ли ваши файлы с помощью www-root или любой другой пользователь, запускающий apache (run ps -aux | grep apache2 для проверки), выполните следующую команду:
sudo su -l www-data -s /bin/bash
и попробуйте прочитать файл из корня вашего документа.
Если файл недоступен для чтения, проверьте, что:
1) вы установили все остальные права доступа к файлам
2) вы использовали FollowSymlinks В вашем .conf файлы, если это необходимо
3) вы настроили DocumentRoot
3) смонтируйте свой раздел для всех пользователей. Мне пришлось отредактировать /etc/fstab и укажите мой раздел через его UUID:
Затем размонтируйте свой раздел с помощью nautilus и выполните sudo mount -a. Если все пойдет хорошо, ваши файлы теперь находятся под /mnt. Обновите свои символические ссылки, и все готово.
777 разрешений в файле позволят всем записывать ваши файлы, что может привести к повреждению ваших страниц или взлому. Вы должны попробовать использовать 755, который обычно используется для файлов php. Убедитесь, что вам не требуется включать “разрешить выполнение” для файла, и в этом случае вы можете запустить chmod [filename] -x. Информацию о команде chmod можно получить, перейдя по следующей ссылке: The chmod command
Хорошо, я решил свою проблему с неисполнением файлов, но я сделал это, просто запустив chmod -R 777 dir в соответствующем каталоге. Я не могу отделаться от мысли, что есть лучший способ сделать это, хотя
Я не уверен, что права доступа к файлам копируются при копировании файла, может ли кто-нибудь подтвердить это? В противном случае, можно ли было бы передать файлы какому-либо другому пользователю (или root), а затем вернуть их обратно?