Commit Graph

104 Commits

Author SHA1 Message Date
bz
d2730d5b27 MFp4:
Bring in updated jail support from bz_jail branch.

This enhances the current jail implementation to permit multiple
addresses per jail. In addtion to IPv4, IPv6 is supported as well.
Due to updated checks it is even possible to have jails without
an IP address at all, which basically gives one a chroot with
restricted process view, no networking,..

SCTP support was updated and supports IPv6 in jails as well.

Cpuset support permits jails to be bound to specific processor
sets after creation.

Jails can have an unrestricted (no duplicate protection, etc.) name
in addition to the hostname. The jail name cannot be changed from
within a jail and is considered to be used for management purposes
or as audit-token in the future.

DDB 'show jails' command was added to aid debugging.

Proper compat support permits 32bit jail binaries to be used on 64bit
systems to manage jails. Also backward compatibility was preserved where
possible: for jail v1 syscalls, as well as with user space management
utilities.

Both jail as well as prison version were updated for the new features.
A gap was intentionally left as the intermediate versions had been
used by various patches floating around the last years.

Bump __FreeBSD_version for the afore mentioned and in kernel changes.

Special thanks to:
- Pawel Jakub Dawidek (pjd) for his multi-IPv4 patches
  and Olivier Houchard (cognet) for initial single-IPv6 patches.
- Jeff Roberson (jeff) and Randall Stewart (rrs) for their
  help, ideas and review on cpuset and SCTP support.
- Robert Watson (rwatson) for lots and lots of help, discussions,
  suggestions and review of most of the patch at various stages.
- John Baldwin (jhb) for his help.
- Simon L. Nielsen (simon) as early adopter testing changes
  on cluster machines as well as all the testers and people
  who provided feedback the last months on freebsd-jail and
  other channels.
- My employer, CK Software GmbH, for the support so I could work on this.

Reviewed by:	(see above)
MFC after:	3 months (this is just so that I get the mail)
X-MFC Before:   7.2-RELEASE if possible
2008-11-29 14:32:14 +00:00
pjd
98524ca017 Bump date. 2007-04-05 21:17:52 +00:00
pjd
7e73da14eb Add security.jail.mount_allowed sysctl, which allows to mount and
unmount jail-friendly file systems from within a jail.
Precisely it grants PRIV_VFS_MOUNT, PRIV_VFS_UNMOUNT and
PRIV_VFS_MOUNT_NONUSER privileges for a jailed super-user.
It is turned off by default.

A jail-friendly file system is a file system which driver registers
itself with VFCF_JAIL flag via VFS_SET(9) API.
The lsvfs(1) command can be used to see which file systems are
jail-friendly ones.

There currently no jail-friendly file systems, ZFS will be the first one.
In the future we may consider marking file systems like nullfs as
jail-friendly.

Reviewed by:	rwatson
2007-04-05 21:03:05 +00:00
rodrigc
664c27ffe4 Change mount_devfs reference to "mount -t devfs".
Reminded by:	ru
2006-11-21 23:45:44 +00:00
ru
081fcce9b9 Markup fixes. 2006-09-29 17:57:04 +00:00
bz
5bf837dbd8 Use IP addresses out of "TEST-NET" (for use in documentation and
example code) [RFC3330].

Reviewed by: simon
2006-06-11 12:57:41 +00:00
simon
a1a96d1eac Revert 1.73, since mounting devfs without a devfs ruleset inside a
jail is a very bad idea security wise.

