0b5e55
diff -up util-linux-2.23.2/sys-utils/nsenter.1.kzak util-linux-2.23.2/sys-utils/nsenter.1
0b5e55
--- util-linux-2.23.2/sys-utils/nsenter.1.kzak	2014-03-12 12:39:19.283577293 +0100
0b5e55
+++ util-linux-2.23.2/sys-utils/nsenter.1	2014-03-12 12:42:08.930336415 +0100
0b5e55
@@ -47,12 +47,7 @@ flag).
0b5e55
 will fork by default if changing the PID namespace, so that the new program
0b5e55
 and its children share the same PID namespace and are visible to each other.
0b5e55
 If \-\-no\-fork is used, the new program will be exec'ed without forking.
0b5e55
-.TP
0b5e55
-.B user namespace
0b5e55
-process will have distinct set of UIDs, GIDs and capabilities
0b5e55
-.RB ( CLONE_\:NEWUSER
0b5e55
-flag).
0b5e55
-.TP
0b5e55
+.PP
0b5e55
 See the
0b5e55
 .BR clone (2)
0b5e55
 for exact semantics of the flags.
0b5e55
@@ -88,9 +83,6 @@ the network namespace
0b5e55
 /proc/\fIpid\fR/ns/pid
0b5e55
 the PID namespace
0b5e55
 .TP
0b5e55
-/proc/\fIpid\fR/ns/user
0b5e55
-the user namespace
0b5e55
-.TP
0b5e55
 /proc/\fIpid\fR/root
0b5e55
 the root directory
0b5e55
 .TP
0b5e55
@@ -124,11 +116,6 @@ Enter the PID namespace.  If no file is
0b5e55
 the target process.  If file is specified enter the PID namespace specified by
0b5e55
 file.
0b5e55
 .TP
0b5e55
-\fB\-U\fR, \fB\-\-user\fR [\fIfile\fR]
0b5e55
-Enter the user namespace.  If no file is specified enter the user namespace of
0b5e55
-the target process.  If file is specified enter the user namespace specified by
0b5e55
-file.
0b5e55
-.TP
0b5e55
 \fB\-r\fR, \fB\-\-root\fR [\fIdirectory\fR]
0b5e55
 Set the root directory.  If no directory is specified set the root directory to
0b5e55
 the root directory of the target process.  If directory is specified set the
