Wie stelle ich als Root erstellte Dateien und Verzeichnisse so ein, dass sie von einem anderen Benutzer gelesen und ausgeführt werden können?

Wie stelle ich als Root erstellte Dateien und Verzeichnisse so ein, dass sie von einem anderen Benutzer gelesen und ausgeführt werden können?

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 -eund 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 foobarund 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.

verwandte Informationen