我在中定義了以下文件/etc/sudoers.d/50-apps
Cmnd_Alias APPS=/usr/bin/systemctl start app-*, /usr/bin/systemctl stop app-*,\
/etc/init.d/app1, /etc/init.d/app2
Cmnd_Alias LOGS=/usr/bin/less /var/log/*, /bin/tail -f /var/log/*, /bin/tail /var/log/*,\
/bin/ls /var/log/*
%developers ALL= NOPASSWD: SETENV: APPS, LOGS
%testers ALL= NOPASSWD: SETENV: LOGS
該文件按預期工作,經過驗證visudo
並阻止不需要的命令。但是每次我使用 sudo 執行命令時,在命令的實際輸出之前都會收到此訊息:
john@appserver1:~$ sudo ls /var/log/mysql
/etc/sudoers.d/50-apps:2:51: Alias "" already defined
/etc/init.d/app1, /etc/init.d/app2
^
/etc/sudoers.d/50-apps:5:40: Alias "�h6�U" already defined
/bin/ls /var/log/*
第二行的垃圾每次運行都會改變。可能是什麼問題?
PS 我了解路徑遍歷並對其添加了修復,但讓我們保持這個範例簡單。
答案1
如果 sudoers 檔案包含兩次,則可能會發生這種情況,如果 /etc/sudoers 包含兩行具有相同含義的行,則可能會發生這種情況,例如:
@includedir /etc/sudoers.d
#includedir /etc/sudoers.d
現在, /etc/sudoers.d/ 中的所有檔案將被讀取兩次,並將導致上述警告。