Sudo

細粒度 sudo 權限不起作用

  • July 23, 2020

我已經進行了配置,sudo以便我可以在沒有密碼的情況下執行命令,但僅限於我在特定組中時。但是它仍然要求輸入密碼。

我試試看

#↳ sudo --group docker-user -s
#↳ sudo -k #drop sudo credentials
#↳ groups
docker-user sudo …
#↳ sudo --group docker /usr/bin/docker images
[sudo] password for bob

我不期待密碼。這docker.sudo意味著允許 group docker-userdocker作為 group執行docker,沒有密碼。

我做錯了什麼?是什麼阻止它工作。


讓我們看看配置

#↳ sudo cat /etc/sudoers.d/docker.sudo
Cmnd_Alias DOCKER = /usr/bin/docker
%docker-user ALL = (:docker) NOPASSWD : DOCKER

#↳ sudo cat /etc/sudoers #comments removed
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

更多測試

#↳ groups
docker_user sudo …
#↳ sudo -ll
Matching Defaults entries for richard on delor-1:
   env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User richard may run the following commands on delor-1:

Sudoers entry:
   RunAsUsers: ALL
   RunAsGroups: ALL
   Commands:
       ALL

為了擴展@ctrl-alt-delor 的答案,該頁面提到了在(版本)部分下sudoers man的輔助規則的處理規則/etc/sudoers.d``Including other files from within sudoers``sudo``1.9.1

sudo 將暫停目前文件的處理並讀取 /etc/sudoers.d 中的每個文件,跳過以 ‘~’ 結尾或包含 ‘.’ 的文件名 字元以避免導致包管理器或編輯器臨時/備份文件出現問題。

但是,手冊本節的第一句話提到(包含 a )中的機器本地sudoers文件可以直接通過 包含,這使我相信只有那些通過包含的文件才有問題。所以,我懷疑如果原始文件有以下內容/etc/sudoers.local``.``@include /etc/sudoers.local``.``@includedir``/etc/sudoers

@include /etc/sudoers.d/docker.sudo

問題不會存在(但當然/etc/sudoers.d目錄的重點是使用@includedir…)

引用自:https://unix.stackexchange.com/questions/599995