다음 파일을 정의했습니다./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/의 모든 파일은 두 번 읽혀지며 위의 경고가 발생합니다.