Shell-Logik: Wie man Benutzer/Gruppe erstellt, wenn kein Benutzer/keine Gruppe mit dieser UID/GID existiert
Der folgende Bash-/Shell-Schnipsel ist ein Beispiel, wie man einen Benutzer und eine Gruppe erstellt, wenn noch kein Benutzer/keine Gruppe mit dieser UID/GID existiert:
Wie man eine Gruppe erstellt, wenn keine Gruppe mit dieser GID existiert
create_user_group.sh
getent group $GID || groupadd --gid $GID $USERNAMEWie man einen Benutzer erstellt, wenn kein Benutzer mit dieser UID existiert
create_user_if_not_exists.sh
getent passwd $UID || useradd --uid $UID --gid $GID -m $USERNAMEWie es funktioniert
getent group $GIDgibt die Gruppe mit der angegebenen GID zurück, wenn sie existiert, oder nichts, wenn sie nicht existiert. Beispiel:
getent_group_example.sh
$ getent group 1000
myuser:x:1000:
$ echo $?
0falls keine solche Gruppe existiert:
getent_group_not_found_example.sh
$ getent group 12345
$ echo $?
2Danach verwenden wir ||, um den groupadd-Befehl nur auszuführen, wenn getent einen Non-Zero-Exit-Code zurückgibt (d.h. die Gruppe nicht existiert).
groupadd --gid $GID $USERNAMEerstellt eine Gruppe mit der angegebenen GID und dem Namen.
Wie man das in sein Skript einbindet
Verwenden Sie Klammern, wenn Sie diesen Befehl in einer &&-Kette verwenden, um unerwartetes Verhalten zu vermeiden.
Beispiel:
create_user_group_conditional.sh
# Create user/group only of no such user/group exists
(getent group $gid || groupadd --gid $gid $USERNAME) \
&& (getent passwd $uid || useradd --uid $uid --gid $gid -m $USERNAME) \
&& echo "Created user & group or used existing ones"Check out similar posts by category:
Linux
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow