Расширение (определенных) псевдонимов из функции sudo bash

Существует известная проблема взаимодействия между использованием некоторых программных решений VPN и resolvconf.

resolvconfпревращает /etc/resolv.confв символическую ссылку и использует другое расположение для разрешения DNS под /run/resolvconf/resolv.conf.

В вашем случае VPN удаляет и заменяет /etc/resolv.confбез учета текущей настройки. Такую символическую ссылку необходимо восстанавливать каждый раз после использования VPN, или, как вариант, удалить пакет resolvconfв качестве временной меры.

Я бы также сообщил об ошибке производителю программного обеспечения VPN.

0
05.05.2020, 18:55
2 ответа

Возможно

function sudo()
{
  command sudo -v
  if [[ $(type -t "$1") == "alias" ]]; then
    set -- bash -ic "$(alias "$1"); $(printf "%q " "$@")"
  fi
  # what am I about to execute
  printf "%q " sudo "$@"; echo
  # and do it
  command sudo "$@"
}
1
28.04.2021, 23:16

Хотя Камил alias sudo='sudo -v; sudo 'работает так же хорошо, как и ответ Гленна, а именно расширение первого слова после sudo, если это псевдоним; «слепое» расширение псевдонимов можно рассматривать как проблему безопасности.

В свете возможной конфигурации для visudoиз

/etc/sudoers:

Defaults editor=/usr/bin/nvim, !env_editor

который игнорирует EDITORпеременную окружения (в равной степени представляет угрозу безопасности )и всегда открывает /etc/sudoersс /usr/bin/nvimможно было бы использовать следующее bash также (предполагает, что вы имеете привычку печатать viв качестве редактора):

~/.bashrc:

sudo ()
{ 
    command sudo -nv 2> /dev/null;
    COMMAND="$1";
    shift;
    [ "$COMMAND" = "vi" ] && COMMAND="/usr/bin/nvim";
    command sudo "$COMMAND" "$@"
}

что также позволит

sudo vi /etc/fstab

, но всегда используйте /usr/bin/nvim, не расширяя псевдоним.

Также обратите внимание на использование sudo -nvвместо sudo -v. Это делается для того, чтобы последний не запрашивал пароль, когда реальная команда не требует его.

0
28.04.2021, 23:16

Теги

Похожие вопросы