Exécuter adduser de manière non interactive

198

J'aimerais utiliser la addusercommande pour ajouter un utilisateur (avec un mot de passe désactivé) via un script shell.

Par défaut, adduservous êtes invité à entrer différentes valeurs (par exemple, Nom complet). Est-il possible de soumettre ces valeurs via la ligne de commande? Ou devrais-je le faire à la useraddplace?

Lorin Hochstein
la source

Réponses:

262

Utilisez l' --gecosoption pour ignorer la chfnpartie interactive.

adduser --disabled-password --gecos "" username

Tout est dans la page de manuel. Ce n'est pas la formulation la plus évidente.

--gecos GECOS
          Set  the  gecos field for the new entry generated.  adduser will
          not ask for finger information if this option is given.

Le champ GECOS est une liste séparée par des virgules en tant que telle:, Full name,Room number,Work phone,Home phonemalgré que la page de manuel mentionne finger information Détails - Wikipedia

J'espère que cela vous aide.

Zoke
la source
41

useradd peut également ajouter des utilisateurs et ne semble pas avoir d’invitation intégrée.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Créer un répertoire personnel
  • -p, --password: Spécifiez le mot de passe de l'utilisateur. sauter pour le désactiver
  • -s, --shell: Shell par défaut pour l'utilisateur connecté

    Blank utilisera le shell de connexion par défaut spécifié par la SHELLvariable dans/etc/default/useradd

  • Remplacer <user>par le nom d'utilisateur
  • Substituer <encryptedPassword>avec le mot de passe crypté

Générer un mot de passe haché:

De nombreuses implémentations crypt3 peuvent générer un mot de passe haché. Le tout est votre mot de passe haché.

Base de Sha-512

Le format de sortie résultant: le mécanisme de hachage ( $6pour sha-512), le sel aléatoire (les huit octets après le deuxième signe dollar $ASDF1234), le reste est la charge utile.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdest fourni par le whoispaquet)

DES basé:

Le format de sortie résultant: les 2 premiers octets sont votre sel, le reste est la charge. Le tout est votre mot de passe haché.

  • mkpasswd: mkpasswd(fourni par whoispackage)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • python: python3 -c 'import crypt; print(crypt.crypt("password"))'
ThorSummoner
la source
1
Les options que vous avez mentionnées n'existent pas addusersur ma version (récente) d'Ubuntu.
ᴠɪɴᴄᴇɴᴛ
1
@ ᴠɪɴᴄᴇɴᴛ adduserest distinct de useradd, déroutant, je sais.
ThorSummoner
1
Oups, vous avez en effet oublié que vous utilisez presque son nom… n'y a-t-il pas un BDFL protégeant l'espace de noms en ligne de commande? ; p
ᴠɪɴᴄᴇɴᴛ
1
@ mum007 Ceci n'est qu'un conseil général, essayez d'ajouter -vou -vvou -vvvà vos commandes ssh pour voir ce qui ne va pas et recherchez vos messages d'erreur ici sur SO ou Google.
ThorSummoner
1
@KovacsAkos essayez ceci: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configetsudo service ssh restart
JSBach Le