
Meine Frage ist ähnlich wiedieses andere, außer dass nach neu erstellten Dateien gefragt wird.
In meiner Unix-Box, BenutzerAlice,BobUndKatersind in der GruppeKater.
Die Konfigurationsdateien des Tomcat-Servers sind Eigentum des Benutzers tomcat und befinden sich in der Gruppe tomcat.
Ich habe die Berechtigungen dieser Datei so geändert, dass sie von der Gruppe gelesen und geschrieben werden kann, damit Alice und Bob die Dateien bearbeiten können.
Mir ist jedoch aufgefallen, dass die Datei nach der Bearbeitung dem letzten Benutzer gehört, der sie bearbeitet hat.
Q:Ist es möglich, die Berechtigungen so zu ändern, dass Alice und Bob die Dateien bearbeiten können, ohne deren Eigentümer zu ändern?
Wie ändert sich durch das Bearbeiten einer Datei überhaupt deren Eigentümer?
Antwort1
Der resultierende Benutzerder Datei hängt davon ab, was der Editor macht. Einige Editoren speichern die Datei, indem sie sie kürzen und überschreiben (ohne den Inode zu ändern). Und einige Editoren benennen die Datei in einen anderen Namen um ( file
üblicherweise in file~
) und erstellen eine neue Datei mit dem Namen der Originaldatei. Beim Ändern der Originaldatei bleibt der Besitzer gleich, beim Erstellen einer neuen Datei erhält die neue Datei die UID des Erstellungsprozesses.
Von den Editoren, die ich unter Debian habe, scheinen auch nano
und ( die Minimalversion in ) direkt zu überschreiben. Ich vermute jedoch, dass und Emacs in ihrer Funktionsweise wahrscheinlich konfigurierbar sind.joe
nvi
vim
vim-tiny
vim
Stephen kommentiertAtomische Aktualisierungen. Das Problem bei der Neuerstellung vor Ort besteht darin, dass die Datei auf die Länge Null gekürzt und dann geschrieben wird. Ein anderer Prozess könnte sie öffnen und lesen, bevor alle Daten geschrieben sind.
Ein atomisches Update würde durchgeführt, indem die neue Version beispielsweise als erstellt und dann in file.new
umbenannt wird . Wenn man eine Sicherungsdatei hinterlässt, könnte man erstellen , auf verknüpfen und dann in umbenennen . Die Umbenennung ist atomar, da jeder Prozess, der die Datei über den Namen zugreift, entweder die alte oder die neue Version erhält, nichts dazwischen. Alle geöffneten Dateihandles verweisen natürlich auf die Datei, die geöffnet blieb, wodurch eine konsistente Ansicht der Datei gewährleistet wird.file.new
file
file.new
file
file~
file.new
file
Von demDateiberechtigungenAus technischer Sicht erfordert das Speichern über dieselbe Datei (Inode) Schreibzugriff auf die Datei selbst (aber nicht auf das Verzeichnis), das Umbenennen und Erstellen einer neuen Datei erfordert Schreibzugriff auf das Verzeichnis (aber nicht auf die Originaldatei).
(Umbenennen und Neuerstellen ist übrigens auch eine Möglichkeit, Dateiberechtigungen zu korrigieren, falls jemand eine Datei in einem freigegebenen Verzeichnis erstellt oder ändert, aber vergisst, der Gruppe Schreibzugriff darauf zu gewähren.)
Antwort2
AlserklärtvonAbonnieren, wenn der verwendete Editor beim Speichern eine neue Datei erstellt, dann gibt es keine Möglichkeit, dieEigentümerder Datei. Was Ihnen aber wahrscheinlich wirklich wichtig ist, ist sicherzustellen, dass die Dateien für Tomcat lesbar bleiben. Dies können Sie erreichen, indem Sie sicherstellen, dass ihre Gruppe tomcat
(und sie für ihre Gruppe lesbar sind) ist. Dies kann für neue Dateien erzwungen werden, indem Sie das setgid
Bit auf dem übergeordneten Element setzen.Verzeichnis:
chmod g+s .
Wenn also bob
eine Datei mit einem Editor bearbeitet wird, der die Datei neu erstellt, gehört die bearbeitete Datei Tomcat bob:tomcat
und Tomcat kann sie weiterhin lesen ( umask
zumindest mit einem typischen). Solange das übergeordnete Verzeichnis für die tomcat
Gruppe beschreibbar ist, kann jeder Benutzer in dieser Gruppe Dateien im Verzeichnis bearbeiten (wenn auch nur, indem er sie neu erstellt).
Ich würde jedoch empfehlen, Ihre Prozesse zu ändern. Sie sollten Dateien wahrscheinlich nicht direkt an dem Speicherort bearbeiten, von dem sie von Tomcat gelesen werden. Idealerweise würden die Dateien in einer Art VCS verwaltet und von einem separaten Prozess (möglicherweise automatisiert) bereitgestellt. Auf diese Weise vermeiden Sie all diese Eigentumsprobleme ...