Ns-chroot symlinks and root checks. - ns-tools - Namespace utilities to reuse Open Source packaging efforts.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 4f5ae8cc592b947f0674fc849a2fab2df422b966
(DIR) parent 84ab05a787db5488718d87a11897e5204e4a0416
(HTM) Author: Christoph Lohmann <20h@r-36.net>
Date: Sun, 11 May 2014 15:40:57 +0200
Ns-chroot symlinks and root checks.
1.) ns-chroot can now be linked with the namespace name to automatically run
it.
% ln -s /bin/ns-chroot $HOME/bin/gentoo
% gentoo
This will run the /ns/gentoo namespace when calling »gentoo«.
2.) ns-prepare and ns-unprepare now check for root and bail if they need to be
invoked but do not have root rights.
Diffstat:
bin/ns-chroot | 28 ++++++++++++++++++++++------
bin/ns-prepare | 6 ++++++
bin/ns-unprepare | 6 ++++++
3 files changed, 34 insertions(+), 6 deletions(-)
---
(DIR) diff --git a/bin/ns-chroot b/bin/ns-chroot
@@ -1,17 +1,33 @@
#!/bin/sh
-curdir="$(pwd)"
-
+basen="$(basename "$0")"
dounprepare=0
-t[ "$1" = "-u" ] && dounprepare=1 && shift 1
-if [ $# -lt 1 ];
+if [ "$basen" != "ns-chroot" ];
tthen
- printf "usage: [-u] %s ns [cmd]\n" "$(basename $0)" >&2
+ nsrootn="$basen"
+ [ "$1" = "-u" ] && dounprepare=1 && shift 1
+else
+ if [ $# -lt 1 ];
+ then
+ printf "usage: %s [-u] ns [cmd]\n" "$(basename $0)" >&2
+ exit 1
+ fi
+ [ "$1" = "-u" ] && dounprepare=1 && shift 1
+
+ nsrootn="$1"
+ shift 1
+fi
+
+if [ -z "$nsrootn" ];
+tthen
+ printf "usage: %s [-u] ns [cmd]\n" "$(basename $0)" >&2
exit 1
fi
-nsroot="$(ns-root "$1")"
+curdir="$(pwd)"
+
+nsroot="$(ns-root "$nsrootn")"
t[ $? -gt 0 ] && exit $?
t[ -e "$nsroot/.ns/rc.conf" ] && . "$nsroot/.ns/rc.conf"
(DIR) diff --git a/bin/ns-prepare b/bin/ns-prepare
@@ -20,6 +20,12 @@ shift 1
-a $doforce -eq 0 \
-a $doforceonboot -eq 0 ] && exit 0
+if [ $(id -u) -ne 0 ];
+tthen
+ printf "ns-prepare needs to be run with root rights.\n" 2>&1
+ exit 1
+fi
+
MOUNTFS=""
UMOUNTFS=""
TOUCHFILES=""
(DIR) diff --git a/bin/ns-unprepare b/bin/ns-unprepare
@@ -15,6 +15,12 @@ nsroot="$(ns-root "$1")"
t[ -e "$nsroot/.ns/preparedonboot" -a $doforce -eq 0 ] && exit 0
t[ ! -e "$nsroot/.ns/prepared" -a $doforce -eq 0 ] && exit 0
+if [ $(uid -u) -ne 0 ];
+tthen
+ printf "ns-unprepare needs to be run with root rights.\n" 2>&1
+ exit 1
+fi
+
MOUNTFS=""
UMOUNTFS=""
TOUCHFILES=""