Leí la descripción de estos comandos de un libro,
passwd:
Cambia la contraseña de un usuario existente.
chpasswd:
Lee un archivo de pares de nombre de usuario y contraseña y actualiza las contraseñas.
Parece que estos comandos hacen los mismos trabajos. ¿Hay alguna diferencia entre ellos?
EDITAR:
Quiero saber cuándo los usamos qué archivos cambian. ¿Cambian el mismo archivo o un archivo diferente? Si cambian diferentes archivos, ¿qué son?
linux
command-line
metarose
fuente
fuente
/etc/password
contiene información de la cuenta del usuario./etc/shadow
contiene contraseñas encriptadas. Creo que esos son los únicos archivos que son relevantes. Puede cambiar una contraseña editando manualmente esos archivos, pero sería muy incómodo.Respuestas:
De
man chpasswd
:'Este comando está destinado a ser utilizado en un entorno de sistema grande donde se crean muchas cuentas al mismo tiempo'.
passwd
(en mi experiencia) se usa normalmente de forma interactiva para un solo usuario.fuente
Consulte las páginas de manual para ambos:
fuente
En una palabra:
passwd
comprueba si el STDIN (descriptor de archivo 0) está conectado al terminal, utilizandoisatty(0)
. Si no,passwd
se rescataría, es decir, solo puede trabajar de formapasswd
interactivachpasswd
, por otro lado, está diseñado para leer (nombre de usuario y) contraseña de STDIN, y se llama modo por lotes (crea / actualiza múltiples credenciales de usuario a la vez). Lee las contraseñas (en texto claro de forma predeterminada) y los nombres de usuario de STDIN, en el formatouser_name:password
, con una nueva línea que separa las entradasfuente
Encontré que aunque
funciona para algunos sistemas operativos, pero algunos sistemas operativos como debian9,10 mostrarán un error,
can not connect to /var/run/nscd/socket
ya que usa /etc/nsswitch.conf para determinar dónde almacena la contraseña.Por otro lado,
passwd
parece que el comando no necesita un shell interactivo,funciona para mí tanto en host físico como en contenedor, para varios sistemas operativos (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)
fuente