From 95d933234c795ae27856541e6fd2867a4da90b2e Mon Sep 17 00:00:00 2001 From: Filippo Squillace Date: Thu, 27 Nov 2014 00:46:43 +0100 Subject: [PATCH] Fix issue #6 --- lib/core.sh | 17 +++++++++++------ tests/test_core.sh | 10 +++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/core.sh b/lib/core.sh index c6cc042..e72219c 100644 --- a/lib/core.sh +++ b/lib/core.sh @@ -78,6 +78,7 @@ fi CHROOT=${JUJU_HOME}/usr/bin/arch-chroot TRUE=${JUJU_HOME}/usr/bin/true +ID="${JUJU_HOME}/usr/bin/id -u" ################################# MAIN FUNCTIONS ############################## @@ -169,12 +170,16 @@ function run_juju_as_root(){ function _run_juju_with_proot(){ - if ${PROOT} ${TRUE} &> /dev/null - then - JUJU_ENV=1 ${PROOT} $@ - else - JUJU_ENV=1 PROOT_NO_SECCOMP=1 ${PROOT} $@ - fi + ${PROOT} ${TRUE} &> /dev/null || export PROOT_NO_SECCOMP=1 + + [ "$(${PROOT} ${ID} 2> /dev/null )" == "0" ] && \ + die "You cannot access with root privileges. Use --root option instead." + + JUJU_ENV=1 ${PROOT} $@ + local ret=$? + export -n PROOT_NO_SECCOMP + + return $ret } diff --git a/tests/test_core.sh b/tests/test_core.sh index 2aacca6..bce0368 100755 --- a/tests/test_core.sh +++ b/tests/test_core.sh @@ -57,6 +57,7 @@ function test_setup_juju(){ export -f setup_juju JUJU_ENV=1 bash -ic "setup_juju" &> /dev/null is_equal $? 1 || return 1 + unset setup_juju } @@ -71,9 +72,9 @@ function test_setup_from_file_juju(){ bash -ic "setup_from_file_juju noexist.tar.gz" &> /dev/null is_equal $? 1 || return 1 - export -f setup_from_file_juju JUJU_ENV=1 bash -ic "setup_from_file_juju" &> /dev/null is_equal $? 1 || return 1 + unset setup_from_file_juju } @@ -92,6 +93,7 @@ function test_run_juju_as_root(){ export -f run_juju_as_root JUJU_ENV=1 bash -ic "run_juju_as_root" &> /dev/null is_equal $? 1 || return 1 + unset run_juju_as_root } function test_run_juju_as_user(){ @@ -119,6 +121,11 @@ function test_run_juju_as_user_proot_args(){ touch $JUJU_TEMPDIR/newdir/newfile run_juju_as_user "-b $JUJU_TEMPDIR/newdir:/newdir" "ls -l /newdir/newfile" 1> /dev/null is_equal $? 0 || return 1 + + export -f _run_juju_with_proot + ID="/usr/bin/echo 0" bash -ic "_run_juju_with_proot" &> /dev/null + is_equal $? 1 || return 1 + unset _run_juju_with_proot } function test_run_juju_as_user_seccomp(){ @@ -149,6 +156,7 @@ function test_delete_juju(){ export -f delete_juju JUJU_ENV=1 bash -ic "delete_juju" &> /dev/null is_equal $? 1 || return 1 + unset delete_juju }