Быстро проверьте, доступны ли разрешения sudo - PullRequest
3 голосов
/ 23 сентября 2008

Я хочу иметь возможность быстро проверить, есть ли у меня оба доступа sudo, и мой пароль уже аутентифицирован. Меня не беспокоит доступ к sudo специально для операции, которую я собираюсь выполнить, но это было бы хорошим бонусом.

В частности, я пытаюсь использовать это для сценария, который я хочу запускать для ряда пользователей. Некоторые имеют доступ к sudo. Все знают пароль root.

Когда они запускают мой скрипт, я хочу, чтобы он использовал разрешения sudo, не запрашивая пароль, если это возможно, и в противном случае отступил бы к запросу root пароля (потому что у них может не быть sudo доступ).

Моей первой нерабочей попыткой было отключить sudo -S true с закрытым STDIN или чтением из / dev / null. Но это все еще запрашивает пароль и ждет пару секунд.

Я пробовал несколько других вещей, в том числе ожидание 0,3сек, чтобы увидеть, удалось ли это немедленно, но все, что я пробую, в некоторых ситуациях заканчивается неудачей. (И не потому, что мой тайм-аут слишком короткий.) Трудно понять, что происходит, потому что я не могу просто выпрямиться, как обычно.

Одна вещь, которую я знаю не работает, это закрыть STDIN или прикрепить его к каналу перед запуском sudo -S true. Я надеялся, что это приведет к немедленному сбою запроса пароля, но он все еще запрашивает и ведет себя странно. Я думаю, что может потребоваться терминал.

Ответы [ 4 ]

3 голосов
/ 11 марта 2014

В более новых версиях sudo есть опция для этой цели:

sudo -n true

Я использую true здесь для запрета операций, но вы можете использовать любую команду.

2 голосов
/ 23 сентября 2008

Я не знаю, в чем основная причина необходимости делать это, но я думаю, что, возможно, вам, возможно, придется переосмыслить то, чем является основная причина. Попытки сделать сложные, необычные вещи с разрешениями часто приводят к дырам в безопасности.

Точнее говоря, все, что пытается сделать скрипт, может быть лучше сделать с setuid вместо sudo. (Я также должен был бы удивиться, почему так много людей имеют пароль root. Sudo существует специально, чтобы не давать людям пароль root.)

0 голосов
/ 05 ноября 2009

Запуск

sudo -S true < /dev/null &>/dev/null

, кажется, работает, хотя перед сбоем задерживается на секунду.

0 голосов
/ 23 сентября 2008
getent group admin | grep $particular_user

Вы можете использовать whoami для получения текущего пользователя.

Изменить: Но это не поможет вам найти, если вы все еще можете выполнять задачи sudo ... Хм ..

...