系統安全及應用(四)----su命令切換用戶 sudo命令提升普通用戶的執行權限以及操作查看

作爲一個開放源代碼的操作系統,linux系統以其安全性,高效穩定而廣泛應用,主要從賬戶安全,系統引導,登錄控制的角度,優化linux系統的安全性,linux的環境的弱口令檢查,網絡掃描等安全工具的構建和使用,幫助運維人員查找安全隱患,及時採取有針對性的措施。

一般情況下,不建議直接使用root用戶登錄,一是減少因操作失誤而造成的破壞;二是降低特權密碼被泄露的風險。鑑於這些原因,需要爲普通用戶提供一種身份切換或權限提升機制,以進行管理任務

su命令----切換用戶

使用su命令,可以切換一個指定的用戶, 擁有該用戶的所有權限

[root@localhost ~]# su - zhangsan
//root切換爲普通用戶,不需要密碼驗證

[zhangsan@localhost ~]$ su- root
需要密碼:
//普通用戶切換爲root,需要驗證

選項“-”等同於"-login"或"-"表示切換用戶後進入目標用戶的登錄shel環境,若不帶此選項則僅切換身份,不切換用戶環境。

默認所有用戶允許使用su命令,從而有機會反覆嘗試其他用戶(root) 的登陸密碼,帶來安全風險。可以使用pam_ wheei認證模塊,只允許極個別用戶使用su命令進行切換。

sudo命令一提升用戶的執行權限

通過su命令可以非常方便地切換爲另一個用戶,但前提條件是必須知道目標用戶的登錄密碼。
例如,若要從zhangsan用戶切換爲root用戶,必須知道root用戶的密碼。對於生產環境中的Linux服務器,每多一個人知道特權密碼,其安全風險也就增加一分。那麼,有沒有一種折中的辦法,既可以讓普通用戶擁有一部分管理權限. 又不需要將root用戶的密碼告訴他呢?答案是肯定的.

使用sudo命令就可以提升執行權限。不過,需要由管理員預先進行授權,指定允許哪些用戶以超級用戶(或其他普通用戶)的身份來執行哪些命令.

配置單個用戶sudo授權

sudo機制的配置文件爲/etc/sudoers。/etc/sudoers文件的默認權限爲440,需使用專門的visudo工具進行編輯。雖然也可以用vim進行編輯,但保存時必須執行" :w! "命令來強制操作,否則系統將提示爲只讀文件而拒絕保存

第一次通過sudo執行命令時,必須以用戶自己的密碼(不是root用戶或者其他用戶的密碼)進行驗證。此後再次通過sudo執行時,只要不與前一-次sudo操作的間隔超過5分鐘, 則不再重複驗證。

配置格式如下所式:

權配置主要包括 用戶,主機.命令三個部分各部分的具體含義如下:
user MACHINE=COMMAND 命令前加!則表示這個命令不執行

1.用戶(user):直接授權指定的用戶名,或採用"%組名”的形式(授權-個組的所有用戶)。

2.主機(MACHINE):使用此配置文件的主機名稱。此部分主要是方便在多個主機間共用同一份sudoers,文件,般設爲localhost或者實際的主機名即可.

3.命令(COMMANDS):允許授權的用戶通過sudo方式執行的特權命令。需填寫命令程序的完整路徑,多個命令之間以逗號”, “進行分隔。

假如授權給aaa用戶 在localhost 主機上執行ifconfig命令:
[root@localhost ~]# vim /etc/sudoers

例如,若要授權用戶aaa能夠執行ifconfig命令來修改IP地址,而wheel組的用戶無需驗證密碼即可執行任何命令,可以執行以下操作。

修改配置文件/etc/sudoers
[root@localhost ~]# visudo //也可使用vim /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL
//wheel組的用戶不需要密碼驗證

aaa localhost=/sbin/ifconfig
//aaa能在主機localhost,上執行ifconfig命令修改IP地址

sudo批量授權

當使用相同授權的用戶較多,或者授權的命令較多時,可以採用集中定義的別名,用戶主機命令部分都可以定義爲別名(必須爲大寫),分別通過關鍵字User. Alias, Host_ Alias, Cmnd_ Alias來進行設置。

例如,以下操作通過別名方式來添加授權記錄,允許用戶aaa在主機localhost中執行rpm, yum命令。

User_ Alias USER=aaa
Host_ Alias HOST=localhost
Cmnd_ Alias CMND=/bin/rpm,/usr/bin/yum
USER HOST=CMND
這四行表示允許用戶aaa在主機localhost上執行rpm,yum命令

aaa localhost=/sbin/ ,!/sbin/ifconfig
aaa可以在主機localhost執行在/sbin目錄下除了ifconfig外所有的命令
*

通過sudo執行特權命令,需在命令前加sudo

aaa@localhost ~]$ ifconfig ens33 10.0.0.1/8 //未使用sudo命令
SIOCSIFADDR: 不允許的操作
SIOCSIFFLAGS: 不允許的操作
SIOCSIFNETMASK: 不允許的操作
[aaa@localhost ~]$ sudo ifconfig ens33 10.0.0.1/8 //使用sudo命令,便可以執行
Connection closed by foreign host.

查詢用戶的授權操作
[root@localhost ~]# sudo -l

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章