Возможности Linux для чтения переменных окружения?

Вы должны включить модуль env apache .

a2enmod env

Не регистрировать запросы, сделанные AWS ELB.

SetEnvIFNoCase User-Agent "ELB-HealthChecker/2.0" dontlog

Вам необходимо перезапустить службу Apache.

/etc/init.d/apache2 restart
1
24.05.2020, 02:01
1 ответ

Я докопался до сути. Короче говоря, двоичный файл используетsecure_getenvдля доступа к переменным среды. Это возвращает nullвместо доступа к переменным, когда двоичный файл запускается в режиме «безопасного выполнения» (AT_SECURE=1). Наличие любой установленной возможности заставляет ее работать в этом режиме.

Подтвердите, что двоичный файл использует secure_getenv, используяreadelf:

readelf -a <path for service> | grep getenv
00000040ac28  004b00000007 R_X86_64_JUMP_SLO 0000000000000000 secure_getenv@GLIBC_2.17 + 0
00000040ad90  007a00000007 R_X86_64_JUMP_SLO 0000000000000000 getenv@GLIBC_2.2.5 + 0
    75: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND secure_getenv@GLIBC_2.17 (6)
   122: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getenv@GLIBC_2.2.5 (2)

Подтвердите, что он работает в режиме безопасного выполнения с переменными среды (какая ирония судьбы!)LD_DEBUG=allи/илиLD_SHOW_AUXV(см. man ld.so).

Если это не так, то LD_SHOW_AUXVвыдает вывод с AT_SECURE, установленным на 0. От LD_SHOW_AUXVнет вывода, когда он работает в режиме безопасного выполнения.

Как правило, LD_DEBUGтоже выводит/не выводит, когда он работает/не работает в режиме безопасного выполнения. Однако, если /etc/suid-debugприсутствует (пустой файл, создайте касанием ), тогда LD_DEBUGбудет производить вывод при работе в режиме безопасного выполнения.

См.man getauxvalдля получения дополнительной информации о AT_SECUREи безопасном режиме выполнения.

1
18.03.2021, 23:33

Теги

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