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/*

2 行目のゴミは実行するたびに変わります。何が問題なのでしょうか?

PS パス トラバーサルについては知っており、修正も加えましたが、この例は単純なままにしておきましょう。

答え1

これは、sudoers ファイルが 2 回含まれている場合に発生する可能性があります。これは、/etc/sudoers に次のような同じ意味を持つ 2 つの行が含まれている場合に発生する可能性があります。

    @includedir /etc/sudoers.d
    #includedir /etc/sudoers.d

これで、/etc/sudoers.d/ 内のすべてのファイルが 2 回読み取られ、上記の警告が発生します。

関連情報