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>