(Первоначально опубликовано на переполнение стека. Они предложили мне попробовать здесь. Вот оригинальное сообщение: /programming/3858208/sudo-is-there-a-command-to-check-if-i-have -судо-или-или-сколько-осталось времени )
Смотрите заголовок. Я хочу команду, которая позволяет мне запрашивать sudo. В идеале это вернет успех, если у меня все еще есть sudo и false, если срок действия sudo истек. Получение оставшегося времени также может быть полезно (хотя, если бы я волновался, я мог бы просто сделать sudo -v для повторной проверки.) Да, и не нужно спрашивать пароль.
Самое близкое, что я нашел, это «sudo -n true», но опция -n присутствует только на моей машине с Centos 5 на работе. -n не удается, если он должен попросить пароль. Есть ли другой способ получить эту функциональность? Предположим, у меня нет root на всех машинах, с которыми я работаю, поэтому я не могу устанавливать новые версии sudo по своему вкусу.
За то, что это стоит, я делаю это, чтобы я мог получить приглашение указать статус sudo. Мне нравится знать, какие терминалы активно sudo-способны. У меня также есть подсказка, которая меняет цвета, когда я root, но я не очень часто использую root, поэтому он ограничен.
Я знаю, что это действительно старый вопрос, но вот что я сделал сегодня в сценарии:
источник
Команда ниже покажет цветную индикацию того, что вы предоставили sudo, поэтому вы не забудьте сделать
sudo -k
перед уходом с машины. Это полезно также на неокрашенных терминалах.Поскольку sudo может быть активным и неактивным на разных терминальных сессиях, я создал это, что вы можете поместить в конец вашего ~ / .bashrc
На тип терминала,
bash
чтобы проверить это. Он также будет добавлять целую строку каждый раз, когда вы выполняете команду, которая содержит информацию о времени окончания последней команды, так что вы можете пойти на обед и узнать, когда последняя команда завершилась :).Вы можете играть с этим кодом, чтобы соответствовать вашим потребностям. Существует также переменная PS1 (то есть фактическая небольшая строка подсказки), но я думаю, что лучше не связываться с ней.
PS: для OS-X ищите комментарий @nwinkler ниже.
источник
sudo -n
не работает на OS X. Смотрите мой вопрос здесь: superuser.com/questions/902826/…sudo -n
, считаете ли вы, что может быть какой-либо другой тест, который можно использовать для определения, активен ли у пользователя доступ sudo? или, может быть, OS-X требует обновления? Я никогда не использовал OS-X, кстати.sudo -n
в BSD (на которой основана OS X) поведение отличается от версии GNU. Я просто добавил свой комментарий, чтобы люди знали, что эта версия проверки, похоже, не работает на OS X. Я использовал проверку из другого ответа (sudo -n uptime 2>&1|grep "load"|wc -l
), и, похоже, это работает нормально на OS X. Это не так элегантно, но это работает.sudo -n
становится глючным в sudo -V 1.7.9Чтобы упростить ответ, данный @ wags007
Однако, если в вашей конфигурации https://www.sudo.ws/man/1.8.15/sudoers.man.html у вас
defaults mail_badpass
будет письмо, отправленное для каждого теста, результатом которого будет false (будет выдано приглашение). Чтобы избежать такой неприятности, измените эту часть вашего файла sudoers наВ результате письма с предупреждениями безопасности отправляются для всех команд, кроме / bin / true. Ну, да, теперь кто-то может попытаться взломать пароль, позвонив
sudo true
неограниченное количество раз без отправки письма с предупреждением.Примечание: всегда используйте
visudo
вместо вашего любимого редактора для редактирования файла sudoers. В противном случае вы рискуете быть заблокированным.источник
Согласно руководству sudo, сеанс sudo определяется в соответствии с файлом отметки времени (
/usr/lib/sudo/<username>
), поэтому вы можете выяснить, сколько времени осталось, проверив дату / время файла отметки времени. Однако в моей системе файл/usr/lib/sudo/<username>
меток времени фактически является каталогом, и в нем есть три файла с загадочным содержимым (а также некоторые странные метки времени, но, похоже, метка времени совпадала со временем, которое я дал sudo своему паролю Я думаю,/usr/lib/sudo/<username>/0
есть метка времени последнегоsudo
выполнения.источник
Предупреждение
Согласно Bugzilla sudo Bug ID = 590, вызов
sudo -n true 2&>/dev/null ; echo $?
будет глючитьsudo -V 1.7.10
Прочитайте Bugzilla [здесь] ( http://bugzilla.sudo.ws/show_bug.cgi?id=590 "Bug ID = 590")
источник
По крайней мере, на sudo 1.8.21p2 этот подход работает нормально:
источник
Это, вероятно, является чрезмерным перебором по стандарту большинства людей, но вот (правильно заданная) функция, которую я использую, чтобы проверить,
sudo
разблокирована ли она (функция не будет тратить свое время, если пользователь ее запускаетroot
, поскольку нет необходимости разблокироватьsudo
):источник
простой ответ ...
источник
Как насчет справочной страницы
Перечислите ваши доступные команды:
Само sudo не имеет ограничений по времени или дате ... см .:
источник