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

0

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

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

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

No caso de o usuário não ter uma sessão sudo válida, eu esperaria ver 1 como um código de saída, mas no OS X, ele sempre retorna 0.

Estou perguntando desde que eu vi este padrão sugerido para verificar o acesso do sudo, por exemplo aqui: link

Qual é o comportamento oficial (???) de sudo -n ? Isso difere por versão ou sistema operacional, ou estou faltando alguma coisa?

    
por nwinkler 17.04.2015 / 17:25

2 respostas

1

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

Otherwise, sudo quits with an exit value of 1 if there is a configuration/permission problem or if sudo cannot execute the given command.  In the latter case the error string is printed to stderr.  If sudo cannot stat(2) one or more entries in the user's PATH an error is printed on stderr.  (If the directory does not exist or if it is not really a directory, the entry is ignored and no error is printed.)  This should not happen under normal circumstances.  The most common reason for stat(2) to return "permission denied" is if you are running an automounter and one of the directories in your PATH is on a machine that is currently unreachable.

Portanto, parece ser um bug no OS X.

    
por 02.06.2015 / 03:11
2

Depois de ler sudo manpage novamente e novamente eu verifiquei Bugzilla aqui . Este comportamento do sudo é um bug que apareceu em 1.7.10 após a fusão de uma ramificação 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.

    
por 11.06.2015 / 23:44