Właściwy właściciel / grupa / uprawnienia do plików / folderów witryny Apache 2 w systemie Mac OS X?


114

Trudno jest znaleźć odpowiedzi na to pytanie specyficzne dla Maca w Internecie, więc mam nadzieję, że ktoś tam może odpocząć za mnie? Moje uprawnienia są spieprzone w moich witrynach i nie jestem pewien, jak je naprawić bez po prostu trzaskania rekurencyjnym 777 na wszystko, co jest dość oczywiste niepoprawne.

Dzięki!

Odpowiedzi:


186

Jest to najbardziej restrykcyjny i najbezpieczniejszy sposób, jaki znalazłem, jak wyjaśniono tutaj dla hipotetycznego ~/my/web/root/katalogu z treścią internetową:

  • Dla każdego katalogu nadrzędnego prowadzącej do głównej sieci web (np ~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (nikt inny niż właściciel nie ma dostępu do treści)
    • chmod go+x DIR (aby umożliwić „użytkownikom”, w tym _www, „wejście” do katalogu)
  • sudo chgrp -R _www ~/my/web/root (cała zawartość internetowa jest teraz group _www)
  • chmod -R go-rwx ~/my/web/root (nikt inny niż właściciel nie może uzyskać dostępu do treści internetowych)
  • chmod -R g+rx ~/my/web/root (cała zawartość internetowa jest teraz czytelna / wykonywalna / wprowadzana przez _www)

Wszystkie inne rozwiązania pozostawiają pliki otwarte dla innych użytkowników lokalnych (którzy należą do grupy „personel” i oczywiście należą do grupy „o” / inni). Użytkownicy ci mogą następnie swobodnie przeglądać i uzyskiwać dostęp do konfiguracji bazy danych, kodu źródłowego lub innych poufnych szczegółów w plikach konfiguracyjnych i skryptach sieci Web, jeśli takie są częścią treści. Jeśli nie stanowi to dla Ciebie problemu, zdecydowanie wybierz jedno z prostszych rozwiązań.


3
Musiałem dać dostęp do odczytu oprócz flagi x chmod go+rx DIRna poziomie katalogu / Users / username, zanim ls przestał zgłaszać błąd uprawnień. Zastanawiać się, dlaczego?
bhavinb

1
@mike, wszystkie pliki i katalogi nadal będą Twoją własnością (użytkownika) i nadal będą dostępne do zapisu. Chgrp pozwala „_www” tylko grupy do odczytu plików.
dkaminy

2
W przypadku systemów, które oczekują, że skrypty strony internetowej będą tworzyć własne foldery i zapisywać własne pliki w webroot (jak wiele systemów CMS), musiałem przyznać uprawnienia do zapisu grupie _www. Tak więc staje się ostatni krok chmod -R g+rwx ~/my/web/root. Jakieś zastrzeżenia lub lepszy sposób na zrobienie tego @dkamins?
Jpsy

1
@Jpsy To powinno działać dobrze, jeśli Twoja aplikacja musi pisać do siebie. Wprowadza inne potencjalne problemy z bezpieczeństwem, jeśli inny kod działa również jako _www (i może złośliwie zmienić kod CMS), więc po prostu bądź ostrożny. Jeśli możesz ograniczyć możliwość zapisu (g + w) do głębszego podkatalogu, to jeszcze lepiej.
dkamins

1
To ma już kilka lat, czas mija, a OS X lubi od czasu do czasu zmieniać sposób działania domyślnego serwera Apache. Tak więc, chociaż to rozwiązanie nadal działa, w tym miejscu zdecydowanie polecam alternatywne rozwiązanie polegające na tworzeniu lokalnych maszyn wirtualnych do testowania aplikacji zamiast używania samego OS X. Zobacz: vagrantup.com
dkamins

30

Jeśli naprawdę nie podoba ci się Terminal tutaj, sposób GUI do robienia dkamin mówi ci:

1) Przejdź do katalogu domowego użytkownika ( należałoby do mnie ludo ) iz menu Plik wybierz w inspektorze Pobierz informacje cmdI :

Uzyskaj informacje w sekcji Udostępnianie i uprawnienia

2) alt/optionKlikając na znak [+] dodaj grupę _www i ustaw jej uprawnienia tylko do odczytu :

Uzyskaj informacje dodaj podświetlonych użytkowników i grupy oraz podświetlony serwer WWW

  • Dlatego rozważ (dobra praktyka) nieprzechowywanie informacji osobistych w katalogu głównym katalogu domowego użytkownika (i na dysku twardym)!
  • Możesz pominąć ten krok, jeśli grupa ** wszyscy ** ma uprawnienia ** tylko do odczytu **, ale od czasu AirDrop folder ** / Public / Drop Box ** jest w większości bezużyteczny ...