Approved by:	trhodes (jcamou mentor)
No response:	jcamou
2006-05-28 09:44:13 +00:00
matteo
804d1419a2 Mention ruleset #4 (devfsrules_jail) in jail's man page.
MFC after:	3
2006-05-28 08:29:49 +00:00
matteo
08978d5bee correct strtol(3) usage and style(9)
Reviewed by:	maxim
MFC after:	2 weeks
2006-05-12 15:14:43 +00:00
maxim
9a9ea4b9c8 o Style(9) the previous commit a bit. 2006-05-11 19:06:33 +00:00
matteo
e3299095ec Add the -s option to set jail's securelevel. This is useful for jails run with non-root privileges.
PR:	bin/80242
MFC after:	2 weeks
2006-05-11 13:04:23 +00:00
matteo
9befa26aeb Use .Vt for struct xprison
Suggested by: keramida
2006-05-10 14:26:53 +00:00
matteo
478a691b77 document security.jail.list sysctl in jail(8)
PR:	docs/96807
MFC after:	3
2006-05-08 19:55:17 +00:00
maxim
8cadbc9a2c o Document security.jail.jailed sysctl.
PR:		docs/94711
Submitted by:	Andreas Kohn
MFC after:	2 weeks
2006-05-03 20:13:33 +00:00
maxim
004bb16acb o Do not mangle current session user login name with jail -u|-U.
PR:		bin/94730
Submitted by:	Frank Behrens
MFC after:	1 month
2006-04-16 12:32:04 +00:00
jcamou
0e5649aea4 Do `mount_devfs' when starting a jail.
PR:		docs/86044
Noticed by:	Dan Langille <dan@langille.org>
Reviewed by:	Jose Biskofski <jbiskofski@grmims.com>
Approved by:	trhodes (mentor)
2006-03-16 14:31:35 +00:00
philip
865e779b5d Add [-J jid_file] option to write out a JidFile, similar to a PidFile,
containing the jailid, path, hostname, ip and the command used to start
the jail.

PR:		misc/89883
Submitted by:	L. Jason Godsey <lannygodsey -at- yahoo.com>
Reviewed by:	phk
MFC after:	1 week
2005-12-03 17:32:39 +00:00
keramida
30682c8937 Note that the jail setup example is meant to be fed to sh(1), not csh(1).
PR:		docs/87351
Submitted by:	"Eli K. Breen" <bsd@unixforge.net>
Approved by:	simon, brooks
MFC after:	3 days
2005-10-26 20:19:39 +00:00
brueffer
358e47e63b Add some more info about jail startup and shutdown.
Submitted by:	Jeremie Le Hen <jeremie@le-hen.org>
MFC after:	3 days
2005-08-07 20:53:29 +00:00
arved
3db78d4417 Move DNS configuration before sendmail configuration, because
newaliases(1) may hang without proper DNS configuration.

Approved by:	brueffer
2005-07-25 16:04:30 +00:00
jcamou
97b7bcd777 Mention that it is possible to have jails
started at boot time if specified in
/etc/rc.conf.

PR:		docs/81040
Submitted by:	matteo
Approved by:	trhodes (mentor)
MFC after:	1 week
2005-07-20 00:32:01 +00:00
ru
f4251aff5d Markup fixes.
Approved by:	re (blanket)
2005-06-14 12:26:36 +00:00
pjd
ea42b6f5cd Update manual page after sysctl rename.
Corrected by:	brueffer
2005-06-09 20:52:22 +00:00
pjd
e678735f9f Document 'jid' keyword for ps(1) and '-j' option for pgrep(1)/pkill(1). 2005-05-28 16:23:29 +00:00
pjd
9d27c6032c Remove symblic link kernel->dev/null creation. We don't need it in 5.x/6.x
world (there is no /kernel file anymore).

Reminded by:	Isaac Levy presentation
2005-05-14 18:54:58 +00:00
joel
8996bb423a Fix spelling errors.
Approved by:	brueffer (mentor)
2005-04-30 09:26:22 +00:00
ru
5d9bc16368 Added the convenience "distribution" target which calls the
target of the same name from src/etc/Makefile with a proper
environment, suitable to be used during upgrades and cross-
builds.
2005-02-27 12:11:35 +00:00
cperciva
30beb7d8e4 Add a new sysctl, "security.jail.chflags_allowed", which controls the
behaviour of chflags within a jail.  If set to 0 (the default), then a
jailed root user is treated as an unprivileged user; if set to 1, then
a jailed root user is treated the same as an unjailed root user.

This is necessary to allow "make installworld" to work inside a jail,
since it attempts to manipulate the system immutable flag on certain
files.

Discussed with:	csjp, rwatson
MFC after:	2 weeks
2005-02-08 21:31:11 +00:00
ru
b8a9faaaa3 Fixed punctuation in xrefs. 2005-01-21 20:48:00 +00:00
ru
16dc33fabf Scheduled mdoc(7) sweep. 2005-01-11 11:47:22 +00:00
delphij
65c65c74d4 Initialize lcap and pwd to NULL. This allows a WARNS=6 clean build,
hence bump it to 6.

Note that the last commit message was not quite accurate.  While the
assumption exists in the code, it's not possible to have an
uninitialized p there because if lflag is set when username is NULL
then execution would be terminated earlier.
2004-11-17 10:01:48 +00:00
delphij
0c3804bf65 The code path in main() dealing with lflag assumes that p was
initialized with NULL, while it is not.  So let's initialize
it.
2004-11-17 09:52:10 +00:00
stefanf
d00a4eaaea Pass an array of gid_t rather than an array of int to getgroups().
PR:	56646
2004-10-02 11:40:48 +00:00
maxim
4c83768639 o Add -l option to jail(8) similar to su(1): before running jail'ed
program under specific user's credentials, clean the environment and
set only a few variables.

PR:		bin/70024
Submitted by:	demon
MFC after:	1 month
2004-08-15 08:21:50 +00:00
ru
6294018a20 Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
pjd
bf8b1fec3a Prepare jail(8) utility for new functionality which will limit
seeing status of mounted file system for jailed processes.
Pass full path of jail's root directory to the kernel. mount(8) utility is
doing the same thing already.
2004-06-27 10:10:16 +00:00
ru
fbb5447570 Markup nits. 2004-06-05 20:27:10 +00:00
csjp
a4a53235be Sentences should not start with conjunctions. Change "Because"
to "Since".

Pointed out by:	Ceri
2004-06-01 20:32:44 +00:00
csjp
2a8b55a029 Add a warning note to security.jail.allow_raw_sockets
about the risks of enabling raw sockets in prisons.

Because raw sockets can be used to configure and interact
with various network subsystems, extra caution should be
used where privileged access to jails is given out to
untrusted parties. As such, by default this option is disabled.

A few others and I are currently auditing the kernel
source code to ensure that the use of raw sockets by
privledged prison users is safe.

Approved by:	bmilekic (mentor)
2004-06-01 00:25:44 +00:00
maxim
872614c8b3 o Implement -U flag: run command as user which exists only in jail.
o getpwnam(3) returns NULL and does not set errno when the user does
  not exist.  Bail out with "no such user" instead of "Unknown error: 0".

PR:		bin/67262
Submitted by:	demon (-U flag)
MFC after:	3 weeks
2004-05-29 18:39:27 +00:00
dannyboy
6e5d1af09e Typos and nits. 2004-05-20 06:37:44 +00:00
pjd
8b1807b878 Document security.jail.getfsstatroot_only sysctl.
Obtained from:	rwatson's commit log
Approved by:	rwatson
2004-05-20 05:30:16 +00:00
simon
8cd95c1a2a mdoc(7) cleanup for the last commit to this file.
OK'ed by:	bmilekic
2004-05-04 14:39:32 +00:00
bmilekic
02ff3165ce Ammend jail(8) man page to explain new sysctl for raw-sockets
inside jails, Christian's last submission.

Submitted by: Christian S.J. Peron <maneo@bsdpro.com>
2004-05-03 21:12:23 +00:00
le
0aaa719b27 Correct typo. 2004-02-06 21:05:42 +00:00
rwatson
b7bf2a8dfd A variety of content cleanups:
(1) Document the notion of using jail(8) to run "virtual servers" or
    just to constrain specific applications.  If only running specific
    applications, some configuration steps are unnecessary (such as
    editing rc.conf).

(2) Add some more subsection headers to break up the bigger chunks of
    text.

(3) Clarify the problems associated with applications binding all IP
    addresses in the host, and attempt to be more specific about
    potential application problems.  Document how to force sshd to
    bind the the right socket.

(4) Suggest that in a jailed application scenario, you might want to
    have the host syslogd listen on the socket in the jail, rather
    than running syslogd in the jail.

(5) Catch another reference to /stand/sysinstall.

Approved by:	re (bmah implicitly)
2003-11-20 03:47:50 +00:00
rwatson
6b9c80ba7a No need to copy sysinstall into a jail with -CURRENT, since in
-CURRENT, we have /usr/sbin/sysinstall.

Approved by:	re (bmah implicitly)
2003-11-20 02:46:44 +00:00
kensmith
b7f1084c7b - Add a note that there are two MIB variables that have per-jail
settings.

Reviewed by:	rwatson
Approved by:	blackend (mentor)
2003-11-11 18:34:29 +00:00
charnier
01f9734fe0 add FBSDID 2003-07-06 12:44:11 +00:00
rwatson
0536901a65 When pointing users at mount_devfs to populate the /dev of a jail,
tell them that they also need to use devfs rules to prevent
inappropriate devices from appearing in the jail; add an Xref.  In
earlier versions of this man page, the user was instructed to use
sh MAKEDEV jail, which only created a minimal set of device nodes.
2003-06-26 19:04:15 +00:00