Вопрос или проблема
Я знаю, что использую прокси (tor) по точному ответу этой команды:
sudo proxychains sh -c 'apt update'
Однако, когда я делаю это в 2 шага, ответ команды не такой точный, как раньше: proxychains xfce4-terminal
Жду появления окна терминала, затем ввожу:
sudo apt update
Почему?
Кроме того, если я удалю tor, метод из 2 шагов все равно работает; не должен же!
В приведенной выше команде вы используете proxychains
для пользователя sudo
. Однако, когда вы вызываете proxychains xfce4-terminal
, вы создаете новую сессию с sudo $blah
, которая больше не проксируется.
По сути, вы имеете дело с ошибкой разрешения прав пользователя. Среда пользователя sudo
не наследует от $USER
, если это не указано в конфигурации (Defaults_*
в /etc/sudoers
). Нет переменной окружения для поддержания туннеля proxychains
.
Чтобы протестировать это дальше, вы можете попробовать
# Запустите это в терминале
proxychains xfce4-terminal
curl ipinfo.io
# Запустите это в терминале с sudo
sudo proxychains xfce4-terminal
curl ipinfo.io
Вышеуказанные команды вернут одинаковый (проксированный) результат, но это не сработает
proxychains xfce4-terminal
sudo curl ipinfo.io
Ответ или решение
Использование proxychains в терминале может быть несколько запутанным, особенно когда речь идет о работе с привилегиями суперпользователя (sudo). Давайте подробно рассмотрим вашу проблему.
Проблема
Когда вы запускаете команду:
sudo proxychains sh -c 'apt update'
вы явно используете proxychains для всей команды, включая права суперпользователя. Все запросы от apt update
проходят через прокси (в данном случае Tor).
Однако, когда вы используете два шага:
proxychains xfce4-terminal
и затем в открывшемся окне терминала выполняете команду:
sudo apt update
вы не получаете ожидаемого результата по нескольким причинам.
Объяснение
-
Права суперпользователя: Когда вы запускаете команду через
sudo
, оболочка, запущенная черезxfce4-terminal
, не наследует настройки proxychains. Это связано с тем, чтоsudo
запускает новую сессию, и её окружение не включает сами прокси-настройки. -
Контекст пользователя:
sudo
не наследует значения переменных окружения, связанных с вашим текущим пользователем (например, переменные, связанные с proxychains), если они явно не указаны в конфигурации/etc/sudoers
. Это может привести к тому, что команда, выполняемая сsudo
, не будет использовать прокси.
Решение
Чтобы обеспечить использование proxychains с sudo
в вашем терминале, вы можете сделать следующее:
-
Всегда используйте proxychains с sudo: Используйте proxychains непосредственно перед командой, которую вы хотите выполнить с
sudo
. Например:sudo proxychains apt update
-
Проверка работы прокси:
Чтобы проверить, работает ли прокси, создайте временный запрос после открытияxfce4-terminal
:proxychains xfce4-terminal curl ipinfo.io
Это покажет ваш IP-адрес, и вы должны увидеть IP-адрес Tor.
-
Альтернативный тест:
Вы можете запустить еще один терминал черезsudo
, который протестирует работоспособность прокси напрямую:sudo proxychains xfce4-terminal
И затем в этом терминале выполните:
curl ipinfo.io
-
Обратите внимание: Если вы отключите Tor, команда
proxychains
по-прежнему будет работать, если у вас настроены другие прокси (например, HTTP или SOCKS). Однако, если ни один прокси не настроен,proxychains
не сможет отправить ваш трафик через прокси-сервер, и запросы будут поступать напрямую, что и объясняет, почему команда работает, даже если Tor удален.
Надеюсь, это помогло прояснить ситуацию с использованием proxychains и sudo!