3) Pokaż inspektora Pobierz informacje w folderze Witryny użytkownika i powtórz krok 2, a następnie z podmenu działania koła zębatego wybierz Zastosuj do dołączonych elementów ... :

Podmenu czynności Uzyskaj informacje Zastosuj do załączonych elementów ... podświetlone

Voilà 3 kroki i tylko GUI ...


2
Nie pomogło mi tutaj, ale dobrze wiedzieć o ALT + [+]sztuczce. Dzięki.
Tom

1
To zdecydowanie najlepszy sposób, alt + klik pokazuje poprawnie _www użytkownika
CoolArts

Dzieje się tak, jeśli masz włączone udostępnianie plików gościa lub zainstalowany złośliwy skrypt php… Upewnij się, że istnieje tylko folder Publiczny i Witryny, który jest „czytelny” dla wszystkich. Krok 3 dotyczy tylko folderu „Witryny”… Dlatego zwykle inne foldery nie powinny być zmieniane…
llange

To nie powinno być potrzebne. _www jest w grupie Wszyscy.
DarkNeuron

Dobrze wiedzieć o tym alt [+] !! Thx
Remi Grumeau

12

Wiem, że to stary post, ale dla każdego, kto FollowSymLinksdokonał aktualizacji do Mountain Lion (10.8) i miał podobne problemy, dodanie do pliku {nazwa użytkownika} .conf (w / etc / apache2 / users /) załatwiło sprawę. Plik wygląda więc tak:

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

Utworzyłem użytkownika „git”, którego nie używam, i to było wszystko, co było dostępne w tym katalogu do edycji (git.conf). Po zaktualizowaniu pliku zgodnie z powyższym opisem dla użytkownika git - skonfigurowany przeze mnie katalog był poprawnie obsługiwany przez apache. Nie ma to dla mnie sensu, ponieważ mój użytkownik git nie ma nic wspólnego z utworzonymi katalogami ani z apache.
ktamlyn

9

Dwumiesięczny wątek, ale lepiej późno niż wcale! W wersji 10.6 mój folder dokumentów na serwerze sieciowym jest ustawiony na:

owner:root
group:_www
permission:755

_www to użytkownik, który uruchamia apache w systemie Mac OS X. Następnie dodałem listę ACL, aby umożliwić pełne uprawnienia grupie Administratorzy. W ten sposób mogę nadal wprowadzać zmiany z moim administratorem bez konieczności uwierzytelniania jako root. Ponadto, gdy chcę zezwolić serwerowi WWW na zapisywanie w folderze, mogę po prostu przejść do 775, pozostawiając wszystkim innym niż root: _www tylko uprawnienia do odczytu / wykonywania (z wyłączeniem wszelkich list ACL, które zastosowałem)


Nie musisz ustawiać właściciela na „root”, ale jest to nieszkodliwe. Zdecydowanie nie potrzebujesz uprawnień o + rx, które masz - które pozwalają każdemu lokalnemu użytkownikowi przeglądać i czytać całą zawartość sieciową (w tym prawdopodobnie konfiguracje z hasłami do bazy danych itp.)
dkamins

1
(zobacz moją odpowiedź na to pytanie poniżej, która jest znacznie bardziej złożoną wersją tej odpowiedzi, która może być interesująca dla tych, którzy są bardziej paranoikami w kwestii bezpieczeństwa)
dkamins

W terminalu, jak widzimy, z czym, na przykład, wordpress został zainstalowany (w odniesieniu do własnych uprawnień do plików), ponieważ chcę, aby wordpress mógł zapisywać własne pliki multimedialne ...
wylądował

5

W moim systemie 10.6:

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

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

1
Świetnie, dziękuję Steve i za same pliki internetowe? / Library / WebServer / Documents / Library / WebServer / Documents / [plik] / Library / WebServer / Documents / [katalog]
Fo.

0

Właścicielem użytkownika jest dla mnie administrator, a grupa to _www i pracuje z uprawnieniami ustawionymi na 775 dla katalogu i dla plików 664


0

Aktualizacje Catalina / uprawnienia pulpitu

Spotykam się z tym raz w roku na macOS. Zwykle używam Apache2 do hostowania folderu na moim pulpicie.

Jeśli próbujesz udzielić dostępu do desktopfolderu, musisz postępować zgodnie z tym, aby umożliwić httpd dostęp do wszystkich folderów: https://apple.stackexchange.com/a/373139/353465


-3

Najpierw otwórz terminal, a następnie przejdź do katalogu serwera WWW

cd /Library/WebServer/Documents

a następnie wpisz to i co zrobisz, to dasz readi writepozwolisz

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

To na pewno zadziała!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.