昨天遇到一個很奇怪的事情,有一臺伺服器在使用su - root命令切換到root賬號時,老是報密碼不正確。但是root密碼完全是正確的,而且可以使用賬號密碼直接ssh登錄伺服器。很是納悶,如下所示: [oracle@DB-Server ~]$ more /etc/redhat-release Red... ...
昨天遇到一個很奇怪的事情,有一臺伺服器在使用su - root命令切換到root賬號時,老是報密碼不正確。但是root密碼完全是正確的,而且可以使用賬號密碼直接ssh登錄伺服器。很是納悶,如下所示:
[oracle@DB-Server ~]$ more /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)
[oracle@DB-Server ~]$ su - root
Password:
su: incorrect password
[oracle@DB-Server ~]$
後面Google搜索了一些資料,然後測試、驗證後才弄明白了具體原因。在Linux中為了更進一步加強系統的安全性,很有必要建立了一個管理員的組,只允許這個組的用戶來執行“su -”命令登錄為root用戶,而讓其他組的用戶即使執行“su -”、輸入了正確的root密碼,也無法登錄為root用戶。在UNIX和Linux下,這個組的名稱通常為“wheel”。而這個是在配置文件/etc/pam.d/su裡面配置的。如下截圖所示:
"auth required pam_wheel.so use_uid" 表示禁止非wheel組用戶切換到root。所以就出現了上面在oracle用戶下切換root用戶報密碼錯誤的情況
[root@DB-Server ~]# groups oracle
oracle : oinstall dba
[root@DB-Server ~]# cat /etc/pam.d/su
Wheel組概念
Wheel組是Unix系統一個遺留物。當伺服器需要做比日常例行維護更高級的工作的時候,就經常需要用到root許可權了。而這個wheel組就是建立用來歸納一些特殊的系統用戶用的,這其中的用戶都或多或少地擁有root的部分功能和許可權。也就是說如果你不是wheel組成員,那就沒有root身上任何的特權。也因為這樣,使用wheel組成員用戶的話,會儘量減少對系統“摧毀性”破壞的概率和風險。如今大多數的Linux發行版本中,仍然保留了wheel這個組,雖然它已經不像當初設計出來的那樣必要了,但是有些老玩家還是忠於這種舊式經典風格的,所以他們經常還是依舊讓wheel組發揮著以往的作用。他們是這樣做的:在建立他們自己的用戶時,將其添加入wheel組中(用wheel組作為用戶的主組),或者使用vigr來編輯/etc/group文件,將他們的用戶名追加到wheel組那行的末尾。
為什麼需要wheel組?
通常在UNIX下,即使我們是系統的管理員,也不推薦用 root 用戶登錄來進行系統管理。一般情況下用普通用戶登錄,在需要 root 許可權執行一些操作時,再 su 登錄成為 root 用戶。但是,任何人只要知道了 root 的密碼,就都可以通過 su 命令來登錄為 root 用戶——這無疑為系統帶來了安全隱患。所以,將普通用戶加入到 wheel 組,被加入的這個普通用戶就成了管理員組內的用戶,但如果不對一些相關的配置文件進行配置,這個管理員組內的用戶與普通用戶也沒什麼區別——就像警察下班後,沒有帶槍、穿這便衣和普通人(用戶)一樣,雖然他的的確確是警察。這個對於系統安全確實很有幫助。
1:查看wheel組
[root@DB-Server ~]# cat /etc/group | grep wheel
wheel:x:10:root
[root@DB-Server ~]# groups oracle --查看某個用戶的用戶組
oracle : oinstall dba
2:檢查日誌發現那些做了su切換的日誌信息。
[root@DB-Server ~]# grep su /var/log/secure | grep -v sudo
Jun 20 11:32:46 DB-Server su: pam_unix(su-l:session): session opened for user oracle by root(uid=0)
Jun 20 11:32:53 DB-Server su: pam_unix(su-l:auth): authentication failure; logname=root uid=500 euid=0 tty=pts/2 ruser=oracle rhost= user=root
Jun 20 11:33:07 DB-Server su: pam_unix(su-l:auth): authentication failure; logname=root uid=500 euid=0 tty=pts/2 ruser=oracle rhost= user=root
Jun 20 11:33:20 DB-Server su: pam_unix(su-l:session): session closed for user oracle
[root@DB-Server ~]#
解決方法也很簡單,要麼將對應的賬號加入wheel組,要麼註釋掉配置文件/etc/pam.d/su中的"auth required pam_wheel.so use_uid" 那一行記錄。
參考資料:
http://www.2cto.com/os/201310/251533.html