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

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

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

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

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

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

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

40 ответов

Каталоги над вашим веб-каналом должны иметь бит выполнения, чтобы разрешить Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в /home/user/htdocs, /, /home, [ f4] и /home/user/htdocs должны иметь бит выполнения.

Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK (информация о настройке) и настроить конфигурацию, чтобы Apache работал под вашим пользователем.

14
ответ дан 25 May 2018 в 22:56

Каталоги над вашим веб-каналом должны иметь бит выполнения, чтобы разрешить Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в /home/user/htdocs, /, /home, /home/user и /home/user/htdocs должны иметь бит выполнения.

Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK (информация о настройке) и настроить конфигурацию, чтобы Apache работал под вашим пользователем.

14
ответ дан 25 July 2018 в 22:28

Каталоги над вашим веб-каналом должны иметь бит выполнения, чтобы разрешить Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в /home/user/htdocs, /, /home, /home/user и /home/user/htdocs должны иметь бит выполнения.

Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK (информация о настройке) и настроить конфигурацию, чтобы Apache работал под вашим пользователем.

14
ответ дан 26 July 2018 в 21:47

Каталоги над вашим веб-каналом должны иметь бит выполнения, чтобы разрешить Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в /home/user/htdocs, /, /home, /home/user и /home/user/htdocs должны иметь бит выполнения.

Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK (информация о настройке) и настроить конфигурацию, чтобы Apache работал под вашим пользователем.

14
ответ дан 31 July 2018 в 11:33

Каталоги над вашим веб-каналом должны иметь бит выполнения, чтобы разрешить Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в /home/user/htdocs, /, /home, /home/user и /home/user/htdocs должны иметь бит выполнения.

Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK (информация о настройке) и настроить конфигурацию, чтобы Apache работал под вашим пользователем.

14
ответ дан 2 August 2018 в 03:54

В каталогах выше вашего веб-сайта должен быть установлен бит выполнения, позволяющий Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в / home / user / htdocs , / , / home , / home / user и / home / user / htdocs должны иметь бит выполнения set.


Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK ( информация о настройке ) и настроить конфигурацию так, чтобы выполнялся Apache под вашим пользователем.

14
ответ дан 4 August 2018 в 19:58

В каталогах выше вашего веб-сайта должен быть установлен бит выполнения, позволяющий Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в / home / user / htdocs , / , / home , / home / user и / home / user / htdocs должны иметь бит выполнения set.


Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK ( информация о настройке ) и настроить конфигурацию так, чтобы выполнялся Apache под вашим пользователем.

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

В каталогах выше вашего веб-сайта должен быть установлен бит выполнения, позволяющий Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в / home / user / htdocs , / , / home , / home / user и / home / user / htdocs должны иметь бит выполнения set.


Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK ( информация о настройке ) и настроить конфигурацию так, чтобы выполнялся Apache под вашим пользователем.

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

В каталогах выше вашего веб-сайта должен быть установлен бит выполнения, позволяющий Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в / home / user / htdocs , / , / home , / home / user и / home / user / htdocs должны иметь бит выполнения set.


Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK ( информация о настройке ) и настроить конфигурацию так, чтобы выполнялся Apache под вашим пользователем.

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

В каталогах выше вашего веб-сайта должен быть установлен бит выполнения, позволяющий Apache спускаться в каталоги.

Если у вас есть веб-сайт, расположенный в / home / user / htdocs , / , / home , / home / user и / home / user / htdocs должны иметь бит выполнения set.


Вышеупомянутое решение «работает», но оно не идеально. Если вы создали папку, Apache не может ее записать. Обратное также происходит.

Это может быть «исправлено», установив umask 0007 и добавив себя в группу Apache (www-data, если я не ошибаюсь), так что вновь созданные файлы и папки могут быть записаны группой

В качестве альтернативы вы можете установить альтернативный Apache MPM: Apache2 MPM ITK ( информация о настройке ) и настроить конфигурацию так, чтобы выполнялся Apache под вашим пользователем.

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

Если ваши документы на сервере находятся в каталоге /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

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

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

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

public_html_fix.sh
37
ответ дан 25 May 2018 в 22:56
  • 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 {} \; намного лучше – iharob 28 May 2016 в 23:32

Помимо файлов chmoding и редактирования файлов apache .conf, я хочу сказать, что ничего не работало для меня, потому что мои файлы были на разделе, который я смонтировал автоматически через nautilus. Это ограничивает раздел только для вашего пользователя.

Чтобы проверить, видимы ли ваши файлы с помощью www-root или любого другого пользователя, запускающего apache (запустите ps -aux | grep apache2 для проверки), выполните следующую команду:

sudo su -l www-data -s /bin/bash

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

Если файл не читается, проверьте, что:

1) вы установили все другие разрешения на доступ к файлам [ ! d4]

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
ответ дан 25 May 2018 в 22:56

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

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

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

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

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

1
ответ дан 25 May 2018 в 22:56
  • 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 (запустите ps -aux | grep apache2 для проверки), выполните следующую команду:

