LD _LIBRARY _PATH env var отсутствует в подоболочке из системы (3 )call

В Linux:
  • its program image short name, a.k.a. the short name used for process accounting;
/proc//comm
  • its argument strings, initialized by execve() and modifiable at runtime;
/proc//cmdline
  • its environment strings, initialized by execve() and modifiable at runtime; and
/proc//environ
  • the full pathname of its executable program image file.
/proc//exe

(, который является символической ссылкой на файл ).

Дополнительную техническую информацию об этих файлах можно найти вman 5 proc.

Во FreeBSD:

  • its program image short name, a.k.a. the short name used for process accounting;
  • sysctl()с OID CTL_KERN, KERN_PROCи KERN_PROC_ALL/ KERN_PROC_PROC.
  • Сбрасывается с помощьюsysctl -x kern.proc.all
  • Одно из полей в /proc/PID/status.
  • (если установлена ​​совместимость )одно из полей в /compat/linux/proc/PID/status.
  • its argument strings, initialized by execve() and modifiable at runtime;
  • sysctl()с OID CTL_KERN, KERN_PROCи KERN_PROC_ARGS.
  • Также /proc/PID/cmdline.
  • (если установлена ​​совместимость)/compat/linux/proc/PID/cmdline.
  • its environment strings, initialized by execve() and modifiable at runtime; and
  • sysctl()с OID CTL_KERN, KERN_PROCи KERN_PROC_ENV.
  • (если установлена ​​совместимость)/compat/linux/proc/PID/environ.
  • the full pathname of its executable program image file.
  • /proc/PID/file(, который является символической ссылкой на файл ).
  • (если установлена ​​совместимость)/compat/linux/proc/PID/exe.
1
03.03.2021, 10:08
1 ответ

Проблема может быть воспроизведена путем компиляции и запуска этого кода C -какroot:

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{

    char *p;

    p = getenv("LD_LIBRARY_PATH");
    printf("getenv(): LD_LIBRARY_PATH env [%s]\n", p==NULL?"":p);
    seteuid(900118);
    printf("effective uid now %d\n", geteuid());

    system("echo LD_LIBRARY_PATH in child: ; env | grep LD_LIBRARY_PATH");

    exit(0);
}

sys-вызов seteuid()запускает сервер приложений в так называемом secure-execution mode, который удаляет LD_LIBRARY_PATHиз порожденных дочерних процессов.

1
18.03.2021, 22:27

Теги

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