Правильный владелец / группа / разрешения для файлов / папок сайта Apache 2 в Mac OS X?


114

Трудно найти в Интернете ответы на этот вопрос для Mac, поэтому я надеюсь, что кто-то там может решить этот вопрос для меня? Мои разрешения на моих сайтах облажались, и я не уверен, как их исправить, просто не набросив рекурсивный 777 на все, что совершенно очевидно неверно.

Спасибо!

Ответы:


186

Это наиболее ограничительный и безопасный способ, который я нашел, как описано здесь для гипотетического ~/my/web/root/каталога для вашего веб-контента:

  • Для каждого родительского каталога , ведущего к вашему веб - корень (например ~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (никто, кроме владельца, не может получить доступ к контенту)
    • chmod go+x DIR (чтобы разрешить «пользователям», включая _www, «входить» в каталог)
  • sudo chgrp -R _www ~/my/web/root (весь веб-контент теперь группируется _www)
  • chmod -R go-rwx ~/my/web/root (никто, кроме владельца, не может получить доступ к веб-контенту)
  • chmod -R g+rx ~/my/web/root (весь веб-контент теперь доступен для чтения / выполнения / ввода _www)

Все остальные решения оставляют файлы открытыми для других локальных пользователей (которые входят в группу «staff», а также, очевидно, находятся в группе «o» / others). Затем эти пользователи могут свободно просматривать и получать доступ к конфигурациям БД, исходному коду или другим конфиденциальным деталям в ваших файлах веб-конфигурации и скриптах, если они являются частью вашего контента. Если для вас это не проблема, то обязательно воспользуйтесь одним из более простых решений.


3
Мне пришлось предоставить доступ на чтение в дополнение к флагу x chmod go+rx DIRна уровне каталога / Users / username, прежде чем ls перестанет выдавать ошибку разрешения. Интересно, почему?
bhavinb

1
@mike, все файлы и каталоги по-прежнему будут принадлежать вам (пользователю) и по-прежнему будут доступны для записи. Команда chgrp позволяет только «_www» группу для чтения файлов.
dkamins

2
Для систем, которые ожидают, что скрипты веб-сайтов будут создавать свои собственные папки и записывать свои файлы в корневой каталог (как это делают многие CMS), мне пришлось предоставить права на запись группе _www. Итак, становится последний шаг chmod -R g+rwx ~/my/web/root. Есть возражения или лучший способ сделать это @dkamins?
Jpsy

1
@Jpsy Это должно работать нормально, если вашему приложению нужно писать самому себе. Это приводит к другим потенциальным проблемам безопасности, если другой код работает также как _www (и может злонамеренно изменять код CMS), поэтому будьте осторожны. Если вы можете ограничить доступ для записи (g + w) более глубоким подкаталогом, это еще лучше.
dkamins

1
Этому уже несколько лет, время идет, и OS X любит время от времени изменять работу своего сервера Apache по умолчанию. Таким образом, хотя это решение все еще работает, я бы настоятельно рекомендовал альтернативное решение создания локальных виртуальных машин для тестирования ваших приложений вместо использования самой OS X. См .: vagrantup.com
dkamins 07

30

Если вам действительно не нравится Терминал, вот вам способ делать dkamins с помощью графического интерфейса:

1) Перейдите в домашний каталог вашего пользователя ( ludo будет моим) и в меню File выберите Get Info cmdI в инспекторе:

Окно получения информации Раздел "Совместное использование и разрешения"

2) alt/optionНажав на знак [+], добавьте группу _www и установите для нее разрешение только на чтение :

Получить информацию добавить выделенных пользователей и групп и выделить сервер World Wide Web

  • Поэтому рассмотрите (хорошая практика) не хранить личную информацию в корне домашней папки пользователя (и на жестком диске)!
  • Вы можете пропустить этот шаг, если группа ** все ** имеет разрешение ** только для чтения **, но с тех пор, как AirDrop, папка ** / Public / Drop Box ** в основном бесполезна ...