0b5e55
diff -up util-linux-2.23.2/sys-utils/nsenter.c.kzak util-linux-2.23.2/sys-utils/nsenter.c
0b5e55
--- util-linux-2.23.2/sys-utils/nsenter.c.kzak	2014-03-12 12:39:10.402485179 +0100
0b5e55
+++ util-linux-2.23.2/sys-utils/nsenter.c	2014-03-12 12:44:07.986570461 +0100
0b5e55
@@ -42,12 +42,7 @@ static struct namespace_file {
0b5e55
 	int fd;
0b5e55
 } namespace_files[] = {
0b5e55
 	/* Careful the order is significant in this array.
0b5e55
-	 *
0b5e55
-	 * The user namespace comes first, so that it is entered
0b5e55
-	 * first.  This gives an unprivileged user the potential to
0b5e55
-	 * enter the other namespaces.
0b5e55
 	 */
0b5e55
-	{ .nstype = CLONE_NEWUSER, .name = "ns/user", .fd = -1 },
0b5e55
 	{ .nstype = CLONE_NEWIPC,  .name = "ns/ipc",  .fd = -1 },
0b5e55
 	{ .nstype = CLONE_NEWUTS,  .name = "ns/uts",  .fd = -1 },
0b5e55
 	{ .nstype = CLONE_NEWNET,  .name = "ns/net",  .fd = -1 },
0b5e55
@@ -71,7 +66,6 @@ static void usage(int status)
0b5e55
 	fputs(_(" -i, --ipc   [=<file>]  enter System V IPC namespace\n"), out);
0b5e55
 	fputs(_(" -n, --net   [=<file>]  enter network namespace\n"), out);
0b5e55
 	fputs(_(" -p, --pid   [=<file>]  enter pid namespace\n"), out);
0b5e55
-	fputs(_(" -U, --user  [=<file>]  enter user namespace\n"), out);
0b5e55
 	fputs(_(" -r, --root  [=<dir>]   set the root directory\n"), out);
0b5e55
 	fputs(_(" -w, --wd    [=<dir>]   set the working directory\n"), out);
0b5e55
 	fputs(_(" -F, --no-fork          do not fork before exec'ing <program>\n"), out);
0b5e55
@@ -168,7 +162,6 @@ int main(int argc, char *argv[])
0b5e55
 		{ "ipc", optional_argument, NULL, 'i' },
0b5e55
 		{ "net", optional_argument, NULL, 'n' },
0b5e55
 		{ "pid", optional_argument, NULL, 'p' },
0b5e55
-		{ "user", optional_argument, NULL, 'U' },
0b5e55
 		{ "root", optional_argument, NULL, 'r' },
0b5e55
 		{ "wd", optional_argument, NULL, 'w' },
0b5e55
 		{ "no-fork", no_argument, NULL, 'F' },
0b5e55
@@ -186,7 +179,7 @@ int main(int argc, char *argv[])
0b5e55
 	atexit(close_stdout);
0b5e55
 
0b5e55
 	while ((c =
0b5e55
-		getopt_long(argc, argv, "hVt:m::u::i::n::p::U::r::w::F",
0b5e55
+		getopt_long(argc, argv, "hVt:m::u::i::n::p::r::w::F",
0b5e55
 			    longopts, NULL)) != -1) {
0b5e55
 		switch (c) {
0b5e55
 		case 'h':
0b5e55
@@ -228,12 +221,6 @@ int main(int argc, char *argv[])
0b5e55
 			else
0b5e55
 				namespaces |= CLONE_NEWPID;
0b5e55
 			break;
0b5e55
-		case 'U':
0b5e55
-			if (optarg)
0b5e55
-				open_namespace_fd(CLONE_NEWUSER, optarg);
0b5e55
-			else
0b5e55
-				namespaces |= CLONE_NEWUSER;
0b5e55
-			break;
0b5e55
 		case 'F':
0b5e55
 			do_fork = 0;
0b5e55
 			break;
0b5e55
diff -up util-linux-2.23.2/sys-utils/unshare.1.kzak util-linux-2.23.2/sys-utils/unshare.1
0b5e55
--- util-linux-2.23.2/sys-utils/unshare.1.kzak	2014-03-12 12:39:41.367806340 +0100
0b5e55
+++ util-linux-2.23.2/sys-utils/unshare.1	2014-03-12 12:40:25.186260760 +0100
0b5e55
@@ -34,9 +34,6 @@ etc. (\fBCLONE_NEWNET\fP flag).
0b5e55
 .BR "pid namespace"
0b5e55
 children will have a distinct set of pid to process mappings than their parent.
0b5e55
 (\fBCLONE_NEWPID\fP flag).
0b5e55
-.TP
0b5e55
-.BR "user namespace"
0b5e55
-process will have distinct set of uids, gids and capabilities. (\fBCLONE_NEWUSER\fP flag).
0b5e55
 .PP
0b5e55
 See the \fBclone\fR(2) for exact semantics of the flags.
0b5e55
 .SH OPTIONS
0b5e55
@@ -58,9 +55,6 @@ Unshare the network namespace.
0b5e55
 .TP
0b5e55
 .BR \-p , " \-\-pid"
0b5e55
 Unshare the pid namespace.
0b5e55
-.TP
0b5e55
-.BR \-U , " \-\-user"
0b5e55
-Unshare the user namespace.
0b5e55
 .SH SEE ALSO
0b5e55
 .BR unshare (2),
0b5e55
 .BR clone (2)
0b5e55
diff -up util-linux-2.23.2/sys-utils/unshare.c.kzak util-linux-2.23.2/sys-utils/unshare.c
0b5e55
--- util-linux-2.23.2/sys-utils/unshare.c.kzak	2014-03-12 12:39:46.385858383 +0100
0b5e55
+++ util-linux-2.23.2/sys-utils/unshare.c	2014-03-12 12:44:49.955005384 +0100
0b5e55
@@ -45,7 +45,6 @@ static void usage(int status)
0b5e55
 	fputs(_(" -i, --ipc         unshare System V IPC namespace\n"), out);
0b5e55
 	fputs(_(" -n, --net         unshare network namespace\n"), out);
0b5e55
 	fputs(_(" -p, --pid         unshare pid namespace\n"), out);
0b5e55
-	fputs(_(" -U, --user        unshare user namespace\n"), out);
0b5e55
 
0b5e55
 	fputs(USAGE_SEPARATOR, out);
0b5e55
 	fputs(USAGE_HELP, out);
0b5e55
@@ -65,7 +64,6 @@ int main(int argc, char *argv[])
0b5e55
 		{ "ipc", no_argument, 0, 'i' },
0b5e55
 		{ "net", no_argument, 0, 'n' },
0b5e55
 		{ "pid", no_argument, 0, 'p' },
0b5e55
-		{ "user", no_argument, 0, 'U' },
0b5e55
 		{ NULL, 0, 0, 0 }
0b5e55
 	};
0b5e55
 
0b5e55
@@ -78,7 +76,7 @@ int main(int argc, char *argv[])
0b5e55
 	textdomain(PACKAGE);
0b5e55
 	atexit(close_stdout);
0b5e55
 
0b5e55
-	while ((c = getopt_long(argc, argv, "hVmuinpU", longopts, NULL)) != -1) {
0b5e55
+	while ((c = getopt_long(argc, argv, "hVmuinp", longopts, NULL)) != -1) {
0b5e55
 		switch (c) {
0b5e55
 		case 'h':
0b5e55
 			usage(EXIT_SUCCESS);
0b5e55
@@ -100,9 +98,6 @@ int main(int argc, char *argv[])
0b5e55
 		case 'p':
0b5e55
 			unshare_flags |= CLONE_NEWPID;
0b5e55
 			break;
0b5e55
-		case 'U':
0b5e55
-			unshare_flags |= CLONE_NEWUSER;
0b5e55
-			break;
0b5e55
 		default:
0b5e55
 			usage(EXIT_FAILURE);
0b5e55
 		}