2016-07-28 13 views
0

Hallo, ich möchte die Einrichtung von Benutzern auf meinen Servern automatisieren. Also begann ich mit diesem einfachen BashVariable in Befehl in Bash-Skript

#! /bin/bash 

if [ $# -ne 2 ] 
then 
echo "Usage: $(basename $0) USERNAME PASSWORD" 
exit 1 
fi 
user_name=$1 
password_var=$2 

exec useradd -m $user_name 
usermod -s /bin/bash 
#echo "$2" | exec chpasswd $user_name --stdin 
usermod -aG www-data "${user_name}" 

Ich habe ein Problem mit der letzten Zeile. Der Benutzer, den ich gerade erstellt habe, wird nicht der Gruppe www-data zugewiesen. Wenn ich nur die letzte Zeile benutze und alles andere kommentiere und meinen einen Benutzer in das Skript füttere, kann ich mich selbst hinzufügen, kann mir jemand erklären, warum das falsch ist?

+3

'exec' nie – Mat

Antwort

1
exec useradd -m $user_name 

ersetzt der aktuelle Prozess bash hier mit useradd -m $user_name dh.
Außerdem sehe ich keinen praktischen Vorteil der Verwendung von exec hier. Auch

, wie das Linux Passwort Whitespaces haben kann, schlage ich vor

password_var="$2" #prevents word splitting 

Mit einiger Fehlerüberprüfung zu tun, mein letztes Skript wäre

password_var="$2" 
useradd -mp "$password_var" "$user_name" # You haven't used password 
if [ $? -ne 0 ] # checking the exit status of the last command 
then 
    echo "User creation failed" 
    exit 1 
else 
usermod -s /bin/bash "$user_name" #username missing in the original code 
usermod -aG www-data "$user_name" 
fi 
+0

ergibt Ja, das war es Danke auch für das Aufräumen;) – theDrifter

Verwandte Themen