Ich weiß, dass hier bereits Dateiberechtigungen behandelt wurden, aber ich habe Mühe, mich mit dem Konzept für mein Szenario vertraut zu machen.
- Ich habe die Dateien auf einer alten Ubuntu-Installation erstellt.
- Ich habe die Dateien in meine neue Ubuntu-Installation kopiert und in mein Webroot gestellt.
- Wenn ich versuche, die Akten (theyre PHP Akten) laufen zu lassen, erhalte ich eine Störung in Bezug auf Berechtigungen
In einem Versuch, dies zu beheben, ging ich davon aus, dass sie noch im Besitz des Vorbesitzers sein müssen. Daher habe ich chown -R
das Verzeichnis mit meinem Benutzernamen als Argument durchsucht, um den Besitz aller Dateien im Verzeichnis zu übernehmen. Es sollte beachtet werden, dass die Benutzernamen zwischen neuen und alten Ubuntu-Installationen gleich waren.
Wenn ich versuche, die Dateien erneut auszuführen, tritt das gleiche Problem auf: Fehler 500 aufgrund von Berechtigungsproblemen. Kann mir jemand sagen, welche anderen Schritte ich unternehmen sollte?
Das Webroot für meine Apache-Installation befindet sich in meinem Home-Ordner. Wenn ich neue Dateien in meinem Webroot erstelle, funktionieren diese auch wie erwartet. Es sind nur die alten Dateien, die das Problem verursachen.
quelle
chmod -R 777 dir
auf dem fraglichen Verzeichnis lief. Ich kann gar nicht anders, als zu denken, dass es eine bessere Möglichkeit gibtAntworten:
In den Verzeichnissen über Ihrem Webroot sollte das Ausführungsbit gesetzt sein, damit Apache in die Verzeichnisse gelangen kann.
Wenn Sie Ihr Webroot an sich
/home/user/htdocs
, die/
,/home
,/home/user
und/home/user/htdocs
sollte das Bit gesetzt auszuführen haben.Die obige Lösung "funktioniert", ist aber nicht ideal. Wenn Sie einen Ordner erstellt haben, kann Apache nicht darauf schreiben. Das Gegenteil passiert auch.
Dies kann "behoben" werden, indem Sie umask 0007 einstellen und sich der Apache-Gruppe hinzufügen (www-Daten, wenn ich mich nicht irre), sodass neu erstellte Dateien und Ordner von der Gruppe beschrieben werden können.
Alternativ können Sie ein alternatives Apache MPM installieren: Apache2 MPM ITK ( Informationen zur Konfiguration ) und die Konfiguration so anpassen, dass Apache unter Ihrem Benutzer ausgeführt wird.
quelle
Wenn sich Ihre Serverdokumente im
/home/$USER/public_html
Verzeichnis befinden, müssen Sie ausführenum dem Benutzer
www-data
und der Gruppe den Besitz des DocumentRoot-Ordners zu gebenwww-data
.Dann können Sie sich der Gruppe hinzufügen
www-data
Schließlich müssen Sie den DocumentRoot-Ordner für den Eigentümer (www-data-Benutzer) und für sich selbst (als Teil der
www-data
Gruppe) beschreibbar machen:Der Einfachheit halber können Sie Skripte
public_html_fix.sh
mit folgenden Inhalten erstellen:Speichern Sie es in
/home/$USER/bin
und machen Sie es ausführbar mit:Dann rufen Sie es auf, wann immer Sie es brauchen, von wo auch immer Sie sich auf dem Dateisystem befinden:
quelle
www-data
Gruppe daran hindern, Ihre Dateien zu lesen oder in diese zu schreiben?chmod -R 775 /home/$USER/public_html
wirklich schrecklich.find /home/$USER/public_html -type d -exec chmod 775 {} \;
undfind /home/$USER/public_html -type f -exec chmod 664 {} \;
ist viel besserAbgesehen davon, dass ich Dateien chmodiert und Apache .conf-Dateien bearbeitet habe, wollte ich sagen, dass bei mir nichts funktioniert hat, da sich meine Dateien auf einer Partition befanden, die ich über Nautilus automatisch gemountet hatte. Dies begrenzt die Partition nur für Ihren Benutzer.
So überprüfen Sie, ob Ihre Dateien von angezeigt werden
www-root
ps -aux | grep apache2
Führen Sie den folgenden Befehl aus, um Apache-Benutzer oder welcher Benutzer Apache ausführt (run to check):und versuchen Sie, eine Datei aus Ihrem Dokumentenstamm zu lesen.
Wenn die Datei nicht lesbar ist, überprüfen Sie Folgendes:
1) Sie haben alle anderen Dateiberechtigungen festgelegt
2) Sie haben verwendet
FollowSymlinks
.conf
bei Bedarf in Ihren Dateien verwendet3) Sie haben DocumentRoot eingerichtet
3) Hängen Sie Ihre Partition für alle Benutzer ein. Ich musste
/etc/fstab
meine Partition über die UUID bearbeiten und angeben:Dann hänge deine Partition über Nautilus aus und mache a
sudo mount -a
. Wenn alles gut geht, sind Ihre Dateien jetzt unter/mnt
. Aktualisieren Sie Ihre Symlinks und Sie können loslegen.quelle
Ich habe festgestellt, dass dies am besten immer so eingerichtet ist, wie VirtualMin es tut.
Erstelle Benutzer und Gruppe "myhome"
Machen Sie einen Apache-Benutzer zu einem Mitglied der Gruppe "myhome". Nicht anders herum, wie in einigen Erklärungen beschrieben
Damit hat Apache nun zusätzlich zu / home / myhome / www den Zugriff auf / home / myhome / myhome gelesen und ausgeführt
Der Benutzer "myhome" hat Schreibzugriff
quelle
www-data
gehört zur Gruppemyhome
. Alle Dateien und Verzeichnisse haben Gruppenschreibberechtigungen und gehören zumyhome:myhome
. Ich habe Apache neu gestartet. Apache kann immer noch keine neuen Dateien und Ordner schreiben. (PHP-Skript mit www-Daten: www-Daten Benutzer / Gruppe)