CakeFest 2024: The Official CakePHP Conference

posix_setgid

(PHP 4, PHP 5, PHP 7, PHP 8)

posix_setgidУстанавливает идентификатор группы для текущего процесса GID

Описание

posix_setgid(int $group_id): bool

Устанавливает фактический идентификатор группы текущего процесса. Это привилегированная функция и требует соответствующих прав (обычно прав суперпользователя root) в системе, чтобы иметь возможность выполнить её. Правильным является следующий порядок вызова функций: сначала posix_setgid(), затем posix_setuid().

Замечание:

Если функция будет вызвана суперпользователем, то также будет установлен и эффективный идентификатор группы пользователя.

Список параметров

group_id

Идентификатор группы.

Возвращаемые значения

Возвращает true в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #1 Пример использования posix_setgid()

Код ниже выводит эффективный идентификатор группы до и после изменения.

<?php
echo 'My real group id is '.posix_getgid(); //20
posix_setgid(40);
echo
'My real group id is '.posix_getgid(); //40
echo 'My effective group id is '.posix_getegid(); //40
?>

Смотрите также

  • posix_getgrgid() - Возвращает информацию о группе по её ID
  • posix_getgid() - Возвращает действительный ID группы текущего процесса GID

add a note

User Contributed Notes 1 note

up
1
jac
12 years ago
if you're going to use this along with posix_setuid, make sure you call posix_setgid first:

<?php
define
(PROC_USER, 'john');
define (PROC_GRP, 'admins');
?>

following works:

<?php
$user
= posix_getpwnam( PROC_USER );
$group = posix_getgrnam( PROC_GRP);

echo
posix_getuid()."\n";
echo
posix_getgid()."\n";

posix_setgid($group['gid']);
posix_setuid($user['uid']);

echo
posix_getuid()."\n";
echo
posix_getgid()."\n";
?>

following will not set gid

<?php
$user
= posix_getpwnam( PROC_USER );
$group = posix_getgrnam( PROC_GRP);

echo
posix_getuid()."\n";
echo
posix_getgid()."\n";

posix_setuid($user['uid']);
posix_setgid($group['gid']);

echo
posix_getuid()."\n";
echo
posix_getgid()."\n";
?>
To Top