Steven Haryanto wrote:
>> Kalau saya coba di redhat62 kernel 2.4.18 standar, hasilnya
>> seperti a)

problem yang saya alami nampaknya berhubungan dengan system() (double 
fork). berhubung saya sedang tidak ada akses ke mesin rh62, bisa minta 
tolong coba run program c berikut?

===euid.c===
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
main() {
   p();
   if (getenv("child")!=NULL) exit(0);
   seteuid(500); p();
   system("child=1 ./euid");
}
p() {printf("uid=%d,euid=%d\n",getuid(),geteuid());}
======

hasil di tempat saya (rh7.2, 2.4.18+reiserquota):

[root@builder tmp]# ./euid
uid=0,euid=0
uid=0,euid=500
uid=0,euid=0

padahal kelakuan saya seingat dulu itu (dan yang saya inginkan :p) 
adalah, di baris ketiga euid-nya tetap 500.

hasil strace menunjukkan, syscall yang dipanggil adalah setresuid32().

--
sh

PS: sebetulnya yang ingin saya coba bandingkan adalah versi php-nya:

===euid.php===
#!/usr/bin/php -q
<?
function p() {printf("uid=%d,euid=%d\n",posix_getuid(),posix_geteuid());}
p();
if ($child) exit;
posix_seteuid(500); p();
system("QUERY_STRING=child=1 ./euid.php");
?>
======


-- 
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3

Kirim email ke