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


12

查看/ 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似乎没有问题

Answers:


9

看来您的帐户发生了一些损坏/etc/master.passwd。您可以将其恢复到正常状态,请尝试:

  • vipw编辑/etc/master.passwd
  • 保存并保持不变。

您也可以使用pwd_mkdb更新密码数据库。


5
+1:OP可能是Linux用户,并认为OS实际上将/ etc / passwd作为主要来源。在FreeBSD上,从/ etc / passwd生成的DB文件等是真实的实际主要来源。
沃伦·杨

OP,请稍后使用vipw,这样您就不必管理详细信息。
Winny 2014年

使用vipw和save保持不变没有任何区别。我确实查看过master.passwd文件中此用户之前列出的用户的备份和用户密码,有关的时间是管家停止登录的时间。我可以还原master.passwd,我应该运行pwd_mkdb /etc/master.passwd吗?@winny:我从来没有直接编辑过passwd文件
lbutlr 2014年

这应该是正确的调用参数:pwd_mkdb -p /etc/master.shadow
Winny 2014年

3

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

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

1

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.