Временно изменить личность запущенного процесса

Я хочу временно изменить личность бега корень процесс.

Я прочитал способ сделать это, чтобы сначала позвонить 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?

0

Решение

Mac OS X происходит от ветви BSD Unix, и

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]