Быстро проверьте, доступны ли разрешения sudo

StackOverflow https://stackoverflow.com/questions/122276

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

С новыми версиями sudo для этого есть вариант:

sudo -n true

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

Другие советы

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

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

getent group admin | grep $particular_user

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

Редактировать:Но это не поможет вам узнать, разрешены ли вам выполнять задачи sudo...Хм..

Бег

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top