useradd nie szyfruje haseł w / etc / shadow

20

Natknąłem się na ten problem, próbując utworzyć nowych użytkowników FTP dla vsftpd. Po utworzeniu nowego użytkownika za pomocą następującego polecenia i próbie zalogowania się za pomocą FileZilla, pojawia się błąd „niepoprawne hasło”.

useradd f -p pass -d /home/f -s /bin/false

Po wykonaniu tej czynności plik / etc / shadow zawiera

f:pass:1111:0:99:2:::

Raz uruchomię następujące polecenie i podam to samo hasło

passwd f

/ etc / shadow zawiera

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Wygląda na to, że szyfrowanie ma miejsce, gdy uruchamiam passwd , ale nie działa po dodaniu użytkownika

Co ważne, po zrobieniu tego jestem w stanie zalogować się na FTP z tymi samymi poświadczeniami.

Używam CentOS 5.11, vsftpd dla FTP i FileZilla dla FTP Access

/ var / log / secure zawiera:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

Dlaczego to nie działa, kiedy przechodzę -p passdo useradd? Co muszę zrobić, aby działało?

Zły do ​​szpiku kości
źródło
Nie widzę tam pytania? - Takimi rzeczami zarządza się za pośrednictwem PAM i zazwyczaj się /var/log/secure
loguje
@HBruijn Zaktualizowałem swoją odpowiedź, aby pokazać, co jest zapisane w / var / log / secure
BadToTheBone
2
Naprawdę? +12 za pytanie, na które wyraźnie odpowiada odpowiednia strona podręcznika?
CVn
Zauważ, że w skrócie hasła $1$wskazuje , że użyto MD5 . MD5, choć nie jest straszne dla haseł, jest obecnie słabą stroną. To całkowicie odrębne pytanie, ale absolutnie zachęcam do rozważenia migracji do silniejszej funkcji skrótu.
CVn
2
Uwaga dodatkowa: hasła /etc/shadownie są szyfrowane, ale szyfrowane
Tobias Kienzler,

Odpowiedzi:

43

To działa zgodnie z przeznaczeniem. Jeśli chcesz ustawić hasło za pomocą useraddpolecenia, musisz podać hashowaną wersję hasła useradd.

Łańcuch passspełnia kryteria formatu pola hashowanego hasła w /etc/shadow, ale rzeczywisty skrót hash do tego łańcucha. Powoduje to, że dla wszystkich celów i celów to konto będzie zachowywać się tak, jakby miało hasło, ale każde hasło, którego spróbujesz użyć, aby uzyskać do niego dostęp, zostanie odrzucone jako niepoprawne hasło.

Zobacz man useraddlub dokumentację użytkownika :

-p, --password HASŁO

Zaszyfrowane hasło zwrócone przez crypt (3) . Domyślnie hasło jest wyłączone.

Uwaga: Ta opcja nie jest zalecana, ponieważ hasło (lub hasło szyfrowane) będzie widoczne dla użytkowników wymieniających procesy.

Należy upewnić się, że hasło jest zgodne z zasadami haseł systemu.

kasperd
źródło
32

manuseradd :

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Powinieneś przekazać do niego zaszyfrowane hasło.
Nie hasło w postaci zwykłego tekstu.

oszust
źródło
16

useraddoczekuje, że przekażesz mu skrót hasła, a nie samo hasło. Możesz użyć następującej odmiany polecenia, aby podać zaszyfrowane hasło do useraddpolecenia:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Aby znaleźć dostępne metody, użyj:

mkpasswd --method=help

Aby uniknąć podania hasła w wierszu poleceń, umieść hasło w pliku (za pomocą edytora i nieużywanego echolub podobnego) i wykonaj następujące czynności:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

Spowoduje to przekazanie zaszyfrowanego hasła w wierszu polecenia, ale nie w postaci zwykłego tekstu.

mkpasswdpochodzi z expectpaczki.

Wstrzymano do odwołania.
źródło
2
Nie używaj MD5! Użyj SHA-2
Josef
9
Zrobić notatkę, że chwilowo eksponuje hasło za pośrednictwem różnych interfejsów jądra (dowolny proces może czytać wiersz poleceń jakiegokolwiek innego procesu) i może spowodować, że są zapisane w postaci zwykłego tekstu na dysk do $ historii lub podobnych mechanizmów.
CVn
@ MichaelKjörling: Bardzo dobra uwaga. Zobacz moją zredagowaną odpowiedź.
Wstrzymano do odwołania.
1
Oczywiście nadal przechowujesz hasło dysku w postaci zwykłego tekstu. Przynajmniej daje to administratorowi systemu wybór. Może w tym momencie lepiej jest po prostu użyć fałszywego hasła na początku i natychmiast biegać, passwdaby zmienić je na coś innego ......
CVn
2
Oczywiście Dennis, jest o wiele lepszy, ale hasło wciąż trafia na dysk w postaci zwykłego tekstu. W niektórych sytuacjach i przy określonych modelach zagrożeń może to stanowić prawdziwy problem. To nie ma być.
CVn