Подпроцесс shell_exe c () должен наследовать euid? - PullRequest
0 голосов
/ 14 июля 2020

Я запускаю php -cli 7.3.19 как root (на Debian 10 Buster, linux ядро ​​4.19.0-8-amd64), и после использования posix_seteuid () для изменения моего euid, Предполагается, что подпроцессы унаследуют мой euid? euid , вместо того, чтобы унаследовать мой euid как euid , это предполагаемое поведение?

иначе говоря, я получил bool(true) root bool(true) www-data, но я ожидал bool(true) www-data bool(true) www-data, мои ожидания неверны или происходит что-то еще?

1 Ответ

1 голос
/ 14 июля 2020

похоже, whoami наследует мой uid как euid, вместо того, чтобы наследовать мой euid как euid, это предполагаемое поведение?

Я не уверен на 100% насчет PHP , но в языках программирования, непосредственно вызывающих системные вызовы Linux (например, C или C ++), такое поведение является нормальным.

Одним из хорошо известных побочных эффектов такого поведения является установка бита set-euid в сценарий оболочки не имеет смысла (пока используется "обычная" оболочка - например, bash):

Оболочка (например, /bin/sh) будет запущена с euid, установленным в другой UID, но программы, запускаемые оболочкой, будут иметь как euid, так и uid значение uid оболочки, которое является UID пользователя, запустившего сценарий ...

...