SunshinePHP 2020 CFP Started

posix_setgid

(PHP 4, PHP 5, PHP 7)

posix_setgid現在のプロセスの GID を設定する

説明

posix_setgid ( int $gid ) : bool

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

注意:

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

パラメータ

gid

グループ 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 add a note

User Contributed Notes 1 note

up
2
jac
8 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