"No existe tal usuario" pero el usuario está en el archivo passwd

12

Mirando los archivos en / 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

Pero:

$ passwd lbutler
passwd: lbutler: no such user

Además, los archivos /home/lbutler/aparecen como uid 1005 y gidlbutler

Los otros usuarios en /etc/passwdno parecen tener un problema

lbutlr
fuente

Respuestas:

9

Parece que se han producido algunos daños con su /etc/master.passwd. Puede restaurarlo a su estado normal, intente:

  • vipwa editar /etc/master.passwd.
  • Guárdelo sin cambios.

También puede usar pwd_mkdbpara actualizar la base de datos de contraseñas.

Cuonglm
fuente
55
+1: El OP puede ser un usuario de Linux y está pensando que el sistema operativo realmente presta atención a / etc / passwd como fuente primaria. En FreeBSD, los archivos DB generados a partir de / etc / passwd y tales son la principal fuente real de verdad.
Warren Young
OP, úselo vipwen el futuro, entonces no tiene que administrar los detalles.
Winny
Usar vipw y guardar sin cambios no marcó la diferencia. Miré las copias de seguridad y la contraseña de usuario para el usuario mencionado antes de que esta en el archivo master.passwd cambiara justo cuando el mayordomo dejó de poder iniciar sesión. Puedo restaurar el master.passwd ¿debo ejecutar pwd_mkdb /etc/master.passwd? @winny: nunca he editado directamente un archivo passwd
lbutlr
Estos deberían ser los argumentos de invocación correctos:pwd_mkdb -p /etc/master.shadow
Winny
3

Tratar 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
fuente
1

Noté que el usuario inmediatamente anterior a lbutler tenía un UID y un GID de 10014 (en lugar del esperado 1014). Ese usuario cambió su contraseña y después de eso, el UID 1015 no pudo iniciar sesión. Usando vipw invertí las dos líneas y guardé el archivo. Ambos usuarios ahora pueden iniciar sesión y las propiedades aparecen correctamente. Gracias por los consejos.

lbutlr
fuente
0

FreeBSD utiliza los archivos de la base de datos para buscar contraseñas y usuarios, etc. Entonces, / etc / passwd y también master.passwd están ahí solo por razones de compatibilidad e información. Uno nunca debe confiar en eso. No sé si hay una manera de preguntarle directamente a esa base de datos. Tal vez deberían proporcionar algún tipo de interfaz SQL para que ppl pueda verificar qué usuarios están en el sistema, etc. Entonces podrían abolir / etc / passwd y master.passwd por completo.

Lars Schotte
fuente