"sudo -l -u -U cmd"를 사용하여 sudoer에 쿼리하여 권한이 항상 유효한지 확인하시겠습니까?

"sudo -l -u -U cmd"를 사용하여 sudoer에 쿼리하여 권한이 항상 유효한지 확인하시겠습니까?

시나리오: 내 쉘은 다음과 같이 실행됩니다 . 명령을 실행할 수 있는 권한이 있는지 user_A확인하고 싶습니다 .user_Bsample_cmduser_C

나는 sudo -n -l -u user_C -U user_B sample_cmd이것을 달성하기 위해 사용하고 있습니다. 모든 사용자에게는 루트 권한이 없습니다.

이것이 항상 작동합니까? 아니면 가능한 실패 시나리오를 놓치고 있는 걸까요?

답변1

우선 매뉴얼 페이지에는 다음과 같이 나와 있습니다 -U.

보안 정책으로 인해 다른 사용자를 나열하는 기능이 제한될 수 있습니다. sudoers 정책은 루트 또는 현재 호스트에 대한 모든 권한이 있는 사용자만 이 옵션을 사용할 수 있도록 허용합니다.

user_A그래서 충분한 권한이 없으면 실패하는 것 같습니다.

예를 들어 나는 얻는다

$ sudo -l -u foo -U root ls
Sorry, user ilkkachu is not allowed to execute '/bin/ls' as root on thishost.

foo오류 메시지는 사용자가 명령을 실행할 수 있는지 여부가 아니라 내가 명령을 실행할 수 없음을 나타내기 때문에 다소 혼란스럽습니다.

관련 정보