因爲root的權限太大,所以一般不能以管理員直接登錄,或su - root去操作,這時我們就需要用到sudo這個命令去幫助我們執行一些普通用戶沒有權限的管理命令。
sudo命令的特點:
1、授權指定用戶在指定主機上運行指定的管理命令;
2、詳細記錄用戶基於sudo執行的命令的相關日誌信息;
3、“檢票系統”:時效性認證,用戶第一次執行sudo時會要求輸入密碼來驗正用戶身份,成功後用戶會獲得一個有固定存活時長的“令牌”;5分鐘
如何實現sudo功能?
/etc/sudoers:授權文件,只能由管理員編輯;但一般不用vim直接去編輯,因爲可能會出現語法錯誤,所以一般用專用的編輯工具visudo命令去授權。
/etc/sudoers:
注意:別名定義: 別名必須使用全大寫字符
內置變量: ALL: 所有用戶
User_Alias:
User_Alias NAME = item1, item2, ...
item:
用戶名
%組名
#UID
$#GID
User_Alias(表示可以使用已經定義的別名)
例: User_Alias ADMIN =centos,%lx,#500
表示定義ADMIN別名,有centos用戶,lx組,UID爲500的用戶
Host_Alias:可以在哪些主機上運行
Host_AliasNAME = item1, item2, ...
item:
hostname
ip
network
Host_Alias
例: Host_Alias ALLOWADDR =172.16.37.10,172.16.0.0/16
表示定義ALLOWADDR別名,有ip爲172.16.37.10,網絡地址爲172.16.0.0/16
Runas_Alias
Runas_AliasNAME = item1, item2, ...
用法和User_Alias相同
Cmnd_Alias:
Cmnd_AliasNAME = item1, item2, ...
item:
命令
目錄(目錄下的所有命令)
Cmnd_Alias
例: Cmnd_Alias COMMAND =/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin
表示定義COMMAND別名,有useradd,userdel,和/usr/sbin下的所有命令
定義時可取反:Cmnd_AliasPASSWD = /usr/bin/passwd [0-9A-Za-z]*,! /usr/bin/passwd root
sudo授權:
WHO HOST=(WHOM) COMMAND
例:centos MYPC=(root) /usr/sbin/useradd
標籤:
NOPASSWD:表示標籤之後的命令都不用輸密碼
PASSWD:表示標籤之後的命令都用輸密碼
sudo命令:
-l: 查看當前用戶可執行的sudo命令;
-u USERNAME COMMAND: 以指定的用戶身份執行指定的COMMAND;
-k: 清除“令牌”
-b COMMAND: 在後臺運行指定的COMMAND
-e /path/to/somefile:修改指定的文件;
例:sudo-u centos useradd user1