diff options
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/Makefile | 3 | ||||
-rw-r--r-- | usr.sbin/jail/Makefile | 4 | ||||
-rw-r--r-- | usr.sbin/jail/jail.8 | 32 | ||||
-rw-r--r-- | usr.sbin/jail/jail.c | 32 |
4 files changed, 70 insertions, 1 deletions
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index 4cd11ba..576a238 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -1,5 +1,5 @@ # From: @(#)Makefile 5.20 (Berkeley) 6/12/93 -# $Id: Makefile,v 1.151 1999/04/07 04:12:02 msmith Exp $ +# $Id: Makefile,v 1.152 1999/04/28 08:00:50 obrien Exp $ # XXX MISSING: mkproto SUBDIR= IPXrouted \ @@ -31,6 +31,7 @@ SUBDIR= IPXrouted \ ipresend \ ipsend \ iptest \ + jail \ kbdcontrol \ kbdmap \ kernbb \ diff --git a/usr.sbin/jail/Makefile b/usr.sbin/jail/Makefile new file mode 100644 index 0000000..f90553d --- /dev/null +++ b/usr.sbin/jail/Makefile @@ -0,0 +1,4 @@ +PROG= jail +MAN8= jail.8 + +.include <bsd.prog.mk> diff --git a/usr.sbin/jail/jail.8 b/usr.sbin/jail/jail.8 new file mode 100644 index 0000000..e1108fa --- /dev/null +++ b/usr.sbin/jail/jail.8 @@ -0,0 +1,32 @@ +.Dd April 28, 1999 +.Dt JAIL 8 +.Os FreeBSD 4.0 +.Sh NAME +.Nm jail +.Nd imprison process and decendants. +.Sh SYNOPSIS +.Nm jail +.Ar path +.Ar hostname +.Ar ip-number +.Sh DESCRIPTION +The +.Nm +command imprisons a process and all future decendants. +.Pp +Please see the +.Xr jail 2 +Manual page for further details. +.Sh SEE ALSO +.Xr chroot 2 , +.Xr jail 2 +.Sh HISTORY +The +.Fn jail +function call appeared in +.Fx 4.0 . +.Pp +The jail feature was written by Poul-Henning Kamp for +R&D Associates +.Dq Li http://www.rndassociates.com/ +who contributed it to FreeBSD. diff --git a/usr.sbin/jail/jail.c b/usr.sbin/jail/jail.c new file mode 100644 index 0000000..938c50b --- /dev/null +++ b/usr.sbin/jail/jail.c @@ -0,0 +1,32 @@ +#include <stdio.h> +#include <err.h> +#include <sys/types.h> +#include <sys/jail.h> +#include <netinet/in.h> + +int +main(int argc, char **argv) +{ + struct jail j; + int i; + struct in_addr in; + + if (argc < 5) + errx(1, "Usage: %s path hostname ip command ...\n", argv[0]); + i = chdir(argv[1]); + if (i) + err(1, "chdir %s", argv[1]); + j.path = argv[1]; + j.hostname = argv[2]; + i = inet_aton(argv[3], &in); + if (!i) + errx(1, "Couldn't make sense if ip number\n"); + j.ip_number = in.s_addr; + i = jail(&j); + if (i) + err(1, "Imprisonment failed"); + i = execv(argv[4], argv + 4); + if (i) + err(1, "execv(%s)", argv[4]); + exit (0); +} |