Wie soll ein Debian-Paket Benutzerkonten erstellen?

33

Das Paket qqq.debinstalliert das Programm qqq, das vom uqqqBenutzerkonto ausgeführt werden soll. Das Paket besteht aus dem qqqProgramm, der qqq.confKonfigurationsdatei und /etc/init.d/qqqInitscript.

Wie soll das Paket die Erstellung von Benutzern verwalten uqqq? Gibt es hierzu Best Practices oder offizielle Richtlinien?

  1. uqqqLegen Sie den Benutzer einfach automatisch in postinst an;
  2. Erstellen Sie den Benutzer automatisch beim ersten Start aus dem /etc/init.d/qqqSkript heraus.
  3. Legen Sie den Benutzer beim ersten qqqProgrammstart automatisch an (ohne Argumente)
  4. Erstellen Sie keine Benutzerkonten, und lehnen Sie den Start ab, es sei denn, der Benutzer wurde ausdrücklich vom Administrator erstellt (z. B. mit qqq --create-user).
  5. Erstelle keine Benutzerkonten, starte standardmäßig unsicher von root aus.
  6. Fragen Sie interaktiv in postinst, im init.d-Skript oder qqqselbst, ob Sie einen Benutzer anlegen möchten .

Sollte das Paket das Benutzerkonto bei der Deinstallation entfernen?

Vi.
quelle
7
Der einfachste Weg, um zu den Antworten auf diese Frage zu gelangen, besteht darin, Skripte von offiziellen Debian-Paketen vor / nach der Installation zu lesen. Führen Sie einfach ein grep adduser /var/lib/dpkg/info/*.postinstbeliebiges Debian-basiertes System aus, um viele Beispiele zu erhalten.
Jofel
Wann adduseres verwendet wird, muss auch von der Verpackung abhängen. Siehe: lintian.debian.org/tags/…
Lekensteyn

Antworten:

22

Das Debian-Wiki enthält einige umfassendere und spezifischere Anleitungen als das bereits erwähnte Debian-Richtlinienhandbuch. Siehe AccountHandlingInMaintainerScripts :

Das Programm adduser macht das Richtige, wenn es mit der Option --system aufgerufen wird. Es ist daher in der Regel nur ein Anruf erforderlich

adduser --system $ USERNAME

In Ihrem Postinst erstellen Sie das Konto mit deaktivierten Logins, einer primären Gruppe von Nogroup und einem Home-Verzeichnis unter / home. Wenn Sie andere Optionen wünschen, fügen Sie diese wie gewünscht hinzu.

Normalerweise sollte es nicht notwendig sein, mit getent abzustimmen, ob ein Account bereits existiert, da adduser --system im Allgemeinen das Richtige tut. Wenn nicht, melden Sie bitte einen Fehler gegen adduser, um Ihre Betreuerskripte einfach zu halten.

Die darin enthaltenen Ratschläge zum Löschen von Konten sind nicht schlüssig. Ich werde jedoch feststellen, dass die entsprechenden Ratschläge für Fedora nicht eindeutig sind.

Entfernen Sie keine Benutzer oder Gruppen. Wir entfernen niemals Benutzer oder Gruppen, die von Paketen erstellt wurden. Es gibt keine vernünftige Möglichkeit, zu überprüfen, ob Dateien, deren Eigentümer diese Benutzer / Gruppen sind, zurückgelassen werden (und selbst wenn dies der Fall ist, was würden wir mit ihnen tun?). Wenn Sie diese Dateien mit Eigentümern zurücklassen, die auf nicht vorhandene Benutzer / Gruppen verweisen, kann dies zu Sicherheitsproblemen führen Wenn ein semantisch nicht verwandter Benutzer / eine semantisch nicht verwandte Gruppe später erstellt wird und die UID / GID wiederverwendet. In einigen Setups ist das Löschen des Benutzers / der Gruppe möglicherweise nicht möglich oder / und auch nicht wünschenswert (z. B. bei Verwendung einer gemeinsam genutzten entfernten Benutzer- / Gruppendatenbank). Die Bereinigung nicht verwendeter Benutzer / Gruppen bleibt den Systemadministratoren überlassen, um sie zu kümmern, wenn sie dies wünschen.

fuzzyBSc
quelle
12

Als Administrator, der Pakete installiert, erwarte ich von meinen Paketen, dass sie automatisch die Benutzer erstellen, die sie entweder vor oder nach der Installation benötigen, damit alle Dateien, deren Eigentümer der Benutzer sein muss, erstellt werden können, bevor das Programm ausgeführt wird.

Ihr Programm sollte nur als Root ausgeführt werden, wenn dies erforderlich ist (z. B. Binden an privilegierten Port). Idealerweise sollte es seine Privilegien verwerfen, sobald das Ausführen des erforderlichen Roots abgeschlossen ist.

Sie können sich ansehen, wie andere (installierte) Pakete damit umgegangen sind

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

und Lesen der aufgelisteten Dateien (die meisten benötigen mehr als eine Zeile Optionen).

Seltsamerweise verwenden alle bis auf eines meiner installierten Pakete, die einen Benutzer erstellen adduser, das Hinzufügen von Benutzern, aber das Adduser-Paket ist kein erforderliches Paket, sodass Ihr Paket erstellt werden muss, um davon abhängig zu sein. Das useraddProgramm wird vom Paket libuuid1 verwendet und ist Teil des passwdPakets, das ein erforderliches Paket ist.

DerfK
quelle
1
Das ist schrecklich. Überprüfen Sie, wie Sie die vorbereitenden Skripte richtig generieren, anstatt sie manuell zu hacken.
LtWorf
Der --quietAnsatz scheint sehr beliebt
vidstige
6

Abschnitt 10.9. Berechtigungen und Eigentümer im Debian-Richtlinienhandbuch haben das, wonach Sie suchen (ab "Version 3.9.5.0, 2013-10-28"):

Wenn Sie einen neuen Benutzer oder eine neue Gruppe für Ihr Paket erstellen müssen, gibt es zwei Möglichkeiten. Erstens müssen Sie möglicherweise festlegen, dass einige Dateien im Binärpaket diesem Benutzer oder dieser Gruppe gehören, oder Sie müssen die Benutzer- oder Gruppen-ID (und nicht nur den Namen) in die Binärdatei kompilieren (letzteres sollte jedoch vermieden werden, wenn möglich, da Sie in diesem Fall eine statisch vergebene ID benötigen).

Wenn Sie eine statisch zugewiesene ID benötigen, müssen Sie eine Benutzer- oder Gruppen-ID aus dem base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of thebase-passwd-Paket mit der ID in /etc/passwd' or / etc / group anfordern oder veranlassen, dass Ihr Paket den Benutzer oder die Gruppe selbst mit der richtigen ID erstellt id (die Verwendung von adduser') in itspreinst oder postinst'. (Doing it in thepostinst ist vorzuziehen, wenn dies möglich ist, andernfalls ist eine Vorab-Abhängigkeit vom adduser-Paket erforderlich.)

Hinweis: Die debian-devel Liste ist sehr aktiv und Antworten solche Fragen zu (obwohl das Beispiel aus dem Jahr 2003 ist).

Ton B
quelle
3
Die kurze, vereinfachte Antwort lautet also "Verwenden adduserin postinst".
Vi.