如何在不使用密碼的情況下切換(su)到另一個用戶帳戶


在本文中,我們將展示如何在不需要密碼的情況下切換到另一個或特定的用戶賬戶。例如,我們有一個名為postgres的用戶賬戶(默認的PostgreSQL超級用戶系統賬戶),我們希望在名為postgres的組中的每個用戶(通常是我們的PostgreSQL數據庫和系統管理員)使用su命令切換到postgres賬戶,而無需輸入密碼。
默認情況下,只有root用戶可以在不輸入密碼的情況下切換到另一個用戶賬戶。任何其他用戶都會被提示輸入他們要切換到的用戶賬戶的密碼(如果他們使用的是sudo命令,則會被提示輸入他們的密碼),如果他們沒有提供正確的密碼,他們會得到一個"authentication failed"認證失敗的錯誤提示。
您可以使用下面提供的兩種解決方案中的任何一種來解決上述問題。
1.使用PAM身份驗證模塊
PAM(可插入身份驗證模塊)是現代Linux操作系統上用戶身份驗證的核心。為了允許特定組中的用戶無需密碼即可切換到另一個用戶帳戶,我們可以在/etc/pam.d/su文件中修改su命令的默認PAM設置。
#vim /etc/pam.d/su

$ sudo vim /etc/pam.d/su
在 "auth sufficient pam_rootok.so "后添加以下配置,如下所示。
auth [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組中,如果是,則認為認證過程成功,並返回足夠的結果。否則,將執行正常的認證步驟。
auth sufficient pam_succeed_if.so use_uid user ingroup postgres

保存文件並關閉它。
接下來,使用usermod命令將您想要的用戶(例如aaronk)添加su到postgres帳戶中,而無需輸入密碼到group postgres中。
$sudo usermod -aG postgres aaronk
現在嘗試以aaronk用戶身份登錄su到postgres帳戶,不應該提示您輸入密碼,如以下屏幕截圖所示:
$ su - postgres
2.使用Sudoers文件
你也可以通過在sudoers文件中做一些修改,在不需要密碼的情況下su到另一個用戶。在這種情況下,將切換到另一個用戶帳戶(例如postgres)的用戶(例如aronk)應該在sudoers文件或sudo組中,以便能夠調用sudo命令。
$ sudo visudo
然后在"%sudo ALL=(ALL:ALL) ALL "一行下面添加以下配置,如下所示。
aaronk ALL=NOPASSWD: /bin/su – postgres

保存並關閉文件。
現在,su以aaronk用戶身份嘗試使用postgres帳戶,Shell不應提示您輸入密碼:
$ sudo su-Postgres
以上就是如何在不輸入密碼的情況下切換帳號。A5互聯https://www.a5idc.net/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM