Máte pravdu:/etc/passwd
a /etc/shadow
jsou konzultovány pam_unix.so
, které jsou součástí PAM. Alespoň na moderních Linuxech. Toto můžete změnit záplatou pam_unix.so
. Pokud je třeba věřit manuálové stránce, nemůžete změnit umístění systémových databází.
A to opravdu nechceš. /etc/passwd
se nepoužívá pouze pro autentizaci, ale také pro (reverzní) rozlišení jmen a pro vyhledání věcí, jako je celé jméno uživatele, shell atd. Název a umístění jsou tak standardizované, že jejich přesunutí by téměř určitě rozbilo věci mimo pouze PAM. Museli byste záplatovat mnohem více, než jste očekávali.
Aktualizace: Pokud se pokoušíte skrýt /etc/{passwd,shadow,group}
soubory pro bezpečnost, nedělejte si s tím starosti. Zabezpečení pomocí neznáma zřídka pomáhá jako politika. Nechte je tam, kde jsou, a zpřísněte zbytek svých zásad.
Aktualizace:možné řešení
Pokud máte nějaký vlastní software, který potřebujete pro přístup k jiné sadě databází uživatelů/skupin, můžete si vytvořit kopii příslušných modulů PAM a NSS a je opravit. používat vaše vlastní databáze. Původní unixové databáze zůstávají tam, kde jsou, takže software není zmatený, ale můžete nastavit PAM a NSS tak, aby používaly vaše vlastní moduly, kdekoli potřebujete, a za použití jakékoli zásady, která vám dává smysl.
Udržujte unixové databáze v podstatě nedotčené a máte to, co jste požadovali. To je v podstatě to, co radius
a ldap
Moduly PAM/NSS ano:poskytují dodatečné (nikoli náhradní) zdroj přihlašovacích údajů a informací o uživatelích/skupinách.
Jdeme ještě o krok dále:můžete se vrátit k PAM a NSS a úplně zakázat vyhledávání unixových databází. Nechte tam soubory pro starý software (jejich pohledy na databáze uživatelů/skupin budou samozřejmě nepřesné, ale alespoň se nerozbijí).
To, co hledáte, je pam_pwdfile
modul. Na Debian/Ubuntu je balíček libpam-pwdfile
(nejsem si jistý distribucemi odvozenými od RedHat).
README
součástí balení vysvětluje, jak jej používat.
Nejsem si jistý, jestli je to možné hned po vybalení, ale určitě je to možné s nějakým hackováním. K tomu budete potřebovat:
- Vylaďte/hackněte knihovnu nsswitch (/lib/libnss_files.so nebo libnss_db.so – zkontrolujte svůj /etc/nsswitch.conf), aby načetla nějaký jiný soubor.
- Vylaďte/hackněte modul pam_unix, aby mohl číst některé další soubory.