Manière d'ajouter un compte utilisateur via le script bash

12

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 d'utilisateur qu'il crée sur Ubuntu , alors je cherche de l'aide ici.

  • l'invite du terminal n'est pas définie ( echo $PS1 ne renvoie rien)
  • les touches fléchées et la touche de tabulation ne fonctionnent pas correctement dans le terminal
  • le mot de passe ne semble pas fonctionner (bien que je ne sache toujours pas exactement quel est ce problème)
  • Les droits / etc / sudoers définis pour ce nouvel utilisateur ne sont pas honorés

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 (afaik). 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 sur Ubuntu (et ne cesse de fonctionner sur d'autres distributions).

Enfin, je voudrais comprendre les différences entre adduser et useradd . Par exemple, je veux savoir quel répertoire squelette est utilisé par adduser car cela pourrait être la raison pour laquelle useradd ne fonctionne pas comme prévu (parce que je viens d'accepter la valeur par défaut).

Merci

    
posée MountainX 13.07.2013 - 22:07
la source

4 réponses

11

Ma solution a été fournie ici: lien par Ulrich 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 faites ceci:

sudo chpasswd << 'END'
mynewuser:password
END
    
réponse donnée MountainX 19.07.2013 - 18:17
la source
4

Cela fonctionnera.

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd
    
réponse donnée Ankur Devani 27.12.2016 - 07:20
la source
2

mon script qui construit automatiquement un compte de service avec une connexion à la clé ssh et sans 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
    
réponse donnée JasonS 12.03.2015 - 22:40
la source
0

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 mettre la condition sur l’existence d’un tel fichier).

    
réponse donnée enzotib 13.07.2013 - 23:51
la source

Lire d'autres questions sur les étiquettes