Portál AbcLinuxu, 26. října 2025 02:06
Díky diskusi o heslech v /etc/shadow jsem zjistil, že po změně PAM pro využití blowfish se mi všechna hesla ukládají pomocí DES. Problém je v tom, že k samotnému pam_unix2 není skoro žádná dokumentace a ať se snažím jak se snažím tak tak blowfish nemůžu zprovoznit.
Jak jsem na to šel? Nejdřív jsem pomocí sed-u změnil všechny výskyty pam_unix.so na pam_unix2.so a pak všechny výskyty md5 na blowfish. Dále jsem v /etc/default/passwd změnil CRYPT=md5 na CRYPT=blowfish.
Výsledkem je, že passwd (pro změnu hesla u existujícího uživatele – aby se použil jiný šifrovací algoritmus) přestává fungovat:
crypt_t: Don't know 0 Error: Password NOT changed. passwd: Authentication token manipulation error
Začal jsem tedy hledat, kde je problém. Postupným kombinováním jsem zjistil, že problém nastává okamžitě s přepsáním pam_unix.so na pam_unix2.so, které nereaguje ani na parametr md5.
Ze souboru /etc/pam.d/passwd jsem i zkusil všechny parametry pro pam_unix2.so odstranit (vzhledem k tomu, že v dokumentaci se píše: „/etc/default/passwd defines, which password encryption algorithm should be used in case of a password change.“).
Přesto se nic neděje, passwd stále nefunguje.
v /etc/pam.d/passwd mám jen toto:
password required pam_unix2.so blowfish shadow
Nakonec jsem se problém s nefunkčností passwd pokusil obejít pomocí chpasswd. Ovšem právě chpasswd dává jako výsledek heslo v DES, nezávisle na tom, jaká je hodnota CRYPT v /etc/default/passwd. Ve jmenované diskusi pan Kubeček tvrdí, že podle dokumentace se typ hashe změní jen při přidání hesla, takže jsem heslo smazal, výsledkem je ale stále DES.
Nějaké nápady?
CRYPT_FILES (v závislosti na tom, co je v /etc/nsswitch.conf)?
CRYPT_YP=des, podle komentáře je to ale je pro NIS.
Jen pro doplnění /etc/nsswitch.conf:
# Begin /etc/nsswitch.conf passwd: files group: files shadow: files publickey: files hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: db files # End /etc/nsswitch.conf
Problém konečně úspěšně vyřešen.
Když jsem zjišťoval, jak se vlastně heslo ukládá, zjistil jsem, že podle dokumentace glibc crypt tvoří hash jen v DES popř. v md5. Následovalo googlování odkud jsem se dostal až na stránky Novellu, kde se mi podařilo najít jakousi knihovnu libxcrypt, která podle popisu nahrazuje libcrypt z glibc přidává podporu pro blowfish a bigcrypt. Vzhledem k tomu, že v Archu libxcrypt není, začal jsem hledat něco podobného. Našel jsem libmcrypt. Po krátkém prostudování zdrojáku pam_unix2 jsem ale zjistil, že použít jde jen libxcrypt. Vytvořil jsem tedy PKGBUILD, naistaloval libxcrypt, překompiloval PAM a tradá! Vše funguje.
Jinak díky za snahu. Teď se chystám napsat do Arch wiki malé how-to.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.