Ich hatte bisher Probleme mit Berechtigungen und habe eine andere Frage gestellt, aber das Problem identifiziert, ohne dass ich es noch beheben konnte.
Mein Setup:
- Ubuntu Desktop mit LAMP-Stack
- 5 "Benutzer" Ich habe Benutzer erstellt, die ich auf dem Ubuntu-Server mit erstellt habe
sudo useradd -r -s /bin/false USERNAME
und die für den Zugriff auf die freigegebenen lokalen Netzwerkordner verwendet werden, dh für die Computer in meinem Netzwerk, um eine Verbindung mit dem mit Samba freigegebenen Ordner / var / www herzustellen. - BEARBEITEN: Der Zweck ist es, eine Art "Master-Localhost" zu erstellen, auf dem alle Computer in meinem lokalen Netzwerk lokal auf derselben Website arbeiten können (ich habe KEINE statische IP-Adresse, sodass der Server nicht von einem anderen Ort aus erreichbar ist). .
Mein Problem:
Wenn ich /var/www/html
zurzeit auf einem Computer im Netzwerk einen neuen Ordner anlege (z. B. Ordner / var / www / html / testsite1), gehört dieser Ordner automatisch boris:www-data
("boris" ist der Hauptadministrator auf meiner Ubuntu-Desktop-Installation) , und es zeigt in der Tat boris: www-Daten beim Ausführen ls -l
auf dem neu erstellten Ordner), was Probleme mit meinem aktuellen Setup verursacht (mit Duplicator Plugin für WordPress von LifeInTheGrid meistens). Allerdings sind sowohl meine /var/www
als auch meine /var/www/html
im Besitz vonwww-data:www-data
Daher würde ich gerne wissen, wie ich:
Eigentümer in www-Daten ändern: www-Daten aller Dateien UND Verzeichnisse unter / var / www und / var / www / html
Stellen Sie sicher, dass alle Dateien oder Ordner, die ich mit einem der Benutzer meines Netzwerks erstelle, automatisch im Besitz von www-data sind: www-data (Dies schließt Dateien ein, die automatisch von PHP-Skripten erstellt werden, wie es das Duplicator-Plugin tut, wenn ich es bin nicht falsch).
Gibt es eine Möglichkeit, das zu tun?
Hinweis: Ich bin ein Super-Neuling in Sachen Linux und Kommandozeilen, aber ich hole schnell nach.
Hinweis 2: umask ist bereits auf 0002 eingestellt
BEARBEITEN:
Versuchte dies:
sudo chown -R www-data:www-data /var/www/
Und dann setuid und setgid Bits, indem Sie dies tun:
sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html
Dann abgemeldet, Apache neu gestartet und versucht, einen neuen Ordner mit einem Mac zu erstellen, der über die Netzwerk-IP (lokale IP, nicht statisch) mit meinem Server verbunden ist.
Ich rannte
ls -l on /var/www/html
Ausgabe ist noch:
drwxr-sr-x 2 boris www-data testsite1
Hinweis:
Ich habe meine Apache-Konfiguration schon einmal überprüft und es ist bereits festgelegt auf:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
BEARBEITEN: Ich habe es rückwärts versucht, z. B. alles eingerichtet, was boris gehört: www-data und meine envvars apache config auf boris: www-data gesetzt. ES FUNKTIONIERTE!
Folgendes habe ich getan:
Geändert von envvars zu
export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data
Ran
sudo chown -R boris:www-data /var/www/
Apachem neu gestartet, einen neuen Ordner erstellt, meine Dateien hinzugefügt, das Plugin ausgeführt, jetzt heißt es gut !!!
quelle
Antworten:
Antwort auf Frage 1: Rekursiv
chown
Mit einer rekursiven
chown
Methode können Sie den Besitz und die Gruppe auf das festlegen, was Sie möchten/var/www/...
. Dies ist der Befehl, den Sie verwenden sollten:Damit wird jede Datei und jeder Ordner dort mit diesen Eigentumsrechten als solche festgelegt.
Halbe Antwort auf Frage 2:
setgid
BitWenn Sie die Standardgruppenzugehörigkeit für Dateien wünschen, setzen Sie das
setgid
Bit für den/var/www/html
Ordner. Neue Dateien sollten dann mit dieser Gruppe wie im Ordner angegeben erstellt werden.Sie müssen jedoch Schreibberechtigungen festlegen, wenn ein Benutzer ANDERE als
www-data
in die Verzeichnisse schreibt, und dies kann zu Sicherheitslücken führen, wenn Sie nicht vorsichtig sind.Sie haben am Ende die folgenden Berechtigungen
$USER:www-data
: Zum Ändern des Besitzers verwenden Sie dann eine,chown
wie in Methode 1 angegeben (dh, Sie sollten bei einer ordnungsgemäßen Einrichtung für den Zugriff auf die Webdateien auf Gruppen- und nicht auf Benutzerberechtigungen vertrauen).PHP Wordpress Duplicator Problem
Das Problem mit den Berechtigungen ist, dass der Benutzer / die Gruppe PHP so ausführt, wie es das Schreiben und Lesen erfordert und wahrscheinlich
+x
die Verzeichnisstruktur und dergleichen bearbeitet.PHP
www-data
wird standardmäßig in Ubuntu-Installationen ausgeführt, die die Standardkonfigurationen verwenden. Idealerweise würden Ihre obigen Schritte das Problem beheben, da das Duplicator-Plugin kein PHP-Plugin ist.Im Idealfall sollten Sie auch die Dokumentation für das Duplicator-Plugin überprüfen, um zu überprüfen, welche Berechtigungen für die Ausführung und die Arbeit erforderlich sind.
quelle
Um sicherzustellen, dass alle Dateien oder Ordner, die Sie erstellen,
/var/www/html
automatisch in den Besitz von WWW-Daten gelangen, die Sie verwenden könneninotify
, werden Ordner / Dateien wie bei cron auf Änderungen an Attributen, Dateierstellungen, Änderungen und vielem mehr überwacht.Zuerst installieren Sie es mit:
Erlaube root die Verwendung
incron
durch Öffnen/etc/incron.allow
mit:und
root
zur Datei hinzufügen , dann speichern und beenden.Bearbeiten Sie Ihre Incrontab mit:
und füge die folgende Zeile hinzu:
speichern und schließen.
Sobald eine Datei im
/var/www/html
Verzeichnis erstellt wird, wird automatisch die Mitgliedschaft auf festgelegtwww-data:www-data
.Erklärung der Zeile in Incrontab:
/var/www/html
ist das Verzeichnis, das überwacht wird.IN_CREATE
wird nach erstellten Dateien suchen. Es ist die Dateiänderungsmaske ./bin/chown -R www-data:www-data /var/www/html/
ist der auszuführende Befehl / die auszuführende Aktion.quelle
./html
ist hier impliziert (als Teil von / var / www /)-R
macht es rekursiv (so werden alle Verzeichnisse durchlaufen/var/www/
).Setze deine Apache-Konfiguration auf www-data. Sehen
/etc/apache2/envvars
Sie müssen Apache neu starten, nachdem Sie this (
sudo service apache restart
) bearbeitet haben .Das Problem hier ist wohl nicht das Plugin sondern PHP. Der Benutzer sollte derselbe Prozess sein, unter dem PHP ausgeführt wird. Sie müssen das also wahrscheinlich auch auf www-data setzen, wenn dies Ihr Benutzer und Ihre Gruppe sind (
/etc/php5/apache2/php.ini
).quelle
www-data
wie Debian, glaube ich./var/www/html
auch Gruppenbesitz und Lese- / Schreibrechten. Das andere Problem ist, dass alle von einem Benutzer erstellten Dateien vorhanden sein sollenwww-data:www-data
. Vermutlich sind dies Netzwerkbenutzer , nicht die Wordpress-Benutzer. Sie müssen also Linux-Dateiberechtigungen beantragen.Ich habe es gelöst! Ich denke immer noch, dass es ein Apache-Envvars-Problem war, aber ich bin mir nicht sicher, ob das das Problem wirklich gelöst hat.
Geändert von envvars zu
Ran
Jetzt funktioniert es soweit. Wird weiter testen ...
quelle