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)