Почему tsocks не работает с apt-get?

Я использую tsocks чтобы разобраться в моих связях. Когда я запускаю следующие команды, apt-get не socksified:

$ . tsocks -on
$ sudo apt-get update

Однако, когда я запускаю все это в одну строку, как показано ниже, это работает.

sudo tsocks apt-get update

Я подтвердил, что когда я печатаю . tsocks -onмой LD_PRELOAD переменная окружения установлена ​​в /usr/lib/libtsocks.so,

Почему первый не работает?

3 ответа

Решение

Согласно ответу @creveti-mihai, я посмотрел на sudoers справочная страница. Unfortunately, as the man page says, it is not possible to preserve LD_* переменные. Here is what the man page says:

 Note that the dynamic linker on most operating systems will remove
 variables that can control dynamic linking from the environment of setuid
 executables, including sudo.  Depending on the operating system this may
 include _RLD*, DYLD_*, LD_*, LDR_*, LIBPATH, SHLIB_PATH, and others.
 These type of variables are removed from the environment before sudo even
 begins execution and, as such, it is not possible for sudo to preserve
 them.

So, I'll have to look at specifying the proxy in apt's own configuration files using Acquire::http::proxy а также Acquire::https::proxy,

Хотя он уже дал ответ, я хочу поделиться тем, что сработало для меня, используя Ubuntu 14.04:

sudo apt-get install tsocks

Затем откройте /etc/tsocks.conf и добавьте свой сервер на сервер и перенесите на server_port, а также добавьте диапазон вашего socks-сервера как локальный, например

Например, если ваш IP-адрес 90.70.60.5, напишите:

local = 90.70.60.0/255.255.255.0 (Обратите внимание.0 как последняя часть в IP-адрес)

Теперь попробуйте:

sudo tsocks apt-get update (или любая другая команда apt-get)

Если это не работает с использованием sudo, войдите в систему как root, как:

sudo su

Тогда попробуйте еще раз:

tsocks apt-get update

Я находился за сервером socks 5, чтобы найти ссылку для скачивания, у меня не было доступа с моего компьютера, и она работала без нареканий.

Примечание: с этим мне не пришлось использовать материал "Acquire" в /etc/apt/apt.conf

Это корень LD_PRELOAD также установлен на /usr/lib/libtsocks.so? Взгляни на:

  • -E (сохранить окружающую среду) вариант для sudo, Пример: sudo -E bash -c 'echo $LD_PRELOAD' против sudo echo $LD_PRELOAD;
  • sudoers файл: Defaults env_keep;
Другие вопросы по тегам