“没有这样的用户”,但用户在 passwd 文件中

“没有这样的用户”,但用户在 passwd 文件中

查看/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

但:

$ passwd lbutler
passwd: lbutler: no such user

此外,文件/home/lbutler/显示为 uid 1005 和 gidlbutler

其他用户/etc/passwd似乎没有问题

答案1

看来您的/etc/master.passwd.您可以将其恢复到正常状态,尝试:

  • vipw编辑/etc/master.passwd
  • 保存,不做任何更改。

您还可以用来pwd_mkdb更新密码数据库。

答案2

尝试pwd_mkdb -p /etc/master.passwd。从man pwd_mkdb

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

答案3

我注意到 lbutler 之前的用户的 UID 和 GID 为 10014(而不是预期的 1014)。该用户更改了密码,之后 UID 1015 无法登录。使用 vipw 我颠倒了两行并保存了文件。两个用户现在都可以登录并且所有权显示正确。感谢您的指点。

答案4

FreeBSD 确实使用数据库文件来查找密码和用户等。因此 /etc/passwd 和 master.passwd 的存在只是出于兼容性和信息原因。人们永远不应该依赖这一点。不知道有没有办法直接询问数据库文件。也许他们应该为其提供某种 SQL 接口,以便 ppl 可以检查系统上的用户等等。然后他们就可以完全废除/etc/passwd和master.passwd。

相关内容