чтение переменной окружения из другого сеанса

Ваш корневой узел должен действовать как маршрутизатор для других узлов.

Вам необходимо включить переадресацию IP, в вашем случае для IPv4, на маршрутизаторе :

.

sysctl -w net.ipv4.ip_forward = 1

И чтобы сделать его постоянным, отредактируйте /etc/sysctl.confи установите:

net.ipv4.ip_forward=1

Вероятно, вы также захотите сделать маршрутизатор шлюзом по умолчанию на других узлах .

Если следующий переход за пределами вашего маршрутизатора не знает о сети 192.168.10.10/24, вам необходимо реализовать преобразование сетевых адресов (. НАТ).
Взгляните на iptablesи его опцию MASQUERADE.

Возможные проблемы с DNS см. в ответе @Hunter.S.Thompson.

0
05.09.2019, 04:04
1 ответ

Вы не можете сделать это, кроме как подключиться к отладчику, знающему о внутренней структуре вашей оболочки, и использовать эти знания для извлечения этой информации.

Нет, даже вызов getenv("OK")или system("printenv OK >/this/tty")изнутри может сработать, потому что большинство оболочек не используют стандартные функции libc для управления средой и запускают команды, явно передавая список окружения в качестве аргумента execve().

Среда из /proc/PID/environ— это среда, которая была передана при запуске процесса, с учетом того, что она могла быть изменена процессом намеренно или непреднамеренно.

Например, этот (UB -, запускающий )C-код, "добавит" WTF=helpк /proc/PID/environ, который может быть возвращен или не возвращен getenv()или передан дочернему элементу, в зависимости от о том, когда и как были вызваны setenv()или putenv():

% cat a.c
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
        memcpy(argv[argc + 1], "WTF=help", 9);
        pause();
}
% cc a.c
%./a.out &
[4] 3445
% tr '\0' '\n' </proc/3170/environ | head -n1
WTF=help
1
28.01.2020, 02:39

Теги

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