Разрешения: как Apache может обращаться к файлам в моем домашнем каталоге?

Я знаю, что до сих пор были разрешены права доступа к файлам, но я пытаюсь разобраться с концепцией моего сценария.

Я создал файлы на старой установке ubuntu. Ive скопировал файлы в мою новую установку ubuntu и поместил их в мой webroot. Когда я пытаюсь запустить файлы (theyre PHP-файлы), я получаю ошибку, связанную с разрешениями

, пытаясь исправить это, я предположил, что они все еще должны принадлежать предыдущему владельцу, поэтому я запустил chown -R в каталоге, с моим именем пользователя в качестве аргумента, чтобы взять на себя все файлы в каталоге. Следует отметить, что имена пользователей между новыми и старыми установками ubuntu были одинаковыми.

Когда я пытаюсь снова запустить файлы, такая же проблема: ошибка 500 из-за проблем с разрешениями. Может ли кто-нибудь сказать мне, какие еще шаги я должен предпринять?

Веб-сайт для моей установки apache находится внутри моей домашней папки. Если я создаю новые файлы в своем веб-корте, они также работают так, как ожидалось, только старые файлы, которые вызывают проблему.

29
задан 19 February 2011 в 15:31

40 ответов

Помимо файлов 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:

  UUID = afdee1d3-5bb8-4652-892f-e83a9b5ff72e / mnt / 4tb ext4 rw  , nosuid, nodev, errors = remount-ro  

Затем размонтируйте свой раздел с помощью nautilus и выполните sudo mount -a . Если все идет хорошо, ваши файлы теперь находятся под / mnt . Обновите свои символические ссылки, и вам будет хорошо.

1
ответ дан 6 August 2018 в 04:00

Если ваши серверные документы находятся в каталоге / home / $ USER / public_html , вам необходимо запустить

  sudo chown -R www-data: www-data /  home / $ USER / public_html  

, чтобы передать владение папкой DocumentRoot пользователю www-data и группе www-data .

Затем вы можете добавить себя в группу www-data

  sudo adduser $ USER www-data  

Наконец, вам необходимо сделать папку DocumentRoot доступной для записи владельцем (пользователем www-data) и вашим (как часть группы www-data ):

   sudo chmod -R 775 / home / $ USER / public_html  

Для удобства вы можете создать скрипт с именем public_html_fix.sh с контентом:

  #! / bin / bash sudo adduser $ USER www-data sudo chown -R www-data: www-data / home / $ USER / public_html sudo chmod -R 775 / home / $ USER / public_html [  ! d9] 

Сохраните его внутри / home / $ USER / bin и сделайте его выполнимым, используя:

  sudo chmod + x / home /  $ USER  /bin/public_html_fix.sh  

Затем вы вызываете его всякий раз, когда вам нужно, откуда бы вы ни находились в файловой системе:

  public_html_fix  .sh  
37
ответ дан 7 August 2018 в 21:58

Лучшим способом, который я нашел для этого, является то, как это делает VirtualMin.

создать пользователя и группу «myhome»

Сделать apache пользователем членом группы " мой дом". Не так, как некоторые из объяснений здесь описывают

Итак, теперь apache прочитал и выполнил доступ к / home / myhome в дополнение к / home / myhome / www

"myhome «пользователь имеет доступ на запись

1
ответ дан 7 August 2018 в 21:58

Помимо файлов 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:

  UUID = afdee1d3-5bb8-4652-892f-e83a9b5ff72e / mnt / 4tb ext4 rw  , nosuid, nodev, errors = remount-ro  

Затем размонтируйте свой раздел с помощью nautilus и выполните sudo mount -a . Если все идет хорошо, ваши файлы теперь находятся под / mnt . Обновите свои символические ссылки, и вам будет хорошо.

1
ответ дан 7 August 2018 в 21:58

Если ваши серверные документы находятся в каталоге / home / $ USER / public_html , вам необходимо запустить

  sudo chown -R www-data: www-data /  home / $ USER / public_html  

, чтобы передать владение папкой DocumentRoot пользователю www-data и группе www-data .

Затем вы можете добавить себя в группу www-data

  sudo adduser $ USER www-data  

Наконец, вам необходимо сделать папку DocumentRoot доступной для записи владельцем (пользователем www-data) и вашим (как часть группы www-data ):

   sudo chmod -R 775 / home / $ USER / public_html  

Для удобства вы можете создать скрипт с именем public_html_fix.sh с контентом:

  #! / bin / bash sudo adduser $ USER www-data sudo chown -R www-data: www-data / home / $ USER / public_html sudo chmod -R 775 / home / $ USER / public_html [  ! d9] 

