Временно изменить личность запущенного процесса - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу временно изменить удостоверение работающего root процесса.

Я прочитал способ сделать это, сначала позвонить setegid, а затем seteuid.

Проблема в том, что группа как-то игнорируется:

<?php
# This is executed as root.
var_dump(posix_setegid(61));   # localaccounts(61)
var_dump(posix_seteuid(502));  # bot(502)

$fp = fopen("/tmp/test", "w+b");

system("ls -la /tmp/test");

unlink("/tmp/test");

Выходы:

$ sudo php -f /tmp/test.php
bool(true)
bool(true)
-rw-r--r--  1 bot  wheel  0 Feb  2 17:49 /tmp/test

Но я ожидаю, что это выведет:

-rw-r--r--  1 bot  localaccounts  0 Feb  2 17:49 /tmp/test

Я что-то упустил?

ОБНОВЛЕНИЕ : Это работает на машине с Linux.Это какая-то странная причуда OSX?

1 Ответ

0 голосов
/ 02 февраля 2019

Mac OS x происходит из ветви BSD Unix, а

В соответствии с семантикой BSD Unix владение группой, данное вновь созданному файлу, безусловно наследуется от владения группой каталога вкоторый он создан.

(Из https://en.m.wikipedia.org/wiki/User_identifier#Effective_user_ID - я не могу найти лучший источник)

Вы всегда можете использовать chgrp, чтобы изменить группу послефайл создан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...