Sudoers:别名已定义““

Sudoers:别名已定义““

我在以下文件中定义了/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/ 中的所有文件都将被读取两次,并会引起上述警告。

相关内容