"Não existe esse usuário", mas o usuário está no arquivo passwd

12

Observando os arquivos em / etc /:

/etc/group:lbutler:*:1005:
/etc/master.passwd:lbutler:$6$s..../:1005:1005::0:0:L Butler:/home/lbutler:/bin/bash
/etc/passwd:lbutler:*:1005:1005:L Butler:/home/lbutler:/bin/bash

Mas:

$ passwd lbutler
passwd: lbutler: no such user

Além disso, os arquivos /home/lbutler/aparecem como uid 1005 e gidlbutler

Os outros usuários no /etc/passwdparecem não ter um problema

lbutlr
fonte

Respostas:

9

Parece que alguns corruptos ocorreram com o seu /etc/master.passwd. Você pode restaurá-lo ao estado normal, tente:

  • vipwpara editar /etc/master.passwd.
  • Salve-o sem alterações.

Você também pode usar pwd_mkdbpara atualizar o banco de dados de senhas.

cuonglm
fonte
5
+1: O OP pode ser um usuário do Linux e está pensando que o SO realmente presta atenção ao / etc / passwd como fonte principal. No FreeBSD, os arquivos de banco de dados gerados a partir de / etc / passwd e outros são a principal fonte de verdade.
Warren novo
OP, use vipwno futuro, para não precisar gerenciar os detalhes.
Winny
Usar vipw e save inalterado não fez diferença. Eu olhei para os backups e a senha do usuário listado antes desta no arquivo master.passwd mudou exatamente no momento em que o mordomo parou de poder fazer login. Posso restaurar o master.passwd, devo executar pwd_mkdb /etc/master.passwd? @winny: Eu nunca editado diretamente um arquivo passwd
lbutlr
Estes devem ser os argumentos de invocação corretos:pwd_mkdb -p /etc/master.shadow
Winny
2

Tente pwd_mkdb -p /etc/master.passwd. De man pwd_mkdb:

 -p    Create a Version 7 style password file and install it into
       /etc/passwd.
Vladislav
fonte
1

Notei que o usuário imediatamente antes do lbutler tinha um UID e GID de 10014 (em vez do esperado 1014). Esse usuário alterou sua senha e, depois disso, o UID 1015 não pôde fazer login. Usando vipw, invertai as duas linhas e salvei o arquivo. Agora, os dois usuários podem fazer login e as propriedades aparecem corretamente. Obrigado pelas indicações.

lbutlr
fonte
0

O FreeBSD usa os arquivos de banco de dados para procurar senhas e usuários, e assim por diante. Portanto, o / etc / passwd e também o master.passwd existem apenas por motivos de compatibilidade e informações. Nunca se deve confiar nisso. Não sei se existe uma maneira de perguntar diretamente aos arquivos do banco de dados. Talvez eles devam fornecer algum tipo de interface SQL para que as pessoas possam verificar o que os usuários estão no sistema e assim por diante. Então eles poderiam abolir / etc / passwd e master.passwd completamente.

Lars Schotte
fonte