linux 使用者可以在不知道目前密碼的情況下更改密碼嗎?
我正在設置幾個
ubuntu
盒子,並使用 opscodechef
作為配置工具。在每台伺服器上為每個使用者安裝公鑰並禁用密碼驗證將相當容易。但是,使用者也應該有
sudo
權限,預設情況下需要密碼。如果我想使用使用者的公鑰作為訪問管理的一種方法並允許使用者
sudo
特權,這是否意味著我也應該使用NOPASSWD: ALL
in設置使用者visduo
,或者有沒有一種方法可以讓使用者更改自己的密碼,如果他們只有公鑰認證?
Sudo 在其最常見的配置中要求使用者輸入密碼。通常,使用者已經使用他們的密碼對帳戶進行身份驗證,再次輸入密碼是確認合法使用者沒有放棄他們的控制台並被劫持的一種方式。
在您的設置中,使用者的密碼將僅用於對 sudo 的身份驗證。特別是,如果使用者的 SSH 密鑰被洩露,攻擊者將無法提升到伺服器上的 root 權限。攻擊者可以在賬戶中植入一個鍵盤記錄器,但是這個鍵盤記錄器會被其他使用者檢測到,甚至可以被自動監視。
使用者通常需要知道他們目前的密碼才能將其更改為不同的密碼。該
passwd
程序會驗證這一點(它可以配置為不這樣做,但這在您的場景中沒有用或根本不需要)。但是,root 可以在不知道舊密碼的情況下更改任何使用者的密碼;因此,具有 sudo 權限的使用者可以更改自己的密碼,而無需passwd
通過執行在提示符處輸入密碼sudo passwd $USER
。如果配置為要求使用者輸入密碼,則使用者無論如何sudo
都必須輸入密碼。sudo
您可以有選擇地禁用密碼驗證。在您的情況下,您將禁用 ssh 中的密碼驗證,並可能在其他服務中禁用。大多數現代 unice(包括 Ubuntu)上的大多數服務都使用PAM來配置身份驗證方法。在 Ubuntu 上,PAM 配置文件位於
/etc/pam.d
. 要禁用密碼驗證,請註釋掉auth … pam_unix.so
./etc/pam.d/common-auth
此外,請確保您已禁用 sshd 的PasswordAuthentication no
內置/etc/ssh/sshd_config
密碼驗證。您可能希望允許某些管理使用者使用密碼登錄,或允許在控制台上進行密碼驗證。PAM 可以做到這一點(它非常靈活),但我無法告訴你我的想法有多離譜。如果您需要幫助,請提出單獨的問題。