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";
?>
posix_setgid
(PHP 4, PHP 5)
posix_setgid — Geçerli sürecin grup kimliğini tanımlar
Açıklama
bool posix_setgid
( int
$gid
)Geçerli sürecin gerçek grup kimliğini tanımlar. Bu işlev normalde root yetkisi gerektirir. Uygun olan posix_setgid() işlevini, posix_setuid() işlevinden önce çağırmaktır.
Bilginize:
İşlev root tarafından kullanıldığında ayrıca etkin grup kimliği de tanımlanır.
Değiştirgeler
-
gid -
Grup kimliği.
Dönen Değerler
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.
Örnekler
Örnek 1 - posix_setgid() örneği
Örnekte gerçek grup kimliği değişmeden ve değiştikten sonra gösterilmektedir.
<?php
echo 'Gerçek grup kimliğim: '.posix_getgid(); //20
posix_setgid(40);
echo 'Gerçek grup kimliğim: '.posix_getgid(); //40
echo 'Etkin grup kimliğim: '.posix_getegid(); //40
?>
Ayrıca Bakınız
- posix_getgrgid() - Grup kimliği belirtilen grup hakkında bilgi verir
- posix_getgid() - Çalışan sürecin gerçek grup kimliğini döndürür
jac
26-May-2011 10:26
