Besitzer in einem eigenen Verzeichnis ändern

586
ôkio

Ich habe ein Skript, das mit dem Benutzer ausgeführt user1:user1wird und Vorgänge in einem Verzeichnis ausführt dir. Am Ende des Skripts möchte ich chown verwenden, um den Besitzer des Skripts in zu ändernuser2:user2

Aber es geht nicht. Ich habe die gleiche Operation ausprobiert, als Benutzer1 angemeldet:

$ ls -l drwxr-xr-x 5 user1 user1 4096 Jan 11 10:58 dir $ chown -R user2:user2 dir chown: changing ownership of dir: Operation not permitted 

Warum kann ich den Besitzer meiner eigenen Dateien / Repertorien nicht ändern? Gibt es eine andere Möglichkeit als einen Root-Zugriff, um dies zu tun?

AKTUALISIEREN

Das Skript erstellt einen Git-Klon und dann ein Rsync mit einem Apache-Verzeichnis. Neue Dateien haben für den Besitzer den aktuellen Benutzer, aber ich muss stattdessen Apache sein.

0
Mögliches Duplikat von [chown - Operation nicht zulässig] (http://superuser.com/questions/697608/chown-operation-not-permitted) a CVn vor 8 Jahren 2
Auch relevant: [Warum kann ein normaler Benutzer eine Datei nicht "chown"?] (Http://unix.stackexchange.com/q/27350/2465) auf [unix.se] a CVn vor 8 Jahren 1
Es scheint mir eine eher * elementare * Sicherheitsmaßnahme zu sein: Wenn dies nicht der Fall ist, könnte ich nach Belieben den Besitz infizierter Dateien auf andere Benutzer übertragen. MariusMatutiae vor 8 Jahren 0

1 Antwort auf die Frage

2
nKn

Der chownBefehl ist nur rootaus Sicherheitsgründen verfügbar. Wenn Sie dies tun möchten, müssen Sie ihn als root ausführen.

Es gibt zwei Dinge, die mir in den Sinn kommen, die Sie tun können:

  • Nutze das SETUIDbisschen. Auf diese Weise erlauben Sie Benutzern, das Skript so auszuführen, wie rootdies auch der Fall ist (je nach Funktion des Skripts auch Sicherheitsbedenken). Mehr dazu hier .

  • Sie können auch eine aufgabenbasierte Warteschlange erstellen (z. B. mit redis ). Das Skript fügte bei der Ausführung einen Wert in die Warteschlange ein, und ein Skript wurde so ausgeführt root, dass es die Warteschlange liest und alle erforderlichen Änderungen vornimmt (in Ihrem Fall chownfür diese Datei verwenden).

Danke für deine Antwort. Ich habe meinen Beitrag mit den Details des Skripts aktualisiert. Ich habe versucht, das "chmod-Skript" zu erstellen, aber es ändert nichts. Ist dies der richtige Weg, um es zu benutzen? ôkio vor 8 Jahren 0
Führen Sie das Skript als root aus? Wenn nicht, macht es nichts Ramhound vor 8 Jahren 0
Sie müssten den Besitzer in "root" ändern. Wenn es als nicht-root ausgeführt wird, wird es effektiv als "root" anstelle des Benutzers ausgeführt, der das Skript aufgerufen hat. nKn vor 8 Jahren 0