linux中沒有密碼的情況下切換到另一個用戶帳戶
VSole2021-12-17 06:57:42
如何在不需要密碼的情況下切換到另一個或特定的用戶帳戶。例如,我們有一個名為postgres的用戶帳戶(PostgreSQL默認超級用戶系統帳戶),我們希望名為postgres的組中的每個用戶(通常是我們的PostgreSQL數據庫和系統管理員)使用su命令切換到postgres帳戶,而不需要輸入密碼。
默認情況下,只有root用戶可以在不輸入密碼的情況下切換到另一個用戶帳戶。任何其他用戶將被提示輸入他們要切換到的用戶帳戶的密碼(或者如果他們使用sudo 命令,他們將被提示輸入他們的密碼),如果沒有提供正確的密碼,會得到一個 authentication failed錯誤有兩種解決方案
1. 使用PAM認證模塊
PAM(Pluggable authentication modules) 是現代 Linux 操作系統上用戶身份驗證的核心。為了允許特定組中的用戶無需密碼即可切換到另一個用戶帳戶,我們可以修改該組的默認 PAM 設置su command在里面/etc/pam.d/su文件。
# vim /etc/pam.d/su OR $ sudo vim /etc/pam.d/su
之后添加以下配置 auth sufficient pam_rootok.soauth [success=ignore default=1] pam_succeed_if.so user = postgres auth sufficient pam_succeed_if.so use_uid user ingroup postgres
在上面的配置中,第一行檢查目標用戶是否是postgres,如果是,則服務檢查當前用戶,否則,default=1跳過該行并執行正常的認證步驟。
auth [success=ignore default=1] pam_succeed_if.so user = postgres
接下來的行檢查當前用戶是否在組中postgres, 如果yes,則認為身份驗證過程成功并返回足夠的結果。否則,將執行正常的身份驗證步驟。
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
保存文件并關閉它。
接下來,添加用戶(例如rumenz) 你想要su的賬戶postgres沒有組的密碼postgres使用usermod 命令。
$sudo usermod -aG postgres rumenz
現在嘗試su的postgres作為用戶的帳戶rumenz,你不應被提示輸入密碼,如下面的屏幕截圖所示:
$ su - postgres
2. 使用Sudoers文件
你還su可以通過在sudoers文件中進行一些更改而無需密碼即可訪問其他用戶。在這種情況下,用戶(例如rumenz) 誰將切換到另一個用戶帳戶(例如postgres) 應該在sudoers文件或 sudo 組中才能調用sudo command.
$ sudo visudo
然后在該行下方添加以下配置
%sudo ALL=(ALL:ALL) ALL rumenz ALL=NOPASSWD: /bin/su – postgres
保存并關閉文件。
現在嘗試到su帳戶postgres作為用戶rumenz,shell 不應提示你輸入密碼:
$ sudo su - postgres
還有其它的配置選項參考幫助手冊。
$ man pam.conf $ man sudo
VSole
網絡安全專家