"sudo -u xxx cmd"는 실패하지만 "sudo -u xxx /path/to/cmd"는 성공하는 이유는 무엇입니까?

"sudo -u xxx cmd"는 실패하지만 "sudo -u xxx /path/to/cmd"는 성공하는 이유는 무엇입니까?

최근 AWS Linux 서버 인스턴스 유형을 업그레이드했습니다. 여전히 SLES 12 SP1입니다. 그러나 몇 가지 차이점을 발견했는데 그 중 일부는 혼란스럽습니다.

$ sudo -u xyz cmd ...
<it asks for password, causing old scripts to break>

$ sudo -u xyz /path/to/cmd ...
<works>

$ sudo --version
Sudo version 1.8.10p3
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43
Sudoers I/O plugin version 1.8.10p3

$ uname -a
Linux ovcp6hana1 3.12.69-60.64.32-default #1 SMP Wed Feb 15 08:57:04 UTC 2017 (76392c8) x86_64 x86_64 x86_64 GNU/Linux

(sudoer는 "/path/to/cmd"에 대한 Cmnd_Alias ​​및 인증으로 구성됩니다)

이전 버전은 작동했지만 지금은 작동하지 않습니다. 이전에는 경로가 자동으로 확장되었지만 더 이상 확장되지 않는 것과 같습니다.

이전 양식을 작동하게 하는 방법이 있나요? 감사해요.

- 편집하다

나는 그것이 정확히 동일한 명령, which xyz/path/to/xyz.

--편집 2

문제를 발견한 것 같지만 여전히 내 응용 프로그램과의 호환성을 유지할 수 있는 방법이 없습니다. sudo1.7.6 버전과 1.8.10 버전에는 차이가 있는 것 같습니다. 하지만 sudo 릴리스 노트에서 그런 언급을 찾지 못했습니다.

sudo 1.7을 실행하는 이전 서버에서 비슷한 권한을 가진 다른 사용자를 만들었습니다. 구체적인 권한은 다음과 같습니다. 두 구성 파일의 옵션이 일치합니다.

#added in /etc/sudoers
#userA ALL=(userABC) NOPASSWD: /bin/bash, /usr/local/bin/aws

#with both sudo versions
userA$ sudo -u userABC bash -c "echo \$PATH"
/usr/bin:/bin:/usr/sbin:/sbin

userA$ sudo -u userABC bash -c "which aws"
/usr/bin/aws <<<< but this is not reached in either of the two cases

userA$ which aws
/usr/local/bin/aws <<<<<< this is the right binary

#with sudo version 1.7.6
userA$ sudo -u userABC aws
..the right binary runs, so path must have been set between check and run

#with sudo version 1.8.10
userA$ sudo -u userABC aws
failure! sudo asks for password of userABC

이 프로그램은 /usr/bin/aws일종의 패키징을 수행합니다. 지금까지 존재하는지 몰랐지만(!) 프로그램을 일시적으로 삭제해도 아무 영향이 없었습니다.

따라서 문제에 대해 더 잘 이해하고 있지만 응용 프로그램을 변경하는 것 외에 다른 옵션이 있는지는 여전히 알 수 없습니다.

답변1

파일의 실행 파일에 대한 전체 경로를 지정하는 규칙을 통해 사용자가 다른 사용자로서 명령을 실행할 수 있도록 허용하는 경우 sudoers명령줄에도 해당 전체 경로가 필요합니다.

이는 안전 조치입니다.

또한 파일의 명령이 sudoers명령줄 플래그를 사용하여 지정된 경우 이러한 플래그는필요명령 호출을 전달할 때 나타납니다 sudo.

답변2

sudoers이는 실행 파일에 대한 명시적 경로를 호출할 때 파일에서 속성을 적용할 수 있도록 허용 NOPASSWD하지만 경로 검색에 의존할 때는 그렇지 않은 경우 다른 실행 파일이 발생할 수 있기 때문에 발생합니다 .

관련 정보