PHP Conference Japan 2024

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
?>

參見

新增筆記

使用者貢獻的筆記 1 則筆記

1
jac
13 年前
如果您要搭配 posix_setuid 使用,請務必先呼叫 posix_setgid

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

以下程式碼可以正常運作

<?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";
?>

以下程式碼無法設定 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