Portál AbcLinuxu, 10. května 2025 22:08
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.