Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Aug 2000 12:53:53 -0700 (PDT)
From:      FengYue <fengyue@bluerose.windmoon.nu>
To:        Mike <mike@mikesweb.com>
Cc:        James Housley <jim@thehousleys.net>, freebsd-isp@FreeBSD.ORG
Subject:   Re: ps question
Message-ID:  <Pine.BSF.4.10.10008211250290.14234-100000@bluerose.windmoon.nu>
In-Reply-To: <4.3.2.7.2.20000821014336.00b81aa0@127.0.0.1>

next in thread | previous in thread | raw e-mail | index | archive | help

What's the use of all those hacks in ps code?  People can simply either
access /proc or directly call kvm_* () functions to get a full list of
processes running on the machine, or even simply ftp a ps binary
from another freebsd machine. 

On Mon, 21 Aug 2000, Mike wrote:

> tried that, (and changed the line to if (getuid() > 999 || getgid() > 999) 
> so anything that's not a regular user can use it. no luck, can still ps -a 
> as a regular user and see everything running..
> 
> At 10:11 PM 8/20/2000 -0400, you wrote:
> >++ 20/08/00 20:51 -0400 - Mike:
> > >Quick question, how do I make 'ps' work so no matter how users run it, it
> > >only shows them their processes, and only root can see what -a would 
> > display?
> > >thanks
> >
> >It shouldn't be too hard or re-write ps so that at the top while/after
> >processing the command line args the user-id is checked, getuid(2)?.  If
> >it is is ZERO then nothing special.  If it is not ZERO then limit.
> >
> >Here is a very simple hack:
> >--- ps.c        Thu Jul 13 14:16:49 2000
> >+++ ps-limited.c        Sun Aug 20 22:09:53 2000
> >@@ -121,6 +121,7 @@
> >         dev_t ttydev;
> >         pid_t pid;
> >         uid_t uid;
> >+       int isroot;
> >         int all, ch, flag, i, fmt, lineno, nentries, dropgid;
> >         int prtheader, wflag, what, xflg;
> >         char *nlistf, *memf, *swapf, errbuf[_POSIX2_LINE_MAX];
> >@@ -138,6 +139,10 @@
> >         if (argc > 1)
> >                 argv[1] = kludge_oldps_options(argv[1]);
> >
> >+       if (getuid() == 0 || getgid() == 0)
> >+               isroot = 1;
> >+       else
> >+               isroot = 0;
> >         all = fmt = prtheader = wflag = xflg = 0;
> >         pid = -1;
> >         uid = (uid_t) -1;
> >@@ -152,7 +157,8 @@
> >  #endif
> >                 switch((char)ch) {
> >                 case 'a':
> >-                       all = 1;
> >+                       if (isroot)
> >+                               all = 1;
> >                         break;
> >                 case 'C':
> >                         rawcpu = 1;
> >
> >Jim
> >--
> >"Eagles may soar, but weasels don't get sucked into jet engines"
> >     -- Anon
> >
> >
> >To Unsubscribe: send mail to majordomo@FreeBSD.org
> >with "unsubscribe freebsd-isp" in the body of the message
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-isp" in the body of the message
> 



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.10008211250290.14234-100000>