Index: sys/kern/kern_sysctl.c =================================================================== RCS file: /mnt/ext2fs/cvs/src/sys/kern/kern_sysctl.c,v retrieving revision 1.75 diff -u -r1.75 kern_sysctl.c --- sys/kern/kern_sysctl.c 1 Sep 2002 11:35:52 -0000 1.75 +++ sys/kern/kern_sysctl.c 14 Oct 2002 15:50:35 -0000 @@ -230,6 +230,7 @@ #else int securelevel; #endif +int show_all_processes = 1; /* * kernel related system variables. @@ -455,6 +456,10 @@ case KERN_SPLASSERT: return (sysctl_int(oldp, oldlenp, newp, newlen, &splassert_ctl)); + + case KERN_SHOWALLPROCESSES: + return (sysctl_int(oldp, oldlenp, newp, newlen, + &show_all_processes)); default: return (EOPNOTSUPP); } @@ -873,6 +878,7 @@ int doingzomb; struct eproc eproc; int error = 0; + struct proc* cp = curproc; if (namelen != 2 && !(namelen == 1 && (name[0] == KERN_PROC_ALL || name[0] == KERN_PROC_KTHREAD))) @@ -886,6 +892,13 @@ */ if (p->p_stat == SIDL) continue; + /* + * Skip processes with different real uid + */ + if ( show_all_processes == 0 && + cp->p_cred->p_ruid != p->p_cred->p_ruid && + cp->p_cred->p_rgid != 0 ) continue; + /* * TODO - make more efficient (see notes below). * do by session. Index: sys/sys/sysctl.h =================================================================== RCS file: /mnt/ext2fs/cvs/src/sys/sys/sysctl.h,v retrieving revision 1.59 diff -u -r1.59 sysctl.h --- sys/sys/sysctl.h 7 Jul 2002 22:06:33 -0000 1.59 +++ sys/sys/sysctl.h 14 Oct 2002 15:01:06 -0000 @@ -177,7 +177,8 @@ #define KERN_NUMVNODES 58 /* int: number of vnodes in use */ #define KERN_MBSTAT 59 /* struct: mbuf statistics */ #define KERN_USERASYMCRYPTO 60 /* int: usercrypto */ -#define KERN_MAXID 61 /* number of valid kern ids */ +#define KERN_SHOWALLPROCESSES 61 /* int: show all processes to ps */ +#define KERN_MAXID 62 /* number of valid kern ids */ #define CTL_KERN_NAMES { \ { 0, 0 }, \ @@ -241,6 +242,7 @@ { "numvnodes", CTLTYPE_INT }, \ { "mbstat", CTLTYPE_STRUCT }, \ { "userasymcrypto", CTLTYPE_INT }, \ + { "show_all_processes",CTLTYPE_INT }, \ } /*