Sudo
你可以給一個使用者帳戶多個密碼嗎?
我想為一個帳戶分配 2 個密碼。我想知道的是 1)這可能嗎,以及 2)這對安全有什麼影響?
我之所以要這樣做是因為我目前正忙於一些本地測試,並且我認為在某些特定情況下會很方便。經過一番研究,我發現了一種叫做PAM的東西,但我很難找到有關安裝/配置如何工作的資訊。
我正在執行 Ubuntu 12.04。
是的,雖然很少見,但這絕對是可行的。
與其嘗試自己實現它,因為基於預設
/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.
以下是這種配置的一些技術和安全相關影響:
- 使用者帳戶顯然更容易受到攻擊,儘管這裡真正重要的是密碼的質量和保護而不是其數量。
- 大多數實用程序假定使用者只有一個密碼,因此不允許使用者單獨更新其中一個密碼。密碼更改可能會導致使用者的單個密碼屬性。
- 如果目標是允許多人使用各自的密碼共享同一個帳戶,則沒有機制可以根據所使用的密碼來辨識實際登錄的人。