3) Отобразите инспектор Get Info папки пользовательских сайтов и воспроизведите шаг 2, затем в подменю действия с шестеренкой выберите Применить к вложенным элементам ... :

Подменю действия Get Info Применить к вложенным элементам ... выделено

Вуаля 3 шага и только графический интерфейс ...


2
Здесь мне не помогло, но полезно знать о ALT + [+]трюке. Спасибо.
Tom

1
На данный момент это лучший способ, alt + click показывает правильного пользователя
_www

Это верно, если у вас активирован гостевой совместный доступ к файлам или установлен вредоносный скрипт php ... Убедитесь, что есть только папка Public и Sites, доступная для чтения всем. Шаг 3 применяется только к папке «Сайты»… Таким образом, обычно другие папки не следует изменять…
llange

В этом не должно быть необходимости. _www входит в группу всех.
DarkNeuron

Полезно знать об этом альтернативе [+] !! Спасибо
Реми Грюмо

12

Я знаю, что это старый пост, но для тех, кто обновляется до Mountain Lion (10.8) и сталкивается с аналогичными проблемами, добавление FollowSymLinksв ваш {username} .conf файла (в / etc / apache2 / users /) помогло мне. Итак, файл выглядит так:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Я создал пользователя «git», которого не использую, и это все, что было доступно в этом каталоге для редактирования (git.conf). Как только я обновил файл, как описано выше для пользователя git, каталог, который я установил, правильно обслуживается apache. Для меня это не имеет смысла, потому что мой пользовательский git не имеет ничего общего с созданными каталогами или apache.
ktamlyn 06

9

2-месячная ветка, но лучше поздно, чем никогда! В версии 10.6 у меня установлена ​​папка документов веб-сервера:

owner:root
group:_www
permission:755

_www - это пользователь, который запускает apache под Mac OS X. Затем я добавил ACL, чтобы предоставить полные разрешения группе администраторов. Таким образом, я все еще могу вносить какие-либо изменения с моим пользователем-администратором без необходимости аутентифицироваться как root. Кроме того, когда я хочу разрешить веб-серверу запись в папку, я могу просто выполнить команду chmod до 775, оставив всех, кроме root: _www, только с разрешениями на чтение / выполнение (исключая любые ACL, которые я применил)


Вам не нужно устанавливать владельца как root, но это безвредно. Вам определенно не нужны имеющиеся у вас перма o + rx - которые позволяют любому локальному пользователю просматривать и читать весь ваш веб-контент (включая, возможно, конфигурации с паролями БД и т. Д.)
dkamins

1
(см. мой ответ на этот вопрос ниже, который представляет собой гораздо более сложную версию этого ответа, который может быть интересен тем, кто более параноидально относится к безопасности)
dkamins

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

5

В моей системе 10.6:

vhosts folder:
 owner:root
 group:wheel
 permissions:755

vhost.conf files:
 owner:root
 group:wheel
 permissions:644

1
Отлично, спасибо Стиву, а за сами веб-файлы? / Библиотека / WebServer / Documents / Library / WebServer / Documents / [файл] / Library / WebServer / Documents / [каталог]
Fo.

0

Владелец пользователя для меня - администратор, а группа - _www, и работает с разрешениями, установленными на 775 для dir и для файлов 664.


0

Обновление Catalina / Разрешения рабочего стола

Я сталкиваюсь с этим раз в год на macOS. Обычно я использую apache2 для размещения папки на своем рабочем столе.

Если вы пытаетесь предоставить доступ к desktopпапке, вам необходимо выполнить следующие действия, чтобы разрешить httpd доступ ко всем папкам: https://apple.stackexchange.com/a/373139/353465


-3

Сначала откройте терминал, а затем перейдите в каталог веб-сервера

cd /Library/WebServer/Documents

а затем введите это, и что вы сделаете, вы дадите readи writeразрешение

sudo chmod -R o+w /Library/WebServer/Documents

Это обязательно сработает!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.