Voici le code de script que j'utilise maintenant:
getent group $MYGROUP
if [ $? -ne 0 ] ; then
Sudo su -c "groupadd $MYGROUP"
fi
Sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"
Cette approche fonctionne bien sur openSuse. Mais il y a plusieurs problèmes avec le compte utilisateur créé sur Ubuntu , je cherche donc de l'aide ici.
echo $PS1
ne renvoie rien)Si au lieu de cela je crée manuellement l'utilisateur avec adduser
(au lieu de useradd), je n'ai pas ces problèmes sur Ubuntu. Mais je ne peux pas utiliser adduser
sur openSuse (autant que je sache). Par conséquent, j'ai besoin d'un script non exclusif à Debian ou d'une méthode d'ajout de comptes utilisateur via mon script bash qui fonctionne sous Ubuntu (et ne cesse pas de fonctionner sur d'autres distributions).
Enfin, j'aimerais comprendre les différences entre adduser
et useradd
. Par exemple, je veux savoir quel répertoire de squelette est utilisé par adduser
car cela pourrait être la raison pour laquelle useradd
ne fonctionne pas comme prévu (car je viens d'accepter la valeur par défaut).
Merci
Ma solution a été fournie ici: https://unix.stackexchange.com/questions/82923/proper-way-to-add-a-user-account-via-bash-script par lrich Schwarz et Joseph R. . La principale chose à faire était d’ajouter -s /bin/bash
à ma commande useradd
existante et de supprimer -p password
qui attend un mot de passe chiffré.
Sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"
Alors fais ceci:
Sudo chpasswd << 'END'
mynewuser:password
END
Cela fonctionnera.
Sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | Sudo chpasswd
mon script qui construit automatiquement un compte de service avec la connexion ssh et aucun mot de passe
#add service group/user
addgroup service-runner
useradd devops-service --create-home --Shell /bin/bash --groups service-runner
#gpasswd -a devops-service Sudo #allowing Sudo requires password, and not a good idea for a service account.
mkdir /home/devops-service/.ssh
chmod 700 /home/devops-service/.ssh
cat [email protected] >> /home/devops-service/.ssh/authorized_keys
chown devops-service:devops-service /home/devops-service -R
Je suppose que vous pouvez simplement utiliser une condition dans votre script, quelque chose comme
if grep -q 'Ubuntu\|Debian' /etc/issue; then
adduser .....
else
useradd .....
fi
(impossible de vérifier si le fichier /etc/issue
est présent sur OpenSUSE, sinon vous pouvez poser la condition à l'existence d'un tel fichier).