sudo su -l www-data -s /bin/bash

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

Если файл не читается, проверьте, что:

1) вы установили все другие разрешения на доступ к файлам [ ! d4]

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
ответ дан 25 July 2018 в 22:28

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

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

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

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

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

1
ответ дан 25 July 2018 в 22:28
  • 1
    Мне нравится эта концепция, но, похоже, она не работает для меня. Пользователь www-data принадлежит к группе myhome. Все файлы и каталоги имеют права на запись в группу и принадлежат myhome:myhome. Я перезапустил apache. Apache все еще не может писать новые файлы и папки. (PHP-скрипт с использованием www-data: www-data user / group) – squarecandy 6 August 2017 в 02: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

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

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

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

public_html_fix.sh
37
ответ дан 25 July 2018 в 22:28
  • 1
    Если это делается на общем хосте, как вы остановите других пользователей в группе www-data, читающих ваши файлы, или напишите на этот вопрос? – jozxyqk 14 May 2015 в 16:25
  • 2
    Действительно удивительный ответ ... ты спас мне жизнь – NullPoiиteя 21 June 2015 в 10:30
  • 3
    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 {} \; намного лучше – iharob 28 May 2016 в 23:32

Помимо файлов chmoding и редактирования файлов apache .conf, я хочу сказать, что ничего не работало для меня, потому что мои файлы были на разделе, который я смонтировал автоматически через nautilus. Это ограничивает раздел только для вашего пользователя.

Чтобы проверить, видимы ли ваши файлы с помощью www-root или любого другого пользователя, запускающего apache (запустите ps -aux | grep apache2 для проверки), выполните следующую команду:

sudo su -l www-data -s /bin/bash

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

Если файл не читается, проверьте, что:

1) вы установили все другие разрешения на доступ к файлам [ ! d4]

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
ответ дан 26 July 2018 в 21:47

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

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

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

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

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

1
ответ дан 26 July 2018 в 21:47
  • 1
    Мне нравится эта концепция, но, похоже, она не работает для меня. Пользователь www-data принадлежит к группе myhome. Все файлы и каталоги имеют права на запись в группу и принадлежат myhome:myhome. Я перезапустил apache. Apache все еще не может писать новые файлы и папки. (PHP-скрипт с использованием www-data: www-data user / group) – squarecandy 6 August 2017 в 02: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

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

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

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

public_html_fix.sh
37
ответ дан 26 July 2018 в 21:47
  • 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 {} \; намного лучше – iharob 28 May 2016 в 23:32

Помимо файлов chmoding и редактирования файлов apache .conf, я хочу сказать, что ничего не работало для меня, потому что мои файлы были на разделе, который я смонтировал автоматически через nautilus. Это ограничивает раздел только для вашего пользователя.

Чтобы проверить, видимы ли ваши файлы с помощью www-root или любого другого пользователя, запускающего apache (запустите ps -aux | grep apache2 для проверки), выполните следующую команду:

sudo su -l www-data -s /bin/bash

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

Если файл не читается, проверьте, что:

1) вы установили все другие разрешения на доступ к файлам [ ! d4]

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
ответ дан 31 July 2018 в 11:33

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

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

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

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

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

1
ответ дан 31 July 2018 в 11:33
  • 1
    Мне нравится эта концепция, но, похоже, она не работает для меня. Пользователь www-data принадлежит к группе myhome. Все файлы и каталоги имеют права на запись в группу и принадлежат myhome:myhome. Я перезапустил apache. Apache все еще не может писать новые файлы и папки. (PHP-скрипт с использованием www-data: www-data user / group) – squarecandy 6 August 2017 в 02: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

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

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

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

public_html_fix.sh
37
ответ дан 31 July 2018 в 11:33
  • 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 {} \; намного лучше – iharob 28 May 2016 в 23:32

Помимо файлов chmoding и редактирования файлов apache .conf, я хочу сказать, что ничего не работало для меня, потому что мои файлы были на разделе, который я смонтировал автоматически через nautilus. Это ограничивает раздел только для вашего пользователя.

Чтобы проверить, видимы ли ваши файлы с помощью www-root или любого другого пользователя, запускающего apache (запустите ps -aux | grep apache2 для проверки), выполните следующую команду:

sudo su -l www-data -s /bin/bash

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

Если файл не читается, проверьте, что:

1) вы установили все другие разрешения на доступ к файлам [ ! d4]

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
ответ дан 2 August 2018 в 03:54

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

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

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

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

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

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

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

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

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

public_html_fix.sh
37
ответ дан 2 August 2018 в 03:54
  • 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 {} \; намного лучше – iharob 28 May 2016 в 23:32

Если ваши серверные документы находятся в каталоге / 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
ответ дан 4 August 2018 в 19:58

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

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

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

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

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

1
ответ дан 4 August 2018 в 19: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
ответ дан 4 August 2018 в 19: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
ответ дан 6 August 2018 в 04:00

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

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

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

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

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

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

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

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