![WWW-Datengruppe nach SFTP schreiben?](https://rvso.com/image/1413926/WWW-Datengruppe%20nach%20SFTP%20schreiben%3F.png)
Ich möchte, dass mein Apache-Benutzer Dateien lesen und schreiben kann, dass meine SFTP-Benutzer Dateien hochladen können, die dann sowohl anderen SFTP-Benutzern als auch Apache zur Verfügung stehen (rwX), und dass für alle anderen das Lesen ok ist.
psst: I know this question comes up a lot, and I've been reading answers and trying many many things for two days now and am now thoroughly confused
. AußerdemIch bin mir der Sicherheitsrisiken bewusst, die mit dem Schreibzugriff auf WWW-Daten auf meiner Site verbunden sind, aber das ist nicht das Thema, das ich hier diskutieren möchte.
Hier sind meine Schritte:
usermod -aG www-data tim
mkdir -p /var/www/mysite/public_html
# now upload/untar the site, etc. not shown here #
chown -R www-data:www-data /var/www/mysite
chmod -R u+rwX,go+rwX,g+s,o-w /var/www/mysite
# now make the apache virtual host and so on .. not shown here #
Die Dateien darin public_html
sind folgendermaßen eingestellt - die Gruppe hat Schreibrechte:
-rw-rwSr-- 1 www-data www-data favicon.ico
Jetzt melde ich mich mit meinem „tim“-Konto über SFTP an, lade eine neue Datei in den Ordner „public_html“ hoch und schaue mir dann ihre Berechtigungen an:
-rw-r--r-- 1 tim wwww-data COPYING.txt
Ich habeverlorenGruppe SCHREIBEN, obwohl ich dachte, ich hätte es g+s
dem übergeordneten Ordner hinzugefügt, damit dieser die Gruppe erbt.
Offensichtlich bedeutet dies nicht, dass es auch die Gruppe /mask/ erbt. Ich habe irgendwo gelesen (und den Bezug verloren), dass SFTP die Umask nicht berücksichtigt; dort scheinen die Berechtigungen verloren zu gehen, aber ich weiß nicht, wie ich das beheben kann.
bearbeiten habe die Umask-Referenz gefunden und es ausprobiert -http://john.parnefjord.se/node/62– kann sehen, dass die Datei beim Anmelden ausgeführt wird, aber die Maske ist nach einem Upload immer noch nicht auf g+w eingestellt.
Antwort1
Ich habe nicht viel geprüft, aber ich habe es 2–3 Mal mit unterschiedlichen Gruppenberechtigungen auf einem lokalen Server versucht.
Was ich hier bekomme ist, dass, welche Berechtigungen auch immer der Datei auf dem lokalen System gegeben werden,genau die gleichen Berechtigungendurch die Datei auf dem Remote-Server erhalten.
Antwort2
Wenn ein Prozess unter Unix eine Datei erstellt, steuert der Prozess, welche Berechtigungen der Datei zugewiesen werden. Der Prozess gibt im Systemaufruf zur Dateierstellung einen Satz von Berechtigungen an, normalerweise 0666 oder 0777. Die Berechtigungen werden durch die Umask des Prozesses geändert, um die tatsächlichen Berechtigungen für die Datei zu erzeugen. Spezielle Flags im übergeordneten Verzeichnis sind nicht Teil dieses Prozesses. Ein Prozess kann die Berechtigungen einer vorhandenen Datei auch durch einen anderen Systemaufruf namens ändern chmod()
.
SFTP ist eigentlich ein Remote-Dateisystemprotokoll. Wenn ein Client eine Datei auf einem Server erstellt, kann er dem Server genau mitteilen, welche Berechtigungen er der neuen Datei erteilen soll. Der Client kann auch chmod()
remote aufrufen, um die Berechtigungen für vorhandene Dateien zu ändern. Soweit mir bekannt ist, bietet der OpenSSH SFTP-Server dem Serveradministrator keine Möglichkeit, dies einzuschränken.
Ich würde wahrscheinlich ein Shell-Skript schreiben, das den Ordner durchsucht und die Dateiberechtigungen korrigiert. Sie könnten das Skript cron
alle paar Minuten ausführen. So etwas wie das Folgende sollte Ihnen den Einstieg erleichtern:
#!/bin/sh
cd /var/www/mysite || exit 1
find . -type f ! -perm 0664 -exec chmod 0664 '{}' ';'