Правильні власники / групи / дозволи для файлів / папок 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, "ввести" dir)
  • sudo chgrp -R _www ~/my/web/root (весь веб-вміст зараз груповий _www)
  • chmod -R go-rwx ~/my/web/root (ніхто, крім власника, не може отримати доступ до веб-вмісту)
  • chmod -R g+rx ~/my/web/root (весь веб-вміст зараз читається / виконуваний / інтерабельний _www)

Усі інші рішення залишають файли відкритими для інших місцевих користувачів (які входять до групи «персонал», а також, очевидно, перебувають у групі «о» / інші). Потім ці користувачі можуть вільно переглядати та отримувати доступ до конфігурацій БД, вихідного коду чи інших важливих даних у файлах та сценаріях веб-конфігурації, якщо такі є частиною вашого вмісту. Якщо це не є проблемою для вас, то, безумовно, йдіть з одним з більш простих рішень.


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

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

2
Для систем, які очікують, що сценарії веб-сайтів створюють власні папки та записують власні файли в webroot (як це роблять багато 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

30

Якщо Термінал вам справді не подобається, то тут вам допоможе графічний інтерфейс користувача dkamins:

1) Перейдіть у домашній каталог вашого користувача ( ludo було б моє) і в меню Файл виберіть Отримати інформацію cmdI у інспектора:

Отримайте розділ Інформація про вікно спільного доступу та дозволів

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

Отримати інформацію, додати користувачів та групи, та виділити всесвітній веб-сервер

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

3) Покажіть інспектор " Інформація про інформацію" вашої користувальницької папки " Сайти" та відтворіть крок 2, а потім у підменю "Дія передач" виберіть " Застосувати до доданих елементів" :

Підменю Інформація про дію "Інформація" Застосувати до доданих елементів ... виділено

Voilà 3 кроки та єдиний графічний інтерфейс ...


2
Тут мені не допомогли, але добре знати про ALT + [+]трюк. Дякую.
Том

1
Це найкращий спосіб на сьогодні, alt + клацання показує належним чином _www користувача
CoolArts

Це вірно, якщо у вас активовано спільний доступ до гостьових файлів або встановлено зловмисний скрипт php ... Переконайтеся, що у папці "Загальнодоступні" та "Сайти" є доступною для всіх ". Крок 3 стосується лише папки "Сайти" ... Таким чином, інші папки не слід змінювати ...
llange

Це не повинно бути потрібним. _www є у групі всіх.
DarkNeuron

Приємно знати про цей альт [+] !! Thx
Ремі Грумеу

12

Я знаю, що це стара публікація, але для тих, хто перейшов на гірський лев (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 не має нічого спільного зі створеними каталогами чи апашем.
ktamlyn

9

2-місячна нитка, але краще пізно, ніж ніколи! 10.6 в папці документів веб-сервера встановлено:

owner:root
group:_www
permission:755

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


Не потрібно встановлювати власника на "root", але це нешкідливо. Ви, безумовно, не потребуєте наявних у вас perms o + rx - що дозволяє будь-якому місцевому користувачеві переглядати та читати весь ваш веб-вміст (включаючи, можливо, конфігурації з паролями DB тощо)
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 / Документи / Бібліотека / WebServer / Документи / [файл] / Бібліотека / Веб-сервер / Документи / [каталог]
Фо.

0

Для мене власник користувача - це адміністратор, а група - _www і працює з дозволами, встановленими на 775 для dir та для файлів 664


0

Дозволи на оновлення / робочий стіл Каталіни

Я стикаюся з цим раз на рік на 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.