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即可