- 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
.
- 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
. Проблема может быть воспроизведена путем компиляции и запуска этого кода 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
из порожденных дочерних процессов.