/etc/sudoers 文件


sudo的權限控制可以在/etc/sudoers文件中查看到

如果想要控制某個用戶(或某個組用戶)只能執行root權限中的一部分命令, 或者允許某些用戶使用sudo時不需要輸入密碼

格式一般都是 root ALL=(ALL) ALL

授權用戶/組 主機  =[(切換到哪些用戶或組)] [是否需要輸入密碼驗證] 命令1,命令2,...
字段1      字段2  =[(字段3)] [字段4] 字段5

注意:凡是[ ]中的內容, 都能省略; 命令和命令之間用,號分隔;


字段1:
不以%號開頭的表示"將要授權的用戶" root
以%號開頭的表示"將要授權的組" %wheel

字段2:表示允許登錄的主機
ALL表示所有; 如果該字段不為ALL,表示授權用戶只能在某些機器上登錄本服務器來執行sudo命令
eg:jack mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown
表示: 普通用戶jack在主機(或主機組)mycomputer上, 可以通過sudo執行reboot和shutdown兩個命令

字段3:
如果省略, 相當於(root:root),表示可以通過sudo提權到root; 如果為(ALL)或者(ALL:ALL), 表示能夠提權到(任意用戶:任意用戶組)。
注意:如果沒省略,必須使用( )雙括號包含起來

字段4:
可能取值是NOPASSWD:。請注意NOPASSWD后面帶有冒號:。表示執行sudo時可以不需要輸入密碼
eg:lucy ALL=(ALL) NOPASSWD: /bin/useradd
表示: 普通用戶lucy可以在任何主機上, 通過sudo執行/bin/useradd命令, 並且不需要輸入密碼

字段5:授權給用戶的操作
逗號分開一系列命令或者ALL表示允許所有操作
注意:命令必須使用絕對路徑
命令的絕對路徑可通過which指令查看到
[root@VM_0_10_centos ~]# which chmod
/bin/chmod

  

高級詳解

如果寫成這樣:
papi ALL=(root) NOPASSWD: /bin/chown,/usr/sbin/useradd
表示: 用戶papi能在所有可能出現的主機上, 提權到root下執行/bin/chown, 不必輸入密碼; 但運行/usr/sbin/useradd 命令時需要密碼.

注意:因為NOPASSWD:只影響了其后的第一個命令: 命令1.
在具有sudo操作的用戶下, 執行sudo -l可以查看到該用戶被允許和被禁止運行的命令


通配符和取消命令
eg:papi ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk

命令前面加上!號表示取消該命令
表示意思:用戶papi在所有可能出現的主機上, 能夠運行目錄/usr/sbin和/sbin下所有的程序, 但fdisk除外.

  

編輯文件方式:

 

強烈建議通過visudo命令來修改該文件,通過visudo修改,如果配置出錯,會有提示

 

 

系統文檔推薦的做法是,修改/etc/sudoers.d 目錄下的文件

通過此方法修改sudoers ,需要在/etc/sudoers文件的最后行,加上

#includedir /etc/sudoers.d

注意;這里的指令#includedir是一個整體, 前面的#號不能丟,並非注釋,也不能在#號后有空格。

任何在/etc/sudoers.d/目錄下,不以~號結尾的文件和不包含.號的文件,都會被解析成/etc/sudoers的內容。

 

小技巧:

輸入密碼的時候有反饋

一般sudo后輸入密碼,都是不會顯示任何東西的

vim /etc/sudoers 

修改 Defaults env_reset -> Defaults env_reset,pwfeedback即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM