Ich konfiguriere eine Linux-Arbeitsstation, die von einer kleinen Anzahl von Benutzern (20-30) verwendet wird. Diese Benutzer gehören einer kleinen Gruppe von Gruppen (5-10) an, wobei jeder Benutzer mindestens einer Gruppe und möglicherweise mehreren Gruppen angehört. Auf der Arbeitsstation gibt es Dateien, die nur von Mitgliedern einer bestimmten Gruppe beschreibbar sein sollten. Jede Datei ist nur von Mitgliedern einer Gruppe beschreibbar, daher sollten Standard-Linux-Berechtigungen problemlos funktionieren. Ich habe zwei Fragen.
Wem sollten die bereits vorhandenen Dateien gehören? Ich dachte entweder darüber nach, root
oder ich erstelle eine Reihe von Dummy-Benutzern, die den Gruppen entsprechen. Gibt es eine bessere Wahl, die ich übersehen habe? Es scheint, dass dies keine einzigartige Situation ist, also hoffte ich, dass es eine Standardkonvention gibt.
Die zweite Frage ist, wo ich die Dateien ablegen soll. Wenn ich Dummy-Benutzer einrichte, könnte ich Unterverzeichnisse in erstellen /home/
. Wenn Root die Dateien besitzt, nehme ich dann /srv/groups/
oder vielleicht `/share/?? Gibt es auch hier eine Konvention?
Antwort1
Wem sollten die bereits vorhandenen Dateien gehören? Ich dachte entweder an Root oder an die Erstellung einer Reihe von Dummy-Benutzern, die den Gruppen entsprechen.
Wenn Sie sie root-eigen lassen, aber einer gemeinsamen Gruppe zuordnen, vorausgesetzt, die Dateien sind maskiert 0002 (d. h., sie sind gruppenbeschreibbar), hat das einen kleinen Vorteil, da es verhindert, dass sie versehentlich wieder in den Besitz von Benutzern gelangen, wenn Sie Benutzer erstellen, die den Gruppen entsprechen, und die Personen, die in den Gruppen sind, sich als dieser Benutzer anmelden können. Ich beziehe mich aufUnfallhier, weil ein böswilliger Benutzer in der Gruppe die Dateien natürlich sowieso löschen kann. Aber wenn sie root gehören (oder ein anderer Benutzerdas ist nicht die Gruppe), kann ein Gruppenmitglied zwar weiterhin in die Dateien schreiben (und sie somit löschen), die Berechtigungen jedoch nicht erneut erwerben oder ändern, sodass andere Gruppenmitglieder anschließend nicht mehr auf die Datei zugreifen können.
Die Verwendung einer Gruppe, aber ohne festen Eigentümer (d. h., Dateien können jedem gehören, sollten sich aber in der richtigen Gruppe mit Gruppenberechtigungen befinden) ist von Vorteil, wenn Benutzer Dateien erstellen (siehe unten).
Das Erstellen neuer Benutzer nur, um den Gruppen zu entsprechen, wird wahrscheinlich mehr potenzielle Probleme schaffen, als es tatsächlich löst. Wenn die Verwendung von Gruppenberechtigungen funktioniert, bleiben Sie dabei. Sie können auch einen kleinen Befehl für den Superuser erstellen:
#!/bin/sh
chown -R root:groupx $1
chmod -R g+w $1
Und verwenden Sie es foo /some/directory
. Dadurch wird sichergestellt, dass alles im Baum Eigentum root
der Gruppe ist groupx
und von der Gruppe beschreibbar ist.
Es gibt ein potentielles Problem, wenn man root
als Eigentümer verwendet, wenn root dann densetuidBit zu einer Datei hinzufügen, aber ich glaube, das kann nur der Besitzer. Wenn Sie wirklich besorgt sind, erstellen Sie einen Dummy-Benutzer – aber keinen, der der Gruppe entspricht. Einen, der keine Privilegien hat, den aber niemand verwenden kann.
Es gibt ein weiteres Problem mit Benutzern, die neue Dateien erstellen, die standardmäßig ihnen gehören. Sie können sie in die richtige Gruppe ändern, wodurch die Datei für andere zugänglich wird, aber sie können den Besitzer nicht ändern. Aus diesem Grund und weil Leute es vergessen könnten, sollten Sie es foo /some/directory
in regelmäßigen Abständen oder zu günstigen Zeitpunkten ausführen (z. B. wenn niemand angemeldet ist, da das Ändern des Besitzers die Software beeinflussen kann, die die Datei geöffnet hat).
Unter Berücksichtigung des letzten Absatzes könnte man einfach sagen:der Besitzer spielt überhaupt keine Rolleist nur die Gruppe wichtig. In diesem Fall foo
sollte der Befehl Folgendes verwenden:
chgrp -R groupx $1
anstatt chown
.
Wo soll ich die Dateien ablegen?
Das Erstellen einer /home/groupx
ist absolut in Ordnung, auch wenn groupx
es sich um eine Gruppe und nicht um einen Benutzer handelt. Das einzige potenzielle Problem wäre, wenn Sie dann einen Benutzer mit demselben Namen erstellen würden – aber das möchten Sie sowieso nicht. Legen Sie die Dateien dort ab und foo /home/groupx
…
Wenn Sie nicht möchten, dass Benutzer Dateien erstellen können, legen Sie das Verzeichnis auf 755 fest. Sie können dann weiterhin Dateien ändern, die ihrer Gruppe gehören.
Antwort2
Normalerweise gehören die Dateien in dieser Situation demjenigen, der sie zuletzt gespeichert hat (oder demjenigen, der sie erstellt hat, wenn sie mit einem Programm bearbeitet werden, das die vorhandene Datei ändert, anstatt eine neue Version zu erstellen). Wenn Sie einen Satz anfänglicher Dateien erstellen, würde ich sie Ihrem Konto überlassen, es sei denn, Sie legen Daten für eine Gruppe an, zu der Sie nicht gehören. In diesem Fall ist Root genauso gut wie jeder andere. Aber das ist keine große Sache.
Es gibt keine allgemeingültige Konvention für Daten, die weder Teil des Systems ( /usr
, /var
, /bin
, , /sbin
, /lib
, /etc
) noch Teil der Home-Verzeichnisse der Benutzer ( /home
) sind. Sie können unter weitere Verzeichnisse erstellen /home
oder diese woanders ablegen. /srv
ist grundsätzlich für von Servern verwendete Daten gedacht, aber als Systemadministrator können Sie dort ablegen, was Sie möchten. /net/MACHINENAME
ist eine beliebte Wahl für „verschiedene auf MACHINENAME gespeicherte Daten“ in Netzwerken, in denen Maschinen ihre Dateisysteme untereinander exportieren.