Mac OS X에서 sudo -n이 항상 0을 반환하는 이유는 무엇입니까?

Mac OS X에서 sudo -n이 항상 0을 반환하는 이유는 무엇입니까?

sudo -nMac OS X(10.10.3)에서는 항상 반환 코드로 0을 반환하는 것처럼 보입니다 .

따라서 이와 같은 내용은 사용자가 자신의 비밀번호로 먼저 인증했는지 여부에 관계없이 항상 0으로 표시됩니다.

sudo -n true &> /dev/null ; echo $?

사용자에게 유효한 sudo 세션이 없는 경우 종료 코드로 1이 표시될 것으로 예상하지만 OS X에서는 항상 0을 반환합니다.

sudo 액세스를 확인하기 위해 제안된 이 패턴을 보았기 때문에 묻고 싶습니다. 예를 들면 다음과 같습니다.https://superuser.com/a/587876/119764

무엇입니까?공식적인(???)의 행동 sudo -n? 버전이나 OS에 따라 다른가요? 아니면 뭔가 빠졌나요?

답변1

나는 같은 문제가 있습니다. 매뉴얼 페이지를 참조하면,

그렇지 않고 구성/권한 문제가 있거나 sudo가 주어진 명령을 실행할 수 없는 경우 sudo는 종료 값 1로 종료됩니다. 후자의 경우 오류 문자열이 stderr에 인쇄됩니다. sudo가 사용자 PATH에서 하나 이상의 항목을 stat(2)할 수 없으면 stderr에 오류가 인쇄됩니다. (디렉토리가 존재하지 않거나 실제로 디렉토리가 아닌 경우 항목이 무시되고 오류가 인쇄되지 않습니다.) 이는 일반적인 상황에서는 발생하지 않습니다. stat(2)가 "허가 거부됨"을 반환하는 가장 일반적인 이유는 자동 마운트를 실행 중이고 PATH에 있는 디렉터리 중 하나가 현재 연결할 수 없는 컴퓨터에 있는 경우입니다.

그래서 그것은 OS X의 버그인 것 같습니다.

답변2

sudo 맨페이지를 계속해서 읽은 후 Bugzilla를 확인했습니다.여기. sudo의 이러한 동작은 1.8 브랜치에서 병합한 후 1.7.10에 나타난 버그입니다.

'권한'을 확인하는 데 사용하려면 sudo -n command &>/dev/null ; echo $?sudo 버전 1.7.9b1 이하가 있는지 확인하세요.

관련 정보