Ich habe lokal eine Dokuwiki-Installation, die ich regelmäßig mit rsync mit meinem Server synchronisiere. Ich werde auch einem Freund von mir einen SSH-Account geben und seine öffentliche Dokuwiki-Installation hosten. Ich habe jedoch ein Problem mit Zugriffsberechtigungen - obwohl der Spiegel schreibgeschützt ist, benötigt Dokuwiki weiterhin Schreibberechtigungen für das Datenverzeichnis für den Cache usw. Der Apache-Server wird jedes Mal als Benutzer-WWW-Daten ausgeführt Bei einem rsync werden die Berechtigungen zurückgesetzt.
Basierend auf einigen anderen Antworten auf dieser Site habe ich versucht, mit setfacl Standardberechtigungen festzulegen, aber es scheint nicht zu funktionieren - getfacl zeigt an, dass die Berechtigungen vorhanden sind, Dokuwiki jedoch nicht ausgeführt wird und wenn ich versuche, eine Datei als zu schreiben Benutzer www-Daten, es funktioniert auch nicht. Was vermisse ich?
wiki/data$ sudo su www-data
$ pwd
/var/www/wiki/data
$ whoami
www-data
$ touch hi
touch: cannot touch `hi': Permission denied
$ getfacl /var/www/wiki/data
getfacl: Removing leading '/' from absolute path names
# file: var/www/wiki/data
# owner: stian
# group: admin
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Hier ist der Befehl, mit dem ich die Berechtigungen festgelegt habe:
setfacl -R -d -m u:www-data:7 /var/www/*
quelle
Antworten:
Problem Nr. 1: Rsync löscht ACLs
Nach dem Anwenden der ACL-Berechtigungen müssen Sie darauf achten, dass Sie bei der Ausführung
rsync
entweder den Schalter-A
oder verwenden--acls
. Dies weist Siersync
an, diese bei der Synchronisierung beizubehalten.Auszug aus der rsync-Manpage
Problem Nr. 2: Keine ACL-Berechtigungen
Wenn Sie sich Ihr Beispiel ansehen, enthält es die folgenden Berechtigungen.
traditionelle Dauerwellen
ACLs
Diese ACLs dienen jedoch zum Erstellen neuer Objekte und funktionieren nicht genau so, wie Sie denken. Sie müssen
www-data
zusätzlich zu den Standard-ACL-Berechtigungen noch einen Eintrag für den Benutzer erstellen .Beispiel
Ein Experiment
Versuchen wir nun,
data
als Benutzer eine Datei in das Verzeichnis zu schreibengopher
.Ähnlich aussehend?
Hinzufügen zusätzlicher ACL-Berechtigungen
Dies liegt daran, dass Sie eine ACL für den Benutzer hinzufügen
www-data
müssen. Die Standardregeln gelten nicht für den Zugriff, sondern für das Erstellen neuer Dateien / Verzeichnisse.Überprüfen Sie nun das
data
Verzeichnis erneut:Der einzige Unterschied haben wir jetzt eine ACL sagen , dass Benutzer
gopher
hatrwx
Zugriff:Wiederholen Sie den Versuch
Versuchen Sie erneut, Daten in das Verzeichnis zu schreiben:
Es funktionierte!!! Überprüfen Sie die resultierende Datei:
quelle
stian
, nichtwww-data
. Die Standard-ACLs werden nur auf neu erstellte Dateien angewendet. rsync legt die Berechtigungen basierend auf den Berechtigungen auf der Quellseite fest.rsync -A
kopiert ACLs, wenn Sie dieselben ACLs auf dem Quellcomputer haben. Ist dies der Fall?