sudo:superuser do,實現普通用戶執行root命令的授權工具。 一般用戶管理系統的方式是利用su切換為超級用戶。但是使用su的缺點之一在於必須要先告知超級用戶的密碼。 sudo使一般用戶不需要知道超級用戶的密碼即可獲得許可權 #過程: (1)超級用戶授權:首先 超級用戶 將普通用戶的名字 ...
sudo:superuser do,實現普通用戶執行root命令的授權工具。
一般用戶管理系統的方式是利用su切換為超級用戶。但是使用su的缺點之一在於必須要先告知超級用戶的密碼。
sudo使一般用戶不需要知道超級用戶的密碼即可獲得許可權
#過程:
(1)超級用戶授權:首先 超級用戶 將普通用戶的名字、可以執行的特定命令、按照哪種用戶或用戶組的身份執行等信息,登記在特殊的文件中(通常是/etc/sudoers),即完成對該用戶的授權(此時該用戶稱為“sudoer”);
(2)管理員確認用戶的身份:在一般用戶需要取得特殊許可權時,其可在命令前加上“sudo”,此時sudo將會詢問該用戶自己的密碼(以確認終端機前的是該用戶本人),回答後系統即會將該命令的進程以超級用戶的許可權運行。
(3)以超級用戶身份執行命令:之後的一段時間內(預設為5分鐘,可在/etc/sudoers自定義),使用sudo不需要再次輸入密碼。
sudo的組成:
-
軟體包
-
配置文件
-
授權規則配置文件
軟體包:sudo
配置文件:/etc/sudo.conf #一般不用修改
授權規則配置文件:#
/etc/sudoers #這個文件不建議直接改,因為改錯了就會影響授權x
/etc/sudoers.d #可以把授權文件放在這個目錄下麵,防止所有授權規則放在一起太臃腫
#配置文件中支持使用通配符 glob
安全編輯授權規則文件和語法檢查工具: visudo ≈ vim /etc/sudoers
/usr/sbin/visudo #建議這個命令來改用戶的授權,在編輯的時候有語法提示功能,格式錯誤會提示
sudo工具授權文件的編寫格式
#格式:
授權用戶 登入的主機=(代表用戶) 能執行的操作
user host=(runas) command
user: 表示給誰授權 #%group 表示對組進行授權
host: 表示在哪個主機登錄 ALL表示所有主機
(runas):表示以哪個用戶的身份運行 一般是root
command: 表示能執行那些操作(命令需要寫絕對路徑) ALL表示所有
#其中NOPASSWD:command 表示不用驗證這個用戶的密碼
User的形式:
username #用戶名
#uid #uid的形式
%group_name #組的形式
%#gid #gid的形式
host的形式:
ip或hostname #ip地址或者主機名
network(/netmask) #ip地址/子網掩碼
command的形式:
command name #命令的名字
directory #這個目錄裡面的所有命令都授權
sudoedit #sudoedit是一個編輯授權配置文件的工具。表示被授權的用戶可以編輯sudo的授權配置文件(/etc/sudoers)
#範例:授權tom用戶具有掛載光碟的功能
tom ALL=(root) /usr/bin/mount /dev/cdrom /mnt
sudo的別名
-
用戶別名
-
主機別名
-
代表者別名
-
操作別名
sudo授權的時候允許加自定義的別名
四種別名:
User_Alias #被授權的用戶
Runas_Alias #代表誰
Host_Alias #主機
Cmnd_Alias #執行的操作
#別名必須是大寫字母和數字、下劃線的結合
#定義別名的格式:
定義別名類型 別名的名稱 = 值1,...,值n
範例
User_Alias NETADMIN= netuser1,netuser2 #定義用戶別名
Cmnd_Alias NETCMD = /usr/sbin/ip,/usr/sbin/ifcon #定義操作別名
NETADMIN ALL=(root) NETCMD
sudo命令:
sudo -i -u tom 切換身份功能和 su 相似,但不一樣 #因為sudo必須提前授權,而且要輸入自已的密碼確認自己的身份,而su的話是需要切換者的密碼。
#su switch user
sudo [-u user] COMMAND
-V 顯示版本信息等配置信息
-u user 預設為root #表示代表誰執行這個操作
-l,ll 列出用戶在主機上可用的和被禁止的命令
-v 再延長密碼有效期限5分鐘,更新時間戳
範例
#修改驗證密碼間隔為2分鐘
[root@centos8 ~]#vim /etc/sudoers
Defaults env_reset , timestamp_timeout=2
#sudo -V 可以查看用戶的預設時間間隔。
#ubuntu 預設用戶具有sudo許可權
#它是將普通用戶都加到了sudo這個組裡面了。
root@ubuntu1804:~# grep %sudo /etc/sudoers
%sudo ALL=(ALL:ALL) ALL #ALL:ALL 任何用戶:任何組
修改ubuntu的visudo的預設編輯器
#ubuntu的visudo預設是使用nano工具打開的
export EDITOR=vim