ใช่แม้ว่าจะค่อนข้างแปลก แต่ก็สามารถทำได้
แทนที่จะพยายามใช้ด้วยตนเองเป็น/etc/password
/etc/shadow
วิธีการรับรองความถูกต้องตามค่าเริ่มต้นไม่มีข้อกำหนดสำหรับการกำหนดค่าวิธีที่ง่ายกว่าคือการมอบหมายการรับรองความถูกต้องให้กับส่วนหลังที่รองรับรหัสผ่านหลายรายการสำหรับผู้ใช้แล้ว
หนึ่งที่รู้จักกันดีคือLDAPซึ่งuserPassword
แอตทริบิวต์มีหลายค่าตามRFC4519 :
ตัวอย่างของความต้องการค่าหลายค่าในแอตทริบิวต์ 'userPassword' คือสภาพแวดล้อมที่คาดว่าผู้ใช้ทุกเดือนจะใช้รหัสผ่านที่แตกต่างกันซึ่งสร้างขึ้นโดยระบบอัตโนมัติบางระบบ ในช่วงเวลาการเปลี่ยนผ่านเช่นวันสุดท้ายและวันแรกของรอบระยะเวลาอาจจำเป็นต้องอนุญาตให้ใช้รหัสผ่านสองครั้งเพื่อให้รหัสผ่านสองช่วงเวลาต่อเนื่องกันถูกต้องในระบบ
แม้จะมี RFC นี้ แต่คุณอาจต้องเปลี่ยนการกำหนดค่านโยบายรหัสผ่านในการปรับใช้เซิร์ฟเวอร์ไดเรกทอรีส่วนใหญ่เพื่อให้การตั้งค่านี้ได้รับการยอมรับจริง
ในด้าน Linux, ห้ามอะไรที่จะทำมัน (ที่นี่บัญชีที่มีชื่อtestuser
ได้รับทั้งสองpass1
และpass2
เป็นuserPassword
ค่าแอตทริบิวต์):
$ 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.
นี่คือผลกระทบทางเทคนิคและความปลอดภัยที่เกี่ยวข้องกับการกำหนดค่าประเภทนั้น:
- บัญชีผู้ใช้จะมีความเสี่ยงที่จะถูกโจมตีได้อย่างชัดเจนแม้ว่าสิ่งที่สำคัญในที่นี้คือคุณภาพและการป้องกันรหัสผ่านมากกว่าหมายเลขของพวกเขา
- ยูทิลิตี้ส่วนใหญ่ถือว่าผู้ใช้มีรหัสผ่านเดียวดังนั้นจะไม่อนุญาตให้ผู้ใช้อัปเดตรหัสผ่านใดรหัสหนึ่ง การเปลี่ยนรหัสผ่านอาจส่งผลให้มีแอตทริบิวต์รหัสผ่านเดียวสำหรับผู้ใช้
- หากเป้าหมายคืออนุญาตให้ผู้ใช้หลายคนแบ่งปันบัญชีเดียวกันโดยใช้รหัสผ่านของตนเองแต่ละคนจะไม่มีกลไกในการระบุว่าใครเข้าสู่ระบบจริงตามรหัสผ่านที่ใช้
sudo
ให้ผู้ใช้สามารถเรียกใช้คำสั่งในฐานะผู้ใช้ 2 (sudo
ไม่ได้มีไว้สำหรับการเรียกใช้คำสั่งในฐานะรูท แต่สามารถเรียกใช้คำสั่งในฐานะผู้ใช้รายใดก็ได้)