Sì, anche se abbastanza raro, questo è sicuramente fattibile.
Invece di provare a implementarlo come predefinito /etc/password
/etc/shadow
metodo di autenticazione basato su non prevede tale configurazione, il modo più semplice è delegare l'autenticazione a un back-end che supporta già più password per un utente.
Un noto è LDAP il cui userPassword
attributo è multivalore secondo RFC4519 :
Un esempio della necessità di più valori nell'attributo 'userPassword' è un ambiente in cui ogni mese l'utente dovrebbe utilizzare una password diversa generata da un sistema automatizzato. Durante i periodi di transizione, come l'ultimo e il primo giorno dei periodi, potrebbe essere necessario consentire la validità di due password per i due periodi consecutivi nel sistema.
Nonostante questo RFC, sarà probabilmente necessario modificare la configurazione dei criteri password sulla maggior parte delle implementazioni del server di directory affinché questa impostazione sia effettivamente accettata.
Sul lato Linux, nulla vieta di farlo (qui un account chiamato è testuser
stato dato entrambi pass1
e pass2
come userPassword
valori di attributo):
$ uname -a
Linux lx-vb 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ grep VERSION /etc/os-release
VERSION="13.04, Raring Ringtail"
$ grep "^passwd" /etc/nsswitch.conf
passwd: files ldap
$ ldapsearch -LLL -h localhost -p 1389 -D "cn=directory manager" -w xxxxxxxx "uid=testuser" userPassword
dn: uid=testuser,ou=People,dc=example,dc=com
userPassword:: e1NTSEF9b2JWYXFDcjhNQmNJVXZXVHMzbE40SFlReStldC9XNFZ0NU4yRmc9PQ==
userPassword:: e1NTSEF9eDlnRGZ5b0NhKzNROTIzOTFha1NiR2VTMFJabjNKSWYyNkN3cUE9PQ==
$ grep testuser /etc/passwd
$ getent passwd testuser
testuser:*:12345:12345:ldap test user:/home/testuser:/bin/sh
$ sshpass -p pass1 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass2 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass3 ssh testuser@localhost id
Permission denied, please try again.
Ecco alcune implicazioni tecniche e di sicurezza di quel tipo di configurazione:
- l'account utente sarà ovviamente più vulnerabile agli attacchi, sebbene ciò che conta davvero qui sia la qualità e la protezione delle password più dei loro numeri.
- la maggior parte dei programmi di utilità presuppone che l'utente abbia una singola password, quindi non consentirà all'utente di aggiornare individualmente una delle password. La modifica della password comporterà quindi probabilmente un singolo attributo della password per l'utente.
- se l'obiettivo è consentire a più persone di condividere lo stesso account utilizzando ciascuno la propria password, non esiste alcun meccanismo per identificare chi accede effettivamente in base alla password utilizzata.
sudo
per consentire all'utente1 di eseguire i comandi come utente2. (sudo
non è solo per eseguire comandi come root; può eseguire comandi come qualsiasi utente.)