Qual è la differenza tra 'passwd' e 'chpasswd'?


14

Ho letto la descrizione di questi comandi da un libro,
passwd:

Modifica la password per un utente esistente.

chpasswd:

Legge un file di coppie nome utente e password e aggiorna le password.

Sembra che questi comandi facciano gli stessi lavori. C'è una differenza tra loro?

MODIFICARE:

Voglio imparare quando li usiamo quali file cambiano. Cambiano lo stesso file o file diverso? Se cambiano file diversi, che cosa sono?


2
/etc/passwordcontiene informazioni sull'account utente. /etc/shadowcontiene password crittografate. Credo che questi siano gli unici file rilevanti. È possibile modificare una password modificando manualmente quei file, ma sarebbe molto imbarazzante.
SauceCode

Risposte:


18

Da man chpasswd:

"Questo comando deve essere utilizzato in un ambiente di sistema di grandi dimensioni in cui vengono creati più account contemporaneamente".

passwd è (nella mia esperienza) normalmente utilizzato in modo interattivo per un singolo utente.


7

Vedi le pagine man per entrambi:

NOME

    chpasswd - aggiorna le password in modalità batch

SINOSSI

    chpasswd [opzioni]

DESCRIZIONE

    Il chpasswdcomando legge un elenco di coppie nome utente e password dall'input standard e utilizza queste informazioni per aggiornare un gruppo di utenti esistenti. Ogni riga ha il formato:

       nome_utente: la password


NOME

    passwd - cambia la password dell'utente

SINOSSI

    passwd [opzioni] [ACCEDI]

DESCRIZIONE

    Il passwdcomando modifica le password per gli account utente. Un utente normale può modificare la password solo per il proprio account, mentre il superutente può modificare la password per qualsiasi account.  passwdcambia anche l'account o il periodo di validità della password associata.


7

In breve:

  • passwdcontrolla se STDIN (descrittore di file 0) è collegato al terminale, usando isatty(0). In caso contrario, passwdverrebbe salvato, cioè puoi solo lavorare in modo passwdinterattivo

  • chpasswdd'altra parte, è progettato per leggere (nome utente e) password da STDIN ed è chiamato modalità batch (crea / aggiorna più credenziali utente contemporaneamente). Legge le password (in chiaro per impostazione predefinita) e i nomi utente da STDIN, forniti nel formato user_name:password, con la nuova riga che separa le voci


0

L'ho scoperto anche se

echo user:password | chpasswd

funziona per alcuni SO, ma alcuni SO come debian9,10 mostreranno un errore can not connect to /var/run/nscd/socketpoiché usa /etc/nsswitch.conf per determinare dove memorizza la password.

Dall'altro lato, il passwdcomando sembra non necessita di shell interattiva,

(echo user; echo password) | passwd

funziona sia per l'host fisico che per il container, per vari sistemi operativi (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)

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.