Sí, aunque es poco común, definitivamente es factible.
En lugar de intentar implementarlo usted mismo, ya que el /etc/password
/etc/shadow
método de autenticación basado en el predeterminado no tiene una disposición para dicha configuración, la forma más sencilla es delegar la autenticación a un back-end que ya admite múltiples contraseñas para un usuario.
Uno bien conocido es LDAP cuyo userPassword
atributo tiene varios valores de acuerdo con RFC4519 :
Un ejemplo de la necesidad de múltiples valores en el atributo 'userPassword' es un entorno donde cada mes se espera que el usuario use una contraseña diferente generada por algún sistema automatizado. Durante los períodos de transición, como el último y el primer día de los períodos, puede ser necesario permitir que dos contraseñas para los dos períodos consecutivos sean válidas en el sistema.
A pesar de este RFC, es probable que deba cambiar la configuración de la política de contraseñas en la mayoría de las implementaciones de servidores de directorios para que esta configuración se acepte realmente.
En el lado de Linux, nada prohíbe que lo hagan (en este caso una cuenta llamada testuser
se le dio tanto pass1
y pass2
como userPassword
valores de atributos):
$ 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.
Aquí hay algunas implicaciones técnicas y de seguridad de ese tipo de configuración:
- la cuenta de usuario obviamente será más vulnerable a los ataques, aunque lo que realmente importa aquí es la calidad y la protección de las contraseñas más que sus números.
- la mayoría de las empresas de servicios públicos asumen que el usuario tiene una contraseña única, por lo que no le permitirá actualizar individualmente una de las contraseñas. El cambio de contraseña probablemente dará como resultado un único atributo de contraseña para el usuario.
- Si el objetivo es permitir que varias personas compartan la misma cuenta utilizando cada una su propia contraseña, no hay ningún mecanismo para identificar quién inicia sesión realmente en función de la contraseña utilizada.
sudo
para permitir al usuario1 ejecutar comandos como usuario2. (sudo
No es sólo para ejecutar comandos como root, sino que puede ejecutar comandos como cualquier usuario.)