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 qu'il crée sur Ubuntu donc 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 pas exactement de quoi il s'agit)
- les droits / etc / sudoers définis pour ce nouvel utilisateur ne sont pas respecté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 l'utiliser adduser
sur openSuse (afaik). Par conséquent, j'ai besoin d'un script ou d'une méthode non exclusive à Debian pour ajouter des comptes d'utilisateurs via mon script bash qui fonctionne sur Ubuntu (et qui 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é adduser
car cela pourrait être la raison useradd
pour laquelle cela ne fonctionne pas comme prévu (car j'ai juste accepté la valeur par défaut).
Merci
man useradd
): useradd est un utilitaire de bas niveau pour ajouter des utilisateurs. Sur Debian, les administrateurs devraient généralement utiliser adduser (8) à la place.sudo su -c "cmd arg1 arg2"
équivalent àsudo cmd arg1 arg2
.sudo su -c "cmd arg1 arg2"
pour qu'il fonctionne partout où j'en ai besoin pour fonctionner.adduser
est un script Perl de plus de 1000 lignes, donc pour les différences, vous pouvez jeter un œil au script.adduser
mais je ne connais pas perl. Ce n'est donc pas une bonne approche pour moi.Réponses:
Ma solution a été fournie ici: /unix/82923/proper-way-to-add-a-user-account-via-bash-script par Ulrich Schwarz et Joseph R .. La principale chose que je devais faire était d'ajouter
-s /bin/bash
à mauseradd
commande existante et de supprimer-p password
ce qui attend un mot de passe crypté.Ensuite, faites ceci:
la source
echo mynewuser:password | sudo chpasswd
fonctionne aussi.Cela fonctionnera.
la source
mon script qui construit automatiquement un compte de service avec une connexion par clé ssh et aucun mot de passe
la source
Je suppose que vous pouvez simplement utiliser une condition dans votre script, quelque chose comme
(ne peut pas 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).la source
adduser
withif command -v adduser >/dev/null; then
ou de likes? C'est la seule chose qui compte et non les distributions sous-jacentes. Il existe également d'autres distributions que Debian / Ubuntu et OpenSUSE.