Боюсь, что единственное, что вы можете проверить, - это наличие у пользователя прав sudo без пароля.
Выполнить
sudo -n true
If $? равно 0, пользователь имеет доступ к sudo без пароля, если $? равно 1, пользователю нужен пароль.
Если вам нужна проверка для конкретной программы, измените true
в своей программе таким образом, чтобы программа ничего не делала, например chmod - -help
Если у вас есть один пользователь с доступом к sudo, например, "root", вы можете использовать его для проверки других логинов. Как пользователь с доступом выполняется:
sudo -n -l -U foo 2>&1 | egrep -c -i "не разрешен запуск пользователя sudo|unknown"
Если он возвращает ноль, то "foo" имеет доступ. В противном случае, у него нет доступа к sudo.
sudo -l
Этого должно быть достаточно, чтобы решить, есть ли у вас приваты, которые вам нужны.
. Я знаю, что это очень старый вопрос, но мне повезло с флагом -n
(неинтерактивный) и -v
/ -1
. Но вы должны проверить вывод:
$ sudo -vn && sudo -ln #User with cached credentials
User adminuser may run the following commands on computername:
(ALL) ALL
$ sudo -vn && sudo -ln #User who _can_ sudo but isn't cached
sudo: a password is required
$ sudo -vn && sudo -ln #User who can't at all
Sorry, user nonadmin may not run sudo on computername.
Некоторое перенаправление вывода и grepping, вероятно, приведут вас к этому:
if (sudo -vn && sudo -ln) 2>&1 | grep -v 'may not' > /dev/null; then
#they're cool
exit 0 #Or, whatever
fi