Vytvořte nový účet s názvem test :
$ sudo useradd test
test momentálně nemá heslo. Takže
$ su test
nefunguje. Pokud to zkusíte, budete požádáni o test heslo. žádné nemá. To není totéž jako jeho prázdné heslo, takže pokud zadáte prázdné heslo stisknutím klávesy Enter, zobrazí se zpráva „su:Authentication failure“.
Totéž platí, pokud přepnete na tty a pokusíte se přihlásit jako test :Prázdné heslo není akceptováno.
Nyní přiřaďte test prázdné heslo:
$ sudo passwd -d test
Nyní se můžete přihlásit jako test na tty zadáním prázdného řetězce jako hesla. Pokud se však pokusíte
$ su test
opět se vám stále zobrazuje zpráva „su:Authentication failure“ relace se nepřepne na uživatele test .
Proč tomu tak je?
Přijatá odpověď:
Z výstupu ldd /bin/su , su binární je kompilován pomocí pam knihovny (libpam* ), takže autentizaci, správu účtu, zahájení relace atd. bude spravovat pam .
Níže je uvedeno, jak su typického systému Ubuntu spravuje pam , měli byste najít podobný přístup, pokud používáte jinou distribuci.
pam pravidla pro su jsou definovány v souboru /etc/pam.d/su . Tento soubor také obsahuje common-auth , common-passwd , common-session soubory ze stejného adresáře jako běžné šablony pro pokrytí úkolů, které jejich název naznačuje (a používá se v jiných pam povolené služby).
V mém systému v dolní části /etc/pam.d/su mám:
@include common-auth
@include common-account
@include common-session
Předchozí řádky se nezabývají kontrolou nulového hesla, je to hlavně práce pam_unix modul.
Nyní /etc/pam.d/common-auth má:
auth [success=1 default=ignore] pam_unix.so nullok_secure
Z man pam_unix :
nullok
Výchozí akcí tohoto modulu je nepovolit uživateli přístup ke službě, pokud je jeho oficiální heslo prázdné. Argument nullok přepíše toto výchozí nastavení a umožní každému uživateli s
prázdným heslem přístup ke službě.nullok_secure
Výchozí akcí tohoto modulu je nepovolit uživateli přístup ke službě, pokud je jeho oficiální heslo prázdné. Argument nullok_secure přepíše toto výchozí nastavení a umožní každému uživateli
s prázdným heslem přístup ke službě, pokud je hodnota PAM_TTY nastavena na jednu z hodnot nalezených v /etc/securetty.
jak můžete vidět, pokud nullok_secure Pokud není nastavena proměnná prostředí PAM_TTY je nastaveno uvedeným způsobem, uživatel s nulovým heslem se nebude moci přihlásit pomocí su .
Tedy umožnit každému uživateli s nulovým heslem provést su , musíte mít nullok argument do pam_unix modul:
auth [success=1 default=ignore] pam_unix.so nullok
toto není bezpečné jako common-auth soubor používá mnoho dalších služeb, dokonce pouze pro su to by se nemělo dělat. (Kvůli testování jej můžete nastavit jednou a poté se vrátit zpět k originálu. I když pokud chcete test provést, je lepší začlenit všechny logiky do /etc/pam.d/su soubor a poté upravte jakékoli změny, místo abyste si pohrávali s common-* soubor)