Por que sudo -n no Mac OS X sempre retorna 0?

Por que sudo -n no Mac OS X sempre retorna 0?

Parece que sudo -nno Mac OS X (10.10.3) sempre retorna 0 como código de retorno.

Então, algo assim sempre mostrará 0, independentemente de o usuário ter autenticado primeiro com sua senha:

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

Caso o usuário não tenha uma sessão sudo válida, esperaria ver 1 como código de saída, mas no OS X sempre retorna 0.

Estou perguntando porque vi esse padrão sugerido para verificar o acesso ao sudo, por exemplo, aqui:https://superuser.com/a/587876/119764

Qual é ooficial(???) Comportamento de sudo -n? Difere por versão ou sistema operacional ou estou faltando alguma coisa?

Responder1

Eu tenho o mesmo problema. Referindo-se à página de manual,

Caso contrário, o sudo será encerrado com um valor de saída 1 se houver um problema de configuração/permissão ou se o sudo não puder executar o comando fornecido. Neste último caso, a string de erro é impressa em stderr. Se o sudo não puder stat(2) uma ou mais entradas no PATH do usuário, um erro será impresso no stderr. (Se o diretório não existir ou se não for realmente um diretório, a entrada será ignorada e nenhum erro será impresso.) Isso não deveria acontecer em circunstâncias normais. O motivo mais comum para stat(2) retornar "permissão negada" é se você estiver executando um automounter e um dos diretórios em seu PATH estiver em uma máquina que está atualmente inacessível.

Portanto, parece ser um bug no OS X.

Responder2

Depois de ler a página de manual do sudo repetidas vezes, verifiquei o Bugzillaaqui. Este comportamento do sudo é um bug que apareceu no 1.7.10 após a fusão de um branch 1.8.

Se você quiser usar sudo -n command &>/dev/null ; echo $?para verificar seus 'privilégios', certifique-se de ter o sudo versão 1.7.9b1 e anterior.

informação relacionada