Come posso assegnare una password iniziale / predefinita a un utente in Linux?


10

Ho trovato una guida che spiega come impostare la password di un utente . Sto cercando di automatizzarlo e inviare un'e-mail all'utente come:

userid created with password XYZ.
request to change the initial password.

Secondo il documento sopra, una password crittografata deve essere creata usando Python e inviata al usermodcomando in questo modo:

 usermod -p "<encrypted-password>" <username>

Ci sono altri modi più semplici per farlo? Non voglio scaricare alcuna utility speciale per farlo; dovrebbe essere generalizzato il più possibile.


Modifica : anche il metodo indicato nel link sopra non sembra funzionare per me:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

ecco un altro link che ho trovato ma sembra esserci un problema di sicurezza anche con l'utilizzo dell'opzione -p usermodquando qualcuno usa psper vedere il processo che elenca la password è visibile
munish

Risposte:


13

Puoi usarlo chpasswdper farlo, in questo modo:

echo "username:newpassword" | chpasswd

Puoi eseguire il pipe chpasswdda programmi diversi da echo, se conveniente, ma questo farà il trucco.

Modifica: per generare la password all'interno dello script della shell e quindi impostarla, puoi fare qualcosa del genere:

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

Per ulteriori informazioni chpasswd, consultare http://linux.die.net/man/8/chpasswd

(Il comando per generare la password proveniva da http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html )


grazie @Dominick hmm, chpasswd è forse in AIX ... non l'ho usato. e ogni volta devo scrivere una password ... non può essere generata dalla sceneggiatura come nel link delle domande ... sfortunatamente anche questo non ha funzionato per me
munish

@munish Non sono del tutto sicuro di cosa intendi per generare nello script, ma ho aggiornato la mia risposta per spero di essere più utile.
Dominick Pastore,

Non funziona. "Errore di manipolazione del token di autenticazione"
Cerin,

@Cerin Per caso stai facendo qualcosa del genere sudo echo "username:newpass" | chpasswd? Perché le autorizzazioni elevate da sudonon passano attraverso la pipe, quindi chpasswdsarebbero in esecuzione come un normale utente. Può essere risolto spostando sudo, come in echo "username:newpass" | sudo chpasswd. Ci sono anche altri problemi che possono causare quel messaggio di errore, ma errori di autorizzazioni come questo sono probabilmente i più comuni.
Dominick Pastore,

1
Le password sulla riga di comando potrebbero essere visibili ad altri utenti che hanno effettuato l'accesso sullo stesso computer usando w, ps o altri comandi che mostrano informazioni su altri processi. Le password impostate in questo modo devono essere modificate dall'utente il prima possibile.
Mnebuerquo,

3

Puoi usare OpenSSL per generare la password casuale (16 caratteri, in questo caso):

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

Quindi inviare la password con hash a useraddousermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

Credito dovuto: la generazione della password è adattata da un metodo simile che utilizza /dev/urandominvece di openssl.


2

useradd dovrebbe funzionare (l'ho fatto su Ubuntu). Forse controlla che ciascuno dei tuoi argomenti sia corretto (esistono gruppi di te, il percorso è giusto bash). È possibile eseguire il comando con solo una password e un utente, quindi utilizzare userdel per rimuovere e quindi riprovare con più parametri, per vedere quale causa il problema (approccio della forza bruta).

Ci sono anche nuovi utenti (vedi la pagina man), almeno sotto Ubuntu, dove gli dai un file con file passwd come info, incluse password in testo semplice e creerà quegli utenti. Bel modo di fare molti utenti contemporaneamente.


+1 per menzionare il newuserscomando per Ubuntu
Levon,

1

il modo più semplice che ho trovato:


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here

Hai mai provato questo? passwd: unrecognized option '--stdin'
Cerin,

Sì, l'ho usato molte volte ma, come con quasi tutti gli altri comandi, non è la soluzione defacto al problema attuale. Alcune varianti del file binario passwd non supportano l'opzione --stdin.
MelBurslan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.