Ich verwende die SSH-Arbeitsbereiche von Cloud9IDE und aus verschiedenen Gründen müssen wir diesen SSH-Tunnel als Root erstellen. Das ist kein wirkliches Problem, aber die Dateien und Verzeichnisse, die wir damit erstellen, befinden sich tatsächlich in einem Benutzerordner (in diesem Fall sagen wir, der Benutzer ist „foobar“, also werden die Dateien in /home/foobar/public_html/dev erstellt).
Das Problem besteht darin, dass die Dateien tatsächlich vom Benutzer „root“ erstellt werden und beim Navigieren zu diesen Dateien im Browser eine 404-Fehlermeldung zurückgegeben wird, da der Server den Benutzer „foobar“ zum Bereitstellen der Seiten verwendet.
Ich muss sicherstellen, dass der Benutzer foobar die Dateien, auch wenn sie vom Root-Benutzer erstellt wurden, so lesen und ausführen kann, als hätte dieser Benutzer sie erstellt.
Ich habe versucht, „setfacl -Rdm“ mit einer Gruppe zu verwenden, die „root“ und „foobar“ umfasst, und das führte dazu, dass „foobar“ keine Dateien mehr in seinem Verzeichnis bereitstellen konnte.
Zum Beispiel:
-rw-r--r-- 1 foobar foobar 125 May 15 11:26 die.html
-rw-r--r-- 1 root root 127 May 15 12:20 dies.html
In diesem Fall wird die Datei „die.html“ ordnungsgemäß bereitgestellt, „dies.html“ führt jedoch aufgrund des Eigentümers und der Gruppe zu einer 404-Fehlermeldung.
Gibt es Ideen, wie man das Problem lösen könnte? Noch einmal: Ich möchte, dass dies für alle zukünftigen Dateien geschieht, nicht nur für die Dateien, die bereits vorhanden sind.
Antwort1
Treffen Sie Ihre Wahl:
chown foobar:foobar *
chown foobar:foobar dies.html
chown foobar *
chown foobar dies.html
Damit alle erstellten Dateien foobar gehören, müssen Sie Folgendes tun:
Führen Sie es aus crontab -e
und geben Sie Folgendes ein:
* * * * * while true; do chown foobar:foobar -R /home/foobar/public_html/dev/* & sleep 1; done
Speichern Sie es und lassen Sie cron die Berechtigungen übernehmen
Antwort2
Ändern Sie Ihre Benutzeridentität in „foobar“, nachdem Sie den SSH-Tunnel durch Eingabe su foobar
und Eingabe des Kennworts von „foobar“ eingerichtet haben.
Antwort3
Erstellen Sie eine neue Gruppe, sagen wirEntwickler und fügen Sie alle Benutzer, die Lese-/Schreibzugriff auf Ihre Dateien benötigen, in diese Gruppe ein. Ändern Sie dann die Gruppe dieses Verzeichnisses inEntwickler.
Mit diesem Befehl:
chgrp -R devs /home/foobar/public_html/dev
Nach diesem SatzsetgidBit in diesem Verzeichnis mit diesem Befehl:
chmod -R g+s /home/foobar/public_html/dev
Ab diesem Zeitpunkt gehören alle in diesem Verzeichnis erstellten Dateien der GruppeEntwicklerund alle Benutzer in dieser Gruppe haben Lese-/Schreibzugriff auf die Dateien (abhängig von den Berechtigungen).
Wenn Sie wissen möchten, was setgid istÜberprüfen Sie diesen Link.