Parece que sudo -n
no 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.