Ya, meskipun sangat jarang, ini pasti bisa dilakukan.
Alih-alih mencoba mengimplementasikannya sendiri karena /etc/password
/etc/shadow
metode otentikasi berbasis default tidak memiliki ketentuan untuk konfigurasi seperti itu, cara yang lebih sederhana adalah dengan mendelegasikan otentikasi ke back-end yang sudah mendukung banyak kata sandi untuk pengguna.
Yang terkenal adalah LDAP yang userPassword
atributnya multinilai menurut RFC4519 :
Contoh kebutuhan untuk beberapa nilai dalam atribut 'userPassword' adalah lingkungan di mana setiap bulan pengguna diharapkan menggunakan kata sandi berbeda yang dihasilkan oleh beberapa sistem otomatis. Selama periode transisi, seperti hari terakhir dan pertama periode, mungkin perlu untuk mengizinkan dua kata sandi untuk dua periode berturut-turut untuk valid dalam sistem.
Meskipun dengan RFC ini, Anda mungkin perlu mengubah konfigurasi kebijakan kata sandi pada sebagian besar implementasi server direktori agar pengaturan ini benar-benar diterima.
Di sisi Linux, tidak ada yang melarang untuk melakukannya (di sini akun bernama testuser
diberi keduanya pass1
dan pass2
sebagai userPassword
nilai atribut):
$ 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.
Berikut adalah beberapa implikasi terkait teknis dan keamanan dari jenis konfigurasi itu:
- akun pengguna jelas akan lebih rentan terhadap serangan meskipun yang paling penting di sini adalah kualitas dan perlindungan kata sandi lebih dari jumlah mereka.
- sebagian besar utilitas menganggap pengguna memiliki kata sandi tunggal sehingga tidak akan mengizinkan pengguna untuk memperbarui salah satu kata sandi secara individual. Perubahan kata sandi kemungkinan akan menghasilkan atribut kata sandi tunggal untuk pengguna.
- jika tujuannya adalah untuk memungkinkan beberapa orang berbagi akun yang sama menggunakan masing-masing kata sandi mereka sendiri, tidak ada mekanisme untuk mengidentifikasi siapa yang benar-benar masuk berdasarkan kata sandi yang digunakan.
sudo
untuk memungkinkan user1 untuk menjalankan perintah sebagai user2. (sudo
bukan hanya untuk menjalankan perintah sebagai root; ia dapat menjalankan perintah seperti pengguna mana pun.)