From owner-freebsd-isp Mon Aug 21 12:38:23 2000 Delivered-To: freebsd-isp@freebsd.org Received: from bluerose.windmoon.nu (c255152-a.plstn1.sfba.home.com [24.176.132.48]) by hub.freebsd.org (Postfix) with ESMTP id 4A3AD37B424 for ; Mon, 21 Aug 2000 12:38:20 -0700 (PDT) Received: from localhost (fengyue@localhost) by bluerose.windmoon.nu (8.10.2/Windmoon/8.10.2) with ESMTP id e7LJrrY14241; Mon, 21 Aug 2000 12:53:53 -0700 (PDT) Date: Mon, 21 Aug 2000 12:53:53 -0700 (PDT) From: FengYue To: Mike Cc: James Housley , freebsd-isp@FreeBSD.ORG Subject: Re: ps question In-Reply-To: <4.3.2.7.2.20000821014336.00b81aa0@127.0.0.1> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-isp@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org 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