Почему sudo -n в Mac OS X всегда возвращает 0?

Почему sudo -n в Mac OS X всегда возвращает 0?

Похоже, что sudo -nв Mac 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? Оно отличается в зависимости от версии или ОС, или я что-то упускаю?

решение1

У меня та же проблема. Ссылаясь на страницу руководства,

В противном случае sudo завершает работу со значением выхода 1, если есть проблема с конфигурацией/разрешениями или если sudo не может выполнить заданную команду. В последнем случае строка ошибки выводится на stderr. Если sudo не может stat(2) одну или несколько записей в PATH пользователя, ошибка выводится на stderr. (Если каталог не существует или если это на самом деле не каталог, запись игнорируется и ошибка не выводится.) Этого не должно происходить при нормальных обстоятельствах. Наиболее распространенной причиной, по которой stat(2) возвращает «отказано в доступе», является то, что вы запускаете автомонтирование, а один из каталогов в вашем PATH находится на машине, которая в данный момент недоступна.

Похоже, это ошибка в OS X.

решение2

После прочтения man-страницы sudo снова и снова я проверил BugzillaздесьТакое поведение sudo — ошибка, появившаяся в версии 1.7.10 после слияния с веткой 1.8.

Если вы хотите использовать sudo sudo -n command &>/dev/null ; echo $?для проверки своих «привилегий», убедитесь, что у вас установлена ​​версия sudo 1.7.9b1 или более ранняя.

Связанный контент