Eu li a descrição desses comandos em um livro,
passwd:
Altera a senha de um usuário existente.
chpasswd:
Lê um arquivo de pares de nome e senha de login e atualiza as senhas.
Parece que esses comandos estão fazendo os mesmos trabalhos. Existe alguma diferença entre eles?
EDITAR:
Quero saber quando os usamos quais arquivos são alterados. Eles mudam o mesmo arquivo ou arquivo diferente? Se eles mudarem arquivos diferentes, o que são?
linux
command-line
metarose
fonte
fonte
/etc/password
contém informações da conta do usuário./etc/shadow
contém senhas criptografadas. Acredito que esses são os únicos arquivos relevantes. Você pode alterar uma senha editando manualmente esses arquivos, mas seria muito estranho.Respostas:
De
man chpasswd
:'Este comando deve ser usado em um ambiente de sistema grande, onde muitas contas são criadas ao mesmo tempo.'
passwd
é (na minha experiência) normalmente usado de forma interativa para um único usuário.fonte
Veja as páginas de manual para os dois:
fonte
Em poucas palavras:
passwd
verifica se o STDIN (descritor de arquivo 0) está conectado ao terminal usandoisatty(0)
. Caso contrário,passwd
seria possível salvá-lo, ou seja, você só pode trabalharpasswd
interativamentechpasswd
, por outro lado, foi projetado para ler (nome de usuário e) senha do STDIN e é chamado de modo em lote (cria / atualiza várias credenciais do usuário de uma só vez). Ele lê senhas (em texto não criptografado por padrão) e nome de usuário de STDIN, fornecidos no formatouser_name:password
, com nova linha separando as entradasfonte
Eu descobri que embora
funciona para alguns sistemas operacionais, mas alguns sistemas operacionais, como o debian9,10, mostram um erro,
can not connect to /var/run/nscd/socket
pois usam /etc/nsswitch.conf para determinar onde armazenar a senha.Por outro lado, o
passwd
comando parece não precisar de shell interativo,funciona para mim tanto no host físico quanto no contêiner, para vários sistemas operacionais (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)
fonte