Apache-Berechtigungen

1

Ich versuche LAMP auf OSx Lion zum Laufen zu bringen und habe ein paar Probleme.

Haben Apache, MySQL und PHP eingerichtet und funktionieren einwandfrei. Habe unter Sharing in den Einstellungen "Website" aktiviert. Der ursprüngliche Ordner ~ / benutzername / Sites wurde entfernt und eine symbolische Verknüpfung von Sites mit einem Verzeichnis ohne ~ / benutzername erstellt.

Wenn ich nun versuche, http: // localhost / ~ user_name auszuführen , erhalte ich:

Verboten Sie haben keine Berechtigung, auf / ~ Benutzername auf diesem Server zuzugreifen.

Wo und wie ändere ich diese Berechtigungen?

David
quelle
1
Ich kann MAMP nur empfehlen , das ist wie LAMP, aber speziell für den Mac. Ich habe es oft ohne Berechtigungsprobleme benutzt.
Nathan Greenstein
Apache folgt standardmäßig keinen Symlinks. Bevor wir jedoch versuchen, dieses Problem zu lösen, sollten wir zunächst die Grundeinstellungen vornehmen. Können Sie den ~/SitesOrdner neu erstellen, mindestens eine HTML-Datei darin erstellen und versuchen, über darauf zuzugreifen http://localhost/~user/the-file.html?
Nohillside
Danke, @patrix. Das funktioniert gut. Die Sym-Links wurden gelöscht und ich kann problemlos auf localhost / ~ user / test.html zugreifen.
David
Dies funktionierte schließlich, indem in httpd.conf die folgenden Optionen geändert wurden: <Directory /> -Indexes Includes FollowSymLinks MultiViews AllowOverride None Optionen Order allow, deny Allow from all </ Directory>
David
/Library/WebServer/DocumentsBehalten Sie einfach den Standard-Dokumentenstamm ( ) bei und erstellen Sie einen Symlink dazu in Ihrem privaten Ordner.
Abhi Beckert

Antworten:

2

Für den Zugriff auf Websites auf Ihrem "localhost" sind mehrere Berechtigungen erforderlich. Der Inhalt von localhost befindet sich möglicherweise in Ihrem Sites-Verzeichnis. In diesem Fall können diese Befehle dazu beitragen, dass keine "verbotenen" Nachrichten angezeigt werden.

Stellen Sie sicher, dass das Benutzerverzeichnis den Zugriff auf das Leseverzeichnis ermöglicht:

cd /
sudo chmod -v 755 Users

Stellen Sie sicher, dass das Benutzernamenverzeichnis den Zugriff auf das Leseverzeichnis ermöglicht:

cd Users
sudo chmod -v 755 username

Stellen Sie sicher, dass Ihr Sites-Verzeichnis den Zugriff auf das Leseverzeichnis zulässt:

cd ~
chmod -v 755 Sites

Jedes Unterverzeichnis von Sites benötigt Lesezugriff:

cd ~/Sites
find ~/Sites -type d -print -exec chmod 755 {} \;

Jede Datei in Sites und Unterverzeichnissen benötigt Lesezugriff:

cd ~/Sites
fing ~/Sites -type f -print -exec chmod 644 {} \;

Apache verwendet die Gruppe _www. Um Apache vollständigen Zugriff auf alle Elemente im Verzeichnis Sites zu gewähren, legen Sie die erweiterten Attribute folgendermaßen fest:

chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" ~/Sites
Tom Jones
quelle
1

Vorausgesetzt, nur wenige Benutzer verwenden OS X in einer Produktionsumgebung, ist es hilfreich, Apache mit dem Dokumentstamm das tun zu lassen, was es will. Sie können dies mit der "Vererbungs" -Funktion von ACLs tun:

sudo chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

Mit dem obigen Befehl erhält die Standard-Apache-Gruppe vollständigen Lese- / Schreibzugriff auf alle Elemente im Standard-Dokumentenstamm und es werden "Vererbungs" -Flags angewendet, sodass alle neu erstellten Dateien / Verzeichnisse auch von Apache beschrieben werden können, selbst wenn Apache sie nicht erstellt hat.

Ich möchte auch diesen Befehl ausführen:

sudo chmod -R +a "group:staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

Dadurch erhalten "Mitarbeiter" -Nutzer (im Grunde genommen alle "echten" Benutzer) uneingeschränkten Zugriff auf alles, auch auf von Apache erstellte Dateien.

Abhi Beckert
quelle
-1

Sie können chmoddie Berechtigungen für den Ordner festlegen, in dem sich Ihre Site befindet. Vergewissern Sie sich, dass der Benutzer Apache ausgeführt wird, da er möglicherweise irgendetwas in diesem Ordner liest.

  1. Terminal öffnen
  2. cd /path/to/website
  3. chmod -r 644 .

Das sollte es tun. Beachten Sie, dass dies Ihre PHP-Quelldateien für jedermann lesbar macht.

Mikezter
quelle
Diese Berechtigungen (466) sind wirklich wirklich falsch. Sie gewähren dem Benutzer nur Lesezugriff, allen anderen jedoch Lese- und Schreibzugriff. Abgesehen davon, dass sie niemandem erlauben, auf die Verzeichnisse zuzugreifen (auch als Suche bezeichnet), kann niemand auf die darin enthaltenen Dateien zugreifen (nur lesen und vielleicht ihre Namen schreiben).
Gordon Davisson
Ich denke du meinst chmod 644
Andrew Vit
1
644 ist sinnvoller, lässt aber dennoch den Ausführungszugriff aus (für Verzeichnisse erforderlich). chmod -R u=rwX,go=rX .würde funktionieren, weil chmod die "X" -Zulassung als "x, wenn es Sinn macht" behandelt.
Gordon Davisson