From 2b8965c8d2d6a46bb3271880340d679f6e0cb75d Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sat, 13 Mar 2004 02:53:58 +0000 Subject: [PATCH] initial checkin git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1240 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/lib_internal/jail.h | 26 ++++++++++++++++ util-vserver/lib_internal/jailintotempdir.c | 48 +++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 util-vserver/lib_internal/jail.h create mode 100644 util-vserver/lib_internal/jailintotempdir.c diff --git a/util-vserver/lib_internal/jail.h b/util-vserver/lib_internal/jail.h new file mode 100644 index 0000000..eb0c9ac --- /dev/null +++ b/util-vserver/lib_internal/jail.h @@ -0,0 +1,26 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifndef H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H +#define H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H + +#include + +bool jailIntoTempDir(); + +#endif // H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H diff --git a/util-vserver/lib_internal/jailintotempdir.c b/util-vserver/lib_internal/jailintotempdir.c new file mode 100644 index 0000000..9f95434 --- /dev/null +++ b/util-vserver/lib_internal/jailintotempdir.c @@ -0,0 +1,48 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "jail.h" + +#include +#include +#include + +bool +jailIntoTempDir() +{ + char buf[] = "/tmp/jaildir.XXXXXX"; + char const * d = mkdtemp(buf); + gid_t id = 1; + + if (d==0 || + chdir(d)==-1 || + rmdir(d)==-1 || + chroot(".")==-1 || + setgroups(1, &id)==-1 || + setgid(id)==-1 || + setuid(id)==-1 || + getgid()!=id || + getuid()!=id) + return false; + + return true; +} -- 1.8.1.5