2009-08-24 3 views
3

Ich arbeite derzeit an einem Debian-Paket für ein In-House-Programm. Als Teil dieses Pakets muss ich den Benutzer erstellen, mit dem die meisten Funktionen des Programms ausgeführt werden. Ich mache das im postinst-Skript. Das postinst-Skript kann mehrmals ausgeführt werden (z. B. beim Upgrade). Daher ist es wichtig, dass ich nicht jedes Mal versuche, den Benutzer zu erstellen.Sicherstellung der Existenz eines Benutzers auf einem Debian GNU/Linux-System

Also, wie kann ich sicherstellen, dass der Benutzer nur das erste Mal erstellt wird, dass das Skript ausgeführt wird, ohne es bei späteren Ausführungen des Skripts zu beeinflussen?

Antwort

2

Sie brauchen nicht zu wissen, ob der Benutzer vorhanden ist oder nicht. adduser (8) gibt keinen Fehler zurück, wenn der Benutzer bereits mit den gleichen Parametern existiert. Aus der Manpage:

EXIT VALUES 
     0  The user exists as specified. This can have 2 causes: The user 
       was created by adduser or the user was already present on the 
       system before adduser was invoked. Invoking adduser a second 
       time with the same parameters as before also returns 0. 
1

wie erwähnt, bevor Sie die ‚id‘ Befehl verwenden können, wenn Sie alle Benutzer in einem System erhalten möchten, können Sie verwenden:

getent passwd 

die alle listet die Benutzer auf dem System (auch wenn sie in einer entfernten Datenbank sind wie ldap oder nis und etc ...)

+0

Schöne Antwort. Wahrscheinlich robuster als ID. –

Verwandte Themen