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