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

現在のプロセスのグループ ID を設定します。 この関数は特権関数であり、実行するにはシステム上において適当な権限 (通常は root) が必要です。 posix_setgid() を最初に、 posix_setuid() を最後にコールするのが、 関数コールの正しい順序となります。

注意:

コール元がスーバーユーザーの場合は、実効グループ ID も設定します。

パラメータ

group_id

グループ ID。

戻り値

成功した場合に true を、失敗した場合に false を返します。

例1 posix_setgid() の例

この例は、いったん変更した後で実効グループ ID を表示します。

<?php
echo '実グループ ID は '.posix_getgid(); //20
posix_setgid(40);
echo
'実グループ ID は '.posix_getgid(); //40
echo '実効グループ ID は '.posix_getegid(); //40
?>

参考

  • posix_getgrgid() - 指定したグループ ID を有するグループに関する情報を返す
  • posix_getgid() - 現在のプロセスの実際のグループ ID を返す

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