Я хочу знать, возможно ли указать на командной строке (идеально в подсказке), идет ли sudo режим.
sudo режимом я подразумеваю, что уже ввел свой пароль правильно однажды на этой сессии оболочки, и это еще не истекло, но все еще кэшируется.
Другими словами, могу я говорить так или иначе ли sudo
команда, которую я собираюсь выполнить, попросит у меня моего пароля или будет использовать кэшируемые учетные данные?
В течение долгого времени я использовал
sudo -S true < /dev/null 2> /dev/null
, Вы могли бы попробовать это, но недавнее обновление, кажется, повредило это, так как я теперь получаю отказ сегментации.
Вы могли бы попробовать sudo -n true 2> /dev/null
(никакой -v
). Это, кажется, работает на меня, не возобновляя тайм-аут.
можно выполнить это в подсказке различными способами включая что-то как:
PS1='\u:\w$(sudo -n true 2> /dev/null && echo " : sudo :") \$ '
Это зависит от promptvars
опция, которая включена по умолчанию.
Примечание, что, после того как подсказка выпущена, индикатор, не обновляется снова. Таким образом, если подсказка находится там, пока тайм-аут не истекает, это может указать, что sudo
активно даже при том, что это истекло.
Нет никакой команды для прямого показа остающегося времени для кэшируемых учетных данных, необходимо было бы написать сценарий их.
От https://unix.stackexchange.com/questions/115506/sudo-testing-for-credentials
sudo -nv 2> /dev/null
даст значение выхода 0, если пароль будет кэшироваться, Вы можете изменять сценарий в той ссылке или писать Ваше собственное.
Поочередно метки времени хранятся в /var/lib/sudo
, таким образом, Вы могли, вероятно, записать сценарий, чтобы отобразить или проверить метку времени также.