su是switch user的縮寫,為了從某個用戶環境中切換到另一個用戶環境中,比如說su – root是切換到root用戶,並且使用root用戶的環境變量,而su root是切換到root用戶,但使用的是當前用戶的環境變量,再多的就不再贅述.
su的存在方便了用戶,但是也有安全隱患,su的濫用可能導致安全隱患.
本文主要體驗利用PAM來限制su的行為
測試環境:Ubuntu 10.10
查看當前用戶的情況
在Ubuntu系統中,默認安裝時第一個用戶被添加到admin組,我安裝ubuntu時的用戶是freetstar,用id命令查看freetstar所在的用戶組
┌┌(freetstar@freetstar-lap)┌(3657/pts/1)┌(01:02pm:06/09/11)
┌-└┌(%:~)┌- id
uid=1000(freetstar) gid=1000(freetstar) groups=1000(freetstar),4(adm),20(dialout),24(cdrom),29(audio),30(dip),46(plugdev),110(netdev),111(lpadmin),119(admin),122(sambashare),125(libvirtd)
第一步:測試正常情況下的su操作
第二步:修改認證模塊,只是注釋掉這兩個認證模塊┌┌(freetstar@freetstar-lap)┌(3671/pts/8)┌(01:23pm:06/09/11)┌-
└┌(%:/var/log)┌- sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
#說明,首先利用sudo給root用戶設置密碼
┌┌(freetstar@freetstar-lap)┌(3673/pts/8)┌(01:28pm:06/09/11)┌-
└┌(%:/var/log)┌- su – root
Password:
┌┌(root@freetstar-lap)┌(23/pts/8)┌(01:28pm:06/09/11)┌-
└┌(#:~)┌-
#su到root用戶 ┌(freetstar@freetstar-lap)┌(3674/pts/8)┌(01:31pm:06/09/11)┌- └┌(%:/var/log)┌- sudo tail -f auth.log …… Jun 9 13:30:15 freetstar-lap su[15097]: Successful su for root by freetstar Jun 9 13:30:15 freetstar-lap su[15097]: + /dev/pts/7 freetstar:root Jun 9 13:30:15 freetstar-lap su[15097]: pam_unix(su:session): session opened for user root by freetstar(uid=1000) #查看auth信息,顯示freetstar這個用戶su到root用戶成功
sudo vim /etc/pam.d/su # auth required pam_wheel.so # auth sufficient pam_wheel.so trust 第一行表示需要是wheel用戶組的用戶才可以執行su操作 第二行表示su時不需要提供密碼
保存退出,嘗試登錄root用戶,
┌┌(freetstar@freetstar-lap)┌(3662/pts/7)┌(01:39pm:06/09/11)┌-
└┌(%:~/Downloads)┌- su - root
Password:
su: Permission denied
#提示被拒
┌┌(freetstar@freetstar-lap)┌(3675/pts/8)┌(01:38pm:06/09/11)┌-
└┌(%:/var/log)┌- sudo tail -f auth.log
……
Jun 9 13:39:28 freetstar-lap su[15097]: pam_unix(su:session): session closed for user root
Jun 9 13:39:32 freetstar-lap su[15407]: pam_authenticate: Permission denied
Jun 9 13:39:32 freetstar-lap su[15407]: FAILED su for root by freetstar
Jun 9 13:39:32 freetstar-lap su[15407]: – /dev/pts/7 freetstar:root
#提示失敗
第三步:設置”wheel組”
Wheel本來的意義是讓只有在Wheel組中的用戶才有權限去執行su命令,但在現在的Linux發行版中,幾乎沒有了Wheel這樣一個組
基本上只有BSD發行版才默認啟用Wheel組.關於Linux中的wheel,看Richard大神怎麼說的:here
在這裡不用太麻煩地去添加wheel組,再usermod的將當前用戶添加到wheel組中.我們只
需要重新修改認證模塊的配置文件
sudo vim /etc/pam.d/su auth required pam_wheel.so group=admin auth sufficient pam_wheel.so trust #將默認的wheel組改成admin組,admin組即Ubuntu下的管理組
重新嘗試su
┌┌(freetstar@freetstar-lap)┌(3687/pts/7)┌(01:50pm:06/09/11)┌-
└┌(%:~/Downloads)┌- su - root
Password:
┌┌(root@freetstar-lap)┌(23/pts/7)┌(01:56pm:06/09/11)┌-
└┌(#:~)┌-
#成功了
auth.log就不再貼了,基本上和第一步的日志一樣
這裡有一個小問題:root用戶默認不再admin組裡,所以為了讓root用戶也可以無障礙su,需要將root用戶添加到admin組中
Tips:
1 任何使用su成功與否的信息都會在日志中有記錄
2 謹慎修改,修改不當會造成無法開機進入系統