J'ai besoin d'avoir la possibilité de créer des comptes d'utilisateurs sur mon Linux (Fedora 10) et d'attribuer automatiquement un mot de passe via un script bash (ou autrement, si nécessaire).
Il est facile de créer l'utilisateur via Bash, par exemple:
[whoever@server ]# /usr/sbin/useradd newuser
Est-il possible d'attribuer un mot de passe dans Bash, quelque chose de fonctionnellement similaire à cela, mais automatiquement:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
script.Réponses:
Vous pouvez exécuter la commande passwd et lui envoyer une entrée redirigée. Alors, faites quelque chose comme:
la source
echo
s'agit d'une fonction intégrée au shell utilisé, ce qui est courant), du moins concernant/proc/
.echo -e "password\npassword\n" | passwd
le 13.04echo 'myuser:mypass' | chpasswd
. J'espère que cela pourra aider.Vous pouvez également utiliser chpasswd :
ainsi, vous changez le mot de passe de l'utilisateur
username
ennew_password
.la source
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, alorspasswd
que non (il n'y a pas d'--stdin
option).Je me demandais la même chose et je ne voulais pas compter sur un script Python.
C'est la ligne pour ajouter un utilisateur avec un mot de passe défini dans une ligne bash:
la source
useradd -p $(openssl passwd -1 $PASS) $USER
est plus moderne, car les back-ticks sont déconseillés et$()
sont recommandés.useradd -m -p <password> -s /bin/bash <user>
, -m Répertoire de base de Crates, -s spécifie les utilisateurs par défaut shell, substitutpassword
etuser
pour vos besoins.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Je pense que cela est nécessaire sur Ubuntu plus tard.Le code ci-dessous a fonctionné dans Ubuntu 14.04. Essayez avant de l'utiliser dans d'autres versions / variantes Linux.
la source
--gecos
J'ai aimé l'approche de Tralemonkey,
echo thePassword | passwd theUsername --stdin
même si cela ne fonctionnait pas tout à fait pour moi tel qu'il était écrit. Cela a cependant fonctionné pour moi.-e
est de reconnaître\n
comme nouvelle ligne.sudo
est l'accès root pour Ubuntu.Les guillemets doubles doivent reconnaître
$
et développer les variables.La commande ci-dessus transmet le mot de passe et une nouvelle ligne, deux fois, à
passwd
, ce qui estpasswd
requis.Si vous n'utilisez pas de variables, je pense que cela fonctionne probablement.
Des guillemets simples devraient suffire ici.
la source
Ce qui suit fonctionne pour moi et testé sur Ubuntu 14.04. Il s'agit d'une doublure qui ne nécessite aucune intervention de l'utilisateur.
Extrait de @Tralemonkey
la source
Vous pouvez utiliser l'option -p.
Malheureusement, cela vous oblige à hacher le mot de passe vous-même (où passwd le fait pour vous). Malheureusement, il ne semble pas y avoir d'utilitaire standard pour hacher certaines données, vous devrez donc l'écrire vous-même.
Voici un petit script Python que j'ai préparé pour faire le chiffrement pour vous. En supposant que vous l'appeliez pcrypt, vous écririez alors votre ligne de commande ci-dessus dans:
Quelques avertissements à connaître.
et voici pcrypt:
la source
Doublure unique pour créer un utilisateur sudo avec répertoire personnel et mot de passe.
la source
--stdin
ne fonctionne pas sur Debian. Ça dit:Cela a fonctionné pour moi:
Ici, nous pouvons trouver d'autres bons moyens:
la source
Vous pouvez utiliser expect dans votre script bash.
Depuis http://www.seanodonnell.com/code/?id=21
la source
Je sais que j'arrive à ces années plus tard, mais je ne peux pas croire que personne n'ait suggéré de mode d'utilisation.
Enfer, juste au cas où quelqu'un voudrait le faire sur un ancien HPUX que vous pouvez utiliser
usermod.sam
.Le -F n'est nécessaire que si la personne exécutant le script est l'utilisateur actuel. Bien sûr, vous n'avez pas besoin d'utiliser Perl pour créer le hachage. Vous pouvez utiliser openssl ou de nombreuses autres commandes à sa place.
la source
Voici un script qui le fera pour vous .....
Vous pouvez ajouter une liste d'utilisateurs (ou un seul utilisateur) si vous le souhaitez, tous en une seule fois et chacun aura un mot de passe différent. En bonus, vous êtes présenté à la fin du script avec une liste de chaque mot de passe utilisateur. .... Si vous le souhaitez, vous pouvez ajouter des options de maintenance utilisateur
comme:
au script qui définira l'âge du mot de passe, etc.
=======
===========
J'espère que cela t'aides.
À la vôtre, Carel
la source
J'ai testé dans mon propre script shell.
$new_username
signifie un utilisateur nouvellement créé$new_password
signifie nouveau mot de passePour CentOS
Pour Debian / Ubuntu
Pour OpenSUSE
la source
La solution de Tralemonkey a presque aussi fonctionné pour moi ... mais pas tout à fait. J'ai fini par le faire de cette façon:
2 détails clés que sa solution n'incluait pas, l'
-n
écho de l'ajout d'un\n
au mot de passe qui est crypté, et les guillemets simples protègent le contenu d'être interprété par le shell (bash) dans mon cas.BTW J'ai exécuté cette commande en tant que root sur un système CentOS 5.6 au cas où quelqu'un se demanderait.
la source
La solution qui fonctionne à la fois sur Debian et Red Hat. Dépend de perl, utilise des hachages sha-512:
Usage:
Il peut effectivement être utilisé comme une ligne, mais vous devrez spécifier vous-même le mot de passe, le sel et le nom d'utilisateur aux bons endroits:
la source
Depuis IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Créez un fichier texte, dites text.txt et remplissez-le avec les paires user: password comme suit:
Enregistrez le fichier text.txt et exécutez
C'est tout. La solution est (a) évolutive et (b) n'implique pas l'impression de mots de passe sur la ligne de commande.
la source
la source
Pour RedHat / CentOS, voici le code qui crée un utilisateur, ajoute les mots de passe et fait de l'utilisateur un sudoer:
la source
usage:
./my_add_user.sh USER PASSWD
code:
la source