Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Oct 2001 19:48:53 +0100 (BST)
From:      Michael Grant <mg-fbsd2@grant.org>
To:        <freebsd-questions@FreeBSD.ORG>
Subject:   Re: running a program as nobody
Message-ID:  <200110271848.TAA23141@splat.grant.org>

next in thread | raw e-mail | index | archive | help
I wanted to run a deamon (call it food for some random deamon) as foo
chrooted in /usr/local/food

Here's what I ended up doing which seem to work:

In /usr/local/food/, I created a few files:

bin/:
food    sh    su

etc:
group   master.passwd

usr/lib:
libc.so.4       libm.so.2       libskey.so.2
libcrypt.so.2   libmd.so.2      libutil.so.3

usr/libexec:
ld-elf.so.1

for bin/sh, I wrote a little program, just to be paranoid (otherwise
su wanted a real shell):

main(int argc, char **argv)
{ 
  if (strcmp(argv[1], "food") != 0)
    exit(1);
  execvp(argv[1], &argv[1]);
}

(purists will tell me that I should have done it all in C, it probably 
would have eliminated the need for sh, su, and some of the libs in the 
chroot tree).

my master.passwd looks like this:

# to generate: pwd_mkdb -d etc -p etc/master.passwd
root:*:0:0:root:/:/bin/sh
foo:*:1027:1027:foo daemon:/:/nonexistent

and group looks like this:
foo:*:1027:

su and the libraries are straight copies from the real ones.

Then, to start my daemon:

/usr/sbin/chroot /usr/local/food /bin/su -f -m foo food &


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110271848.TAA23141>