Richtige Eigentümer / Gruppe / Berechtigungen für Apache 2-Site-Dateien / -Ordner unter Mac OS X?


114

Es ist schwer, Mac-spezifische Antworten auf diese Frage im Internet zu finden, also hoffe ich, dass jemand da draußen diese für mich zur Ruhe bringen kann? Meine Berechtigungen sind auf meinen Websites durcheinander und ich bin mir nicht sicher, wie ich sie beheben kann, ohne nur eine rekursive 777 auf alles zu knallen, was ganz offensichtlich falsch ist.

Vielen Dank!

Antworten:


186

Dies ist der restriktivste und sicherste Weg, den ich gefunden habe, wie hier für ein hypothetisches ~/my/web/root/Verzeichnis für Ihren Webinhalt erläutert :

  • Für jede übergeordnete Verzeichnis des Web - Stamm führenden (zB ~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (Niemand außer dem Eigentümer kann auf Inhalte zugreifen.)
    • chmod go+x DIR (damit "Benutzer" einschließlich _www das Verzeichnis "eingeben" können)
  • sudo chgrp -R _www ~/my/web/root (Alle Webinhalte sind jetzt Gruppe _www)
  • chmod -R go-rwx ~/my/web/root (Niemand außer dem Eigentümer kann auf Webinhalte zugreifen.)
  • chmod -R g+rx ~/my/web/root (Alle Webinhalte können jetzt von _www gelesen / ausgeführt / eingegeben werden.)

Bei allen anderen Lösungen bleiben Dateien für andere lokale Benutzer geöffnet (die Teil der Gruppe "Mitarbeiter" sind und offensichtlich zur Gruppe "o" / andere gehören). Diese Benutzer können dann DB-Konfigurationen, Quellcode oder andere vertrauliche Details in Ihren Webkonfigurationsdateien und -skripten frei durchsuchen und darauf zugreifen, wenn diese Teil Ihres Inhalts sind. Wenn dies für Sie kein Problem ist, wählen Sie auf jeden Fall eine der einfacheren Lösungen.


3
Ich musste zusätzlich zum x-Flag mit chmod go+rx DIRauf der Verzeichnisebene / Users / username Lesezugriff gewähren, bevor ls aufhörte, einen Berechtigungsfehler auszulösen. Fragen, warum?
Bhavinb

1
@mike, Alle Dateien und Verzeichnisse gehören weiterhin Ihnen (dem Benutzer) und sind weiterhin beschreibbar. Mit chgrp kann nur die Gruppe "_www" die Dateien lesen.
Dkamins

2
Für Systeme, die erwarten, dass die Website-Skripte ihre eigenen Ordner erstellen und ihre eigenen Dateien in Webroot schreiben (wie es viele CMS tun), musste ich der _www-Gruppe Schreibberechtigungen erteilen. So wird der letzte Schritt chmod -R g+rwx ~/my/web/root. Irgendwelche Einwände oder eine bessere Möglichkeit, dies zu tun @dkamins?
Jpsy

1
@Jpsy Das sollte gut funktionieren, wenn Ihre App in sich selbst schreiben muss. Es führt zu anderen potenziellen Sicherheitsproblemen, wenn anderer Code auch als _www ausgeführt wird (und den CMS-Code möglicherweise in böswilliger Absicht ändert). Seien Sie also vorsichtig. Wenn Sie beschreibbar (g + w) auf ein tieferes Unterverzeichnis beschränken können, ist das noch besser.
Dkamins

1
Dies ist jetzt ein paar Jahre alt, die Zeit vergeht und OS X ändert von Zeit zu Zeit gerne die Funktionsweise seines Standard-Apache-Servers. Während diese Lösung noch funktioniert, würde ich an dieser Stelle dringend die alternative Lösung empfehlen, lokale VMs zum Testen Ihrer Apps zu erstellen, anstatt OS X selbst zu verwenden. Siehe: vagrantup.com
dkamins

30

Wenn dir das Terminal hier wirklich nicht gefällt, sagt dir die GUI-Methode, wie du Dkamins machst:

1) Gehen Sie zu Ihrem Benutzer- Ausgangsverzeichnis ( ludo gehört mir) und wählen Sie im Menü Datei im Inspektor die Option Informationen abrufen : cmdI

Abschnitt "Freigabe und Berechtigungen" des Infofensters abrufen

2) Fügen Sie durch alt/optionKlicken auf das [+] - Zeichen die _www- Gruppe hinzu und setzen Sie die Berechtigung auf schreibgeschützt :

Info abrufen Benutzer & Gruppen hervorheben und World Wide Web Server hervorheben

  • Bedenken Sie daher (bewährte Methode), keine persönlichen Informationen im Stammverzeichnis Ihres Benutzer-Home-Ordners (& Festplatte) zu speichern!
  • Sie können diesen Schritt überspringen, wenn die Gruppe "Jeder" die Berechtigung "Nur Lesen" hat, aber seit AirDrop ist der Ordner "** / Public / Drop Box **" meistens unbrauchbar ...

