„Nie ma takiego użytkownika”, ale użytkownik jest w pliku passwd

12

Przeglądanie plików w / 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

Ale:

$ passwd lbutler
passwd: lbutler: no such user

Ponadto pliki są /home/lbutler/wyświetlane jako UID 1005 i GIDlbutler

/etc/passwdWygląda na to, że inni użytkownicy nie mają problemu

lbutlr
źródło

Odpowiedzi:

9

Wygląda na to, że wystąpiły u ciebie niektóre korupcje /etc/master.passwd. Możesz przywrócić go do normalnego stanu, spróbuj:

  • vipwedytować /etc/master.passwd.
  • Zapisz to bez zmian.

Możesz także użyć pwd_mkdbdo aktualizacji bazy danych haseł.

Cuonglm
źródło
5
+1: OP może być użytkownikiem Linuksa i myśli, że system operacyjny zwraca uwagę na / etc / passwd jako główne źródło. W FreeBSD pliki DB generowane z / etc / passwd i takie są faktycznym podstawowym źródłem prawdy.
Warren Young,
OP, proszę użyć vipww przyszłości, wtedy nie musisz zarządzać szczegółami.
Winny
Korzystanie z vipw i save bez zmian nie miało znaczenia. Spojrzałem na kopie zapasowe i hasło użytkownika wymienionego na liście, zanim ta w pliku master.passwd zmieniła się w momencie, gdy lokaj przestał się logować. Czy mogę przywrócić master.passwd, czy powinienem uruchomić pwd_mkdb /etc/master.passwd? @winny: Nigdy nie edytowałem bezpośrednio pliku passwd
lbutlr
To powinny być odpowiednie argumenty wywołania:pwd_mkdb -p /etc/master.shadow
Winny
3

Spróbować pwd_mkdb -p /etc/master.passwd. Od man pwd_mkdb:

 -p    Create a Version 7 style password file and install it into
       /etc/passwd.
Vladislav
źródło
1

Zauważyłem, że użytkownik bezpośrednio przed lbutler miał UID i GID 10014 (zamiast oczekiwanego 1014). Ta użytkownik zmieniła hasło, a następnie UID 1015 nie mógł się zalogować. Za pomocą vipw odwróciłem dwie linie i zapisałem plik. Zarówno użytkownicy mogą się teraz zalogować, a prawa własności pojawiają się poprawnie. Dzięki za wskazówki.

lbutlr
źródło
0

FreeBSD korzysta z plików bazy danych do wyszukiwania haseł i użytkowników itd. Tak więc plik / etc / passwd, a także master.passwd są dostępne tylko ze względu na kompatybilność i informacje. Nigdy nie należy na tym polegać. Nie wiem, czy istnieje sposób bezpośredniego zapytania o pliki bazy danych. Może powinni udostępnić interfejs SQL, aby ppl mógł sprawdzić, którzy użytkownicy są w systemie i tak dalej. Następnie mogą całkowicie znieść / etc / passwd i master.passwd.

Lars Schotte
źródło