Zwei setuid-Programme /usr/bin/bar
und /usr/bin/baz
teilen sich eine einzige Konfigurationsdatei foo
. Der Modus der Konfigurationsdatei ist 0640
, da er vertrauliche Informationen enthält. Das ein Programm läuft als bar:bar
(die, wie Benutzer bar, Gruppe bar ); der andere als baz:baz
. Das Ändern von Benutzern ist keine Option, und selbst das Ändern von Gruppen ist nicht vorzuziehen.
Ich möchte die einzelne Konfigurationsdatei als /etc/bar/foo
und fest verlinken /etc/baz/foo
. Dies schlägt jedoch fehl, da die Datei meines Wissens entweder zu root:bar
oder zu gehören muss root:baz
.
Mögliche Lösung: Erstellen Sie eine neue Gruppe, barbaz
deren Mitglieder bar
und sind baz
. Gehören foo
zu root:barbaz
.
Das sieht für mich nach einer ziemlich schwierigen Lösung aus. Gibt es keine bessere und einfachere Möglichkeit, die Konfigurationsdatei foo
zwischen den beiden Programmen zu teilen ?
Im Moment verwalte ich zwei identische Kopien der Datei. Das funktioniert, ist aber offensichtlich falsch. Was wäre richtig?
Zur Information: Ich habe wenig Erfahrung mit Unix-Gruppen und keine mit setgid (2).
ssl-cert
Gruppe, die so ziemlich Ihrebarbaz
Gruppe ist. Der Standard besteht darin, alle privaten Schlüssel sossl-cert
festzulegen, dass sie der Gruppe gehören, und die UIDs, die den Programmen zugeordnet sind, die auf sie zugreifen müssen, in diese Gruppe aufzunehmen.ssl-cert
dessen Postinst-Skript bei der Installation die Gruppe erstellt, von der Sie sprechen. Ich hatte es nicht gewusstssl-cert
. Apache2 (auf meinem Host installiert) empfiehltssl-cert
. Die verschiedenen Exim- und Dovecot-Pakete funktionieren nicht, aber Postfix (nicht auf meinem Host installiert) hängt davon abssl-cert
. Aufgrund von Apache hat mein Host eine SSL-Zertifikatsgruppe , aber diese Gruppe hat noch keine Mitglieder. Danke für den Hinweis.Antworten:
Sie können ACLs verwenden, damit die Datei von Personen in beiden Gruppen gelesen werden kann.
Jetzt können beide
bar
undbaz
Gruppen die Datei lesen.Hier ist zum Beispiel eine Datei von bin: bin im Modus 640.
Das
+
bedeutet, dass es einen ACL-Satz gibt. Schauen wir uns diesen an.Wir können die Zeile sehen
group:sweh:r--
: Das bedeutet, dass die Mitglieder der Gruppesweh
sie lesen können.Hey das bin ich!
Und ja, ich kann die Datei lesen.
quelle
Sie können diese Aussagen überdenken:
Warum ist es schwerfällig, eine neue Gruppe zu gründen? Dies hat folgende Vorteile gegenüber ACLs:
/usr/bin/bar
und formuliert haben/usr/bin/baz
, ist es relevant, dass diese beiden Programme eine Konfigurationsdatei gemeinsam nutzen können. Dies legt nahe, dass die Programme natürlich verwandt sind. Das Erstellen einer neuen Gruppe für sie scheint eine Beziehung zu beschreiben, die tatsächlich besteht, und sollte Verhalten auslösen (z. B. Berechtigungen zum Lesen der allgemeinen Konfigurationsdatei).Persönlich sehe ich ACLs als die schwerfällige Lösung und Gruppen als den einfacheren, traditionellen Unix-Weg.
quelle
Ich würde denken, dass dies eine typische Verwendung für Access Control Lists (ACLs) wäre. Fügen Sie der ACL der Konfigurationsdatei beide Benutzer (oder Gruppen) hinzu:
Möglicherweise müssen Sie zuerst das acl-Paket installieren.
quelle
Stellen Sie den Dateimodus
0660
(oder auch0440
wenn das Schreiben nicht erforderlich ist) und das Eigentumsrecht einbar:baz
. Dann kann ein Prozess dank Benutzerberechtigungen auf die Datei zugreifen, der andere dank Gruppenberechtigungen. Dies funktioniert auch auf Dateisystemen, in denen ACLs dies nicht tun.quelle
Die "neue" "Cloud" -Methode besteht darin, die gesamte Konfiguration von einem Konfigurationsverwaltungssystem (z. B. Chefkoch , Marionette oder Ansible ) verwalten zu lassen. In diesem Fall spielt es keine Rolle, dass Sie zwei unterschiedliche, aber identische Dateien auf dem Server haben, da beide eine Kopie der einzelnen Datei aus dem Konfigurationsverwaltungssystem sind.
Der Hauptvorteil dieser Vorgehensweise besteht darin, dass Ihre Konfiguration (zusammen mit allen anderen Konfigurationen) versioniert ist und die Bereitstellung eines neuen identischen oder nahezu identischen Servers so einfach wird, dass keine Automatisierung möglich ist.
(Da Sie das Konfigurationsmanagement nicht verwenden, würde ich für das Gruppensystem wie in der Antwort von @ drg vorgehen.)
quelle