3) Lassen Sie sich die Get Info Inspektor Ihres Benutzer Seiten Ordner und reproduce Schritt 2 dann von der Gang Aktion Untermenü wählen beiliegender Elemente anwenden ... :

Untermenü "Info-Aktion abrufen" Auf eingeschlossene Elemente anwenden ... hervorgehoben

Voilà 3 Schritte und die GUI nur so ...


2
Hat mir hier nicht geholfen, aber gut über den ALT + [+]Trick zu wissen . Vielen Dank.
Tom

1
Dies ist bei weitem der beste Weg, Alt + Klick zeigt den richtigen _www Benutzer
CoolArts

Dies gilt, wenn Sie die Freigabe von Gastdateien aktiviert oder ein schädliches PHP-Skript installiert haben. Stellen Sie sicher, dass nur der Ordner "Public" und "Sites" für alle "lesbar" ist. Schritt 3 gilt nur für den Ordner "Sites". Daher sollten normalerweise andere Ordner nicht geändert werden.
llange

Dies sollte nicht benötigt werden. _www ist in der Gruppe "Jeder".
DarkNeuron

Gut zu wissen, alt [+] !! Thx
Remi Grumeau

12

Ich weiß, dass dies ein alter Beitrag ist, aber für alle, die ein Upgrade auf Mountain Lion (10.8) durchführen und ähnliche Probleme haben, hat das Hinzufügen FollowSymLinkszu Ihrer .conf-Datei {Benutzername} (in / etc / apache2 / users /) den Trick für mich getan. Die Datei sieht also so aus:

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

Ich habe einen Benutzer "git" erstellt, den ich nicht benutze, und das war alles, was in diesem Verzeichnis zum Bearbeiten verfügbar war (git.conf). Nachdem ich die Datei wie oben für User Git beschrieben aktualisiert hatte, wurde das von mir eingerichtete Verzeichnis von Apache korrekt bereitgestellt. Dies macht für mich keinen Sinn, da mein Benutzer git nichts mit den erstellten Verzeichnissen oder Apache zu tun hat.
Ktamlyn

9

2 Monate alter Thread, aber besser spät als nie! Unter 10.6 habe ich meinen Webserver-Dokumentenordner auf Folgendes eingestellt:

owner:root
group:_www
permission:755

_www ist der Benutzer, der Apache unter Mac OS X ausführt. Anschließend habe ich eine ACL hinzugefügt, um der Administratorgruppe vollständige Berechtigungen zu gewähren. Auf diese Weise kann ich weiterhin Änderungen an meinem Administrator vornehmen, ohne mich als Root authentifizieren zu müssen. Wenn ich dem Webserver erlauben möchte, in einen Ordner zu schreiben, kann ich einfach auf 775 chmodieren, wobei alle anderen als root: _www nur Lese- / Ausführungsberechtigungen haben (mit Ausnahme aller von mir angewendeten ACLs).


Sie müssen den Eigentümer nicht auf "root" setzen, aber es ist harmlos. Sie brauchen definitiv nicht die O + RX-Dauerwellen, die Sie haben - damit jeder lokale Benutzer alle Ihre Webinhalte durchsuchen und lesen kann (einschließlich möglicherweise Konfigurationen mit DB-Passwörtern usw.)
dkamins

1
(Siehe meine Antwort auf diese Frage unten, die eine viel komplexere Version dieser Antwort ist, die für diejenigen interessant sein kann, die paranoider in
Bezug auf

Wie können wir im Terminal sehen, womit beispielsweise WordPress installiert wurde (in Bezug auf seine eigenen Dateiberechtigungen), da WordPress seine eigenen Medien-Uploads schreiben kann ...
landete

5

Auf meinem 10.6-System:

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

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

1
Großartig, danke Steve, und für die Webdateien selbst? / Bibliothek / WebServer / Dokumente / Bibliothek / WebServer / Dokumente / [Datei] / Bibliothek / WebServer / Dokumente / [Verzeichnis]
Fo.

0

Der Benutzereigentümer ist für mich der Administrator und die Gruppe ist _www und arbeitet mit Berechtigungen, die für dir und für Dateien 664 auf 775 festgelegt sind


0

Catalina Update / Desktop-Berechtigungen

Ich stoße einmal im Jahr auf macOS darauf. Normalerweise verwende ich Apache2 zum Hosten eines Ordners auf meinem Desktop.

Wenn Sie versuchen, Zugriff auf die zu gewähren desktop Ordner zu gewähren, müssen Sie diesen Anweisungen folgen, damit httpd auf alle Ordner zugreifen kann: https://apple.stackexchange.com/a/373139/353465


-3

Öffnen Sie zuerst das Terminal und wechseln Sie dann in das Verzeichnis des Webservers

cd /Library/WebServer/Documents

und geben Sie dann das und was Sie tun werden , ist , dass Sie geben readund writeErlaubnis

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

Das wird sicher funktionieren!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.