Puoi assegnare a un account utente più password?


21

Voglio assegnare 2 password a un singolo account. Quello che voglio sapere è 1) è possibile e 2) quali sono le implicazioni di sicurezza di questo?

Il motivo per cui voglio farlo è perché al momento sono impegnato con alcuni test locali e ho pensato che sarebbe stato conveniente in alcune situazioni specifiche. Dopo alcune ricerche ho trovato qualcosa chiamato PAM , ma faccio fatica a trovare informazioni su come funziona l'installazione / configurazione.

Sto eseguendo Ubuntu 12.04.


1
Probabilmente mi limiterei a configurare sudoper consentire all'utente1 di eseguire i comandi come utente2. ( sudonon è solo per eseguire comandi come root; può eseguire comandi come qualsiasi utente.)
cjm

Risposte:


16

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 userPasswordattributo è 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 è testuserstato dato entrambi pass1e pass2come userPasswordvalori 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.

1
Potete per favore approfondire perché questo non ha implicazioni per la sicurezza? La mia prima impressione è stata che aumenterebbe le possibilità di compromissione di un account, soprattutto se una password è significativamente più debole dell'altra.
Joseph R.,

1
@JosephR. Hai ragione. Ho appena aggiornato la mia risposta dopo aver implementato ciò che ho suggerito e sperimentato con esso.
jlliagre,

Ottima risposta, funziona come un fascino ora. Grazie :)
aggregate1166877

7

Ho appena provato a creare 2 voci per un utente nel /etc/shadowfile e non ha funzionato. Qualunque sia stata la prima voce è stata la voce della password utilizzata.

Esempio

Creato un utente test.

$ useradd -d /home/newuser newuser

Impostare la password su "super123":

$ passwd newuser

Modifica manualmente il /etc/shadowfile e fai una seconda voce:

newuser:$6$....password #1...:15963:0:99999:7:::
newuser:$6$....password #2...:15963:0:99999:7:::

Quindi tenta di accedere con l'account utilizzando le 2 password.

su - newuser

La prima voce /etc/shadowè ciò che viene utilizzato, la voce nella seconda posizione non funziona mai, se le capovolgi in questo modo:

newuser:$6$....password #2...:15963:0:99999:7:::
newuser:$6$....password #1...:15963:0:99999:7:::

Quindi la seconda password funziona e la prima no.

Usa sudo

Questo approccio è un hack totale, vorrei solo usare sudo, è in parte il motivosudo esiste.

Puoi aggiungere questa voce al tuo file sudoers ( /etc/sudoers) che consentirebbe all'utente il permesso joe di fare qualsiasi cosa come te:

joe ALL=(yourusername) ALL

In realtà ho dimenticato che sudopuò farlo .. +1
aggregate1166877

4

Se puoi farlo, probabilmente non dovresti.

La configurazione di PAM è alquanto complessa e c'è un vero accenno ai meccanismi di autenticazione: esiste una serie finita di configurazioni corrette ma una serie infinita di configurazioni non sicure. Questo rende quasi una certezza che se provi a cambiare le cose e non sai esattamente cosa stai facendo, rovinerai tutto.

Se la scelta è tra sicurezza e "conveniente in alcune situazioni specifiche", optare per la prima.


+1 per "sicurezza sulla convenienza" (con cui sono pienamente d'accordo), ma sono il tipo di persona che vuole testare tutto, anche se solo per l'esperienza, quindi non al 100% la risposta che sto cercando.
aggregato

2

È possibile impostare due nomi utente diversi, ciascuno con la propria password, per lo stesso account. Esegui vipwper modificare /etc/passwdmanualmente, duplica la riga esistente per l'account che ti interessa e cambia il nome utente (e se ti piace il campo Gecos , la directory home e la shell). Esegui vipw -se duplica la riga per quell'utente in /etc/shadow. Accedi con il nuovo nome utente ed esegui passwdper modificare la password per il nuovo nome utente. Ora hai due nomi utente diversi, con password diverse, per lo stesso account (l'ID utente è ciò che determina l'account).

Questa probabilmente non è una buona idea. A seconda di ciò che stai cercando di fare, altri approcci potrebbero essere più appropriati:

  • Crea un altro account e condividi i file eseguendo il commit e il checkout dal controllo versione.
  • Crea un altro account, crea un gruppo a cui appartengono entrambi gli account utente e dai al gruppo l'accesso in scrittura ai file che desideri condividere.
  • Crea un altro account e dai al primo account il diritto di eseguire comandi come quell'account con sudo:

    user1 ALL = (user2) ALL
    
  • Crea una chiave SSH per l'account che consenta di eseguire solo un comando specifico .

ti dispiacerebbe copiarlo qui? http://askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.