«Такого пользователя нет», но пользователь находится в файле 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не имеют проблем

lbutlr
источник

Ответы:

9

Похоже, что с вами произошли некоторые искажения /etc/master.passwd. Вы можете восстановить его до нормального состояния, попробуйте:

  • vipwредактировать /etc/master.passwd.
  • Сохраните его без изменений.

Вы также можете использовать pwd_mkdbдля обновления базы паролей.

cuonglm
источник
5
+1: OP может быть пользователем Linux и думает, что операционная система действительно обращает внимание на / etc / passwd в качестве основного источника. В FreeBSD файлы БД, сгенерированные из / etc / passwd, являются фактическим основным источником правды.
Уоррен Янг
OP, пожалуйста, используйте vipwв будущем, тогда вам не нужно управлять деталями.
Винни
Использование vipw и сохранение без изменений не имеет значения. Я просмотрел резервные копии и пароль пользователя для пользователя, перечисленного до того, как этот пароль в файле master.passwd изменился прямо в то время, когда дворецкий перестал иметь возможность войти в систему. Я могу восстановить master.passwd, если мне нужно запустить pwd_mkdb /etc/master.passwd? @winny: я никогда не редактировал файл passwd напрямую
lbutlr
Это должны быть правильные аргументы вызова:pwd_mkdb -p /etc/master.shadow
Winny
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, я перевернул две строки и сохранил файл. Теперь оба пользователя могут войти в систему, и права собственности отображаются правильно. Спасибо за указатели.

lbutlr
источник
0

FreeBSD использует файлы базы данных для поиска паролей и пользователей и так далее. Так что / etc / passwd, а также master.passwd есть только для совместимости и в целях информации. Никогда не следует полагаться на это. Я не знаю, есть ли способ напрямую запросить файлы базы данных. Может быть, они должны предоставить какой-то SQL-интерфейс для него, чтобы ppl мог проверить, какие пользователи находятся в системе и так далее. Затем они могут полностью отменить / etc / passwd и master.passwd.

Ларс Шотт
источник