Сохраните его внутри / home / $ USER / bin и сделайте его выполнимым, используя:

  sudo chmod + x / home /  $ USER  /bin/public_html_fix.sh  

Затем вы вызываете его всякий раз, когда вам нужно, откуда бы вы ни находились в файловой системе:

  public_html_fix  .sh  
37
ответ дан 10 August 2018 в 10:13

Лучшим способом, который я нашел для этого, является то, как это делает VirtualMin.

создать пользователя и группу «myhome»

Сделать apache пользователем членом группы " мой дом". Не так, как некоторые из объяснений здесь описывают

Итак, теперь apache прочитал и выполнил доступ к / home / myhome в дополнение к / home / myhome / www

"myhome «пользователь имеет доступ на запись

1
ответ дан 10 August 2018 в 10:13

Помимо файлов 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:

  UUID = afdee1d3-5bb8-4652-892f-e83a9b5ff72e / mnt / 4tb ext4 rw  , nosuid, nodev, errors = remount-ro  

Затем размонтируйте свой раздел с помощью nautilus и выполните sudo mount -a . Если все идет хорошо, ваши файлы теперь находятся под / mnt . Обновите свои символические ссылки, и вам будет хорошо.

1
ответ дан 10 August 2018 в 10:13

Если ваши серверные документы находятся в каталоге / home / $ USER / public_html , вам необходимо запустить

  sudo chown -R www-data: www-data /  home / $ USER / public_html  

, чтобы передать владение папкой DocumentRoot пользователю www-data и группе www-data .

Затем вы можете добавить себя в группу www-data

  sudo adduser $ USER www-data  

Наконец, вам необходимо сделать папку DocumentRoot доступной для записи владельцем (пользователем www-data) и вашим (как часть группы www-data ):

   sudo chmod -R 775 / home / $ USER / public_html  

Для удобства вы можете создать скрипт с именем public_html_fix.sh с контентом:

  #! / bin / bash sudo adduser $ USER www-data sudo chown -R www-data: www-data / home / $ USER / public_html sudo chmod -R 775 / home / $ USER / public_html [  ! d9] 

Сохраните его внутри / home / $ USER / bin и сделайте его выполнимым, используя:

  sudo chmod + x / home /  $ USER  /bin/public_html_fix.sh  

Затем вы вызываете его всякий раз, когда вам нужно, откуда бы вы ни находились в файловой системе:

  public_html_fix  .sh  
37
ответ дан 13 August 2018 в 16:35
  • 1
    работал на меня .... – Emmanuel Okeke 8 October 2012 в 18:48
  • 2
    Отличный ответ! - С примерами и даже удобным сценарием и как использовать / установить Отлично! – Andre 13 February 2015 в 06:24
  • 3
    Если это делается на общем хосте, как вы остановите других пользователей в группе www-data , читающей ваши файлы, или напишите на это? – jozxyqk 14 May 2015 в 16:25
  • 4
    Действительно удивительный ответ ... ты спас мне жизнь – NullPoiиteя 21 June 2015 в 10:30
  • 5
    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 {} \; [ ! d2] намного лучше – iharob 28 May 2016 в 23:32

Лучшим способом, который я нашел для этого, является то, как это делает VirtualMin.

создать пользователя и группу «myhome»

Сделать apache пользователем членом группы " мой дом". Не так, как некоторые из объяснений здесь описывают

Итак, теперь apache прочитал и выполнил доступ к / home / myhome в дополнение к / home / myhome / www

"myhome «пользователь имеет доступ на запись

1
ответ дан 13 August 2018 в 16:35
  • 1
    Мне нравится эта концепция, но, похоже, она не работает для меня. Пользователь www-data принадлежит к группе myhome . Все файлы и каталоги имеют права доступа к группе и принадлежат myhome: myhome . Я перезапустил apache. Apache все еще не может писать новые файлы и папки. (PHP-скрипт с использованием www-data: www-data user / group) – squarecandy 6 August 2017 в 02:00

Помимо файлов 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:

  UUID = afdee1d3-5bb8-4652-892f-e83a9b5ff72e / mnt / 4tb ext4 rw  , nosuid, nodev, errors = remount-ro  

Затем размонтируйте свой раздел с помощью nautilus и выполните sudo mount -a . Если все идет хорошо, ваши файлы теперь находятся под / mnt . Обновите свои символические ссылки, и вам будет хорошо.

1
ответ дан 13 August 2018 в 16:35

Другие вопросы по тегам:

Похожие вопросы: