歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 合理運用su和sudo命令以保證系統用戶安全

合理運用su和sudo命令以保證系統用戶安全

日期:2017/2/28 14:45:05   编辑:Linux教程

Linux系統為我們提供了su、sudo兩種用戶權限管理機制,其中su主要是用來切換用戶,而sudo用戶來提升執行權限。下面分別進行詳細講解。

一、su命令——切換用戶
使用su命令,可以切換為指定的另一個用戶,從而具有該用戶的所有權限。當然,切換時需要目標用戶的密碼進行驗證(從root切換為其他用戶時列外)
例如:當普通用戶切換root身份時,需要輸入root的密碼。

上述命令操作中,選項“-”等同於“--login”或“-l”,表示切換後進入目標用戶的登錄shell環境,若缺少此選項則僅切換身份,不切換用戶環境。
默認情況下,任何用戶都允許使用su命令,從而有機會反復嘗試其他用戶的登錄密碼,帶來安全風險。為了加強su命令的使用控制,可以借助於pam_wheel認證模塊,只允許極個別用戶使用su命令進行切換。

實現過程如下:
1、將需要使用su命令的用戶加入wheel組

2、修改配置文件/etc/pam.d/su、啟用pam_sheel認證。
vim /etc/pam.d/su
auth required pam_wheel.so use_uid
......//省略部分內容
3、此時user用戶就可以使用su命令了,而其他沒有加入wheel組的用戶就不可以使用su命令。

二、sudo命令——提升權限
使用sudo命令可以使某些用戶具有一些特殊的權限,而這個用戶不需要知道管理員的密碼,不過,這需要有管理員預先進行授權,指定允許那些用戶以管理員的身份來執行那些命令。
sudo命令的配置文件在/etc/sudoers中,需要向這個配置文件中添加指定用戶的指定權限,此用戶才能執行這些權限,可以使用visudo命令或vim等命令進行編輯。(注意:使用vim進行編輯時需要加!強制保存)
配置文件/etc/sudoers中,授權記錄的基本配置格式如下所示。
user MACHING=COMMANDS
主要包括用戶、主機、命令三個部分,即那些用戶從那些主機執行那些命令。
用戶(user):授權的用戶名,或采用“%組名”的形式表示一個組。
主機(MACHING):使用此配置文件的主機名,一般設為localhost。
命令(COMMABDS):允許授權的用戶通過sudo方式執行的命令,需要填寫命令程序的完整路徑,多個命令之間使用逗號“,”隔開。

1、修改/etc/sudores配置文件給指定用戶授權
列如:授權用戶user具有執行ifconfig命令的權限。
[root@lcoalhost /]#visudo
......//省略部分內容
user localhost=/sbin/ifconfig

2、使用別名定義的方式給多個用戶授權
當使用相同授權的用戶較多時,或者授權的命令較多時,可以采用集中定義別名。用戶、主機、命令部分都可以定義別名(別名必須大寫),分別通過關鍵字User_Alias、Host_Alias、Cmnd_Alias來進行設置。
如下:設置允許用戶user1、user2、user3在主機localhost執行rpm、yum等命令
[root@lcoalhost /]#visudo
......//省略部分內容
User_Alias USERS=user1,user2,user3
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
USERS localhost=PKGTOOLS
在給用戶授權時,命令部分可以使用通配符“*”和取反符號“!”,當需要授權某個目錄下的所有命令,取消其中個別命令時特別有用。

3、為sudo啟用日志記錄功能
默認情況下,通過sudo方式執行的操作並不記錄。若要啟用sudo日志記錄功能,應在/etc/sudores文件中增加“Defaults logfile”選項。
如下:添加sudo日志記錄功能
[root@lcoalhost /]#visudo
......//省略部分內容
Defaults logfile=“/var/log/sudo”

4、用戶通過sudo命令執行授權命令
對於已獲得授權的用戶,通過sudo方式執行特權命令時,只需要將正常的命令行作為sudo命令的參數即可。如下:user用戶執行ifconfig命令

首次執行sudo命令需要輸入當前用戶的密碼,有效期是5分鐘,也就是輸入密碼後5分鐘內沒有使用sudo密碼,那麼下次執行sudo命令時又會提示輸入密碼。
若不希望用戶執行sudo命令時輸入密碼,可以修改配置文件/etc/sudores如下:
[root@lcoalhost /]#visudo
......//省略部分內容
user localhost=NOPASSWD:/sbin/ifconfig
此時在使用user用戶執行ifconfig命令時就不在提示輸入密碼了。
若要查看當前用戶以獲得哪些sudo授權命令時,可是執行“sudo -l”命令。

Copyright © Linux教程網 All Rights Reserved