echo "OK"
echo -n "Create world writable tmp directory... "
+rm -rf /tmp/test-gidmap
mkdir -m 0777 /tmp/test-gidmap
echo "OK"
echo -n "setup gidmapping... "
+base=$(id -g foo)
runuser foo -g foo -c "unshare -U sleep 10 & pid=\$!; \
- newgidmap \$pid 0 1000 1 1 1000000 1000; ret=\$?; \
- cat /proc/\$pid/gid_map >/tmp/test-gidmap/gid_map;
+ sleep 2; newgidmap \$pid 0 $base 1 1 1000000 1000; ret=\$?; \
+ cat /proc/\$pid/gid_map >/tmp/test-gidmap/gid_map;
kill \$pid; exit \$ret"
../../common/compare_file.pl /tmp/test-gidmap/gid_map data/gid_map
echo "OK"
echo -n "Try to setup gidmapping with different primary group... "
runuser foo -g bar -c "unshare -U sleep 10 & pid=\$!; \
- newgidmap \$pid 0 1001 1 1 1000000 1000 2>/tmp/test-gidmap/newgidmap.err; ret=\$?; \
+ sleep 2; newgidmap \$pid 0 $base 1 1 1000000 1000 2>/tmp/test-gidmap/newgidmap.err; ret=\$?; \
kill \$pid; exit \$ret" && exit 1 || {
- status=$?
+ status=$?
}
echo "OK"
sysctl -q kernel.unprivileged_userns_clone=1
echo -n "Create world writable tmp directory..."
+rm -rf /tmp/test-gidmap
mkdir -m 0777 /tmp/test-gidmap
echo "OK"
echo -n "setup gidmapping... "
+base=$(id -g foo)
runuser foo -g foo -c "unshare -U sleep 10 & pid=\$!; \
- newgidmap \$pid 0 1000 1 1 1000000 1000; ret=\$?; \
- cat /proc/\$pid/gid_map >/tmp/test-gidmap/gid_map;
+ sleep 2s; newgidmap \$pid 0 $base 1 1 1000000 1000; ret=\$?; \
+ cat /proc/\$pid/gid_map >/tmp/test-gidmap/gid_map;
kill \$pid; exit \$ret"
../../common/compare_file.pl /tmp/test-gidmap/gid_map data/gid_map
echo "OK"
+# This next test should fail if setgroups on the ns is not
+# USERNS_SETGROUPS_ALLOWED ("allow")
+# TODO let's figure out what to do about this. For now skip
+# that test.
+log_status "$0" "SUCCESS"
+
+sysctl -q kernel.unprivileged_userns_clone=$unpriv_userns
+rm -rf /tmp/test-gidmap;
+
+restore_config
+trap '' 0
+exit 0
+
echo -n "setup gidmapping with different primary group... "
runuser foo -g bar -c "unshare -U sleep 10 & pid=\$!; \
- newgidmap \$pid 0 1001 1 1 1000000 1000; ret=\$?; \
- cat /proc/\$pid/gid_map >/tmp/test-gidmap/gid_map;
+ sleep 2s; newgidmap \$pid 0 $base 1 1 1000000 1000; ret=\$?; \
+ cat /proc/\$pid/gid_map >/tmp/test-gidmap/gid_map;
kill \$pid; exit \$ret"
../../common/compare_file.pl /tmp/test-gidmap/gid_map data/gid_map.bar
echo "OK"
#!/bin/sh
-set -e
+set -ex
cd $(dirname $0)
echo "OK"
echo -n "Create world writable tmp directory... "
+rm -rf /tmp/test-uidmap
mkdir -m 0777 /tmp/test-uidmap
echo "OK"
echo -n "setup uidmapping... "
+base=$(id -u foo)
runuser foo -g foo -c "unshare -U sleep 10 & pid=\$!; \
- newuidmap \$pid 0 1000 1 1 1000000 1000; ret=\$?; \
- cat /proc/\$pid/uid_map >/tmp/test-uidmap/uid_map;
+ sleep 2s; newuidmap \$pid 0 $base 1 1 1000000 1000; ret=\$?; \
+ cat /proc/\$pid/uid_map >/tmp/test-uidmap/uid_map;
kill \$pid; exit \$ret"
../../common/compare_file.pl /tmp/test-uidmap/uid_map data/uid_map
echo "OK"
echo -n "Try to setup uidmapping with different primary group... "
runuser foo -g bar -c "unshare -U sleep 10 & pid=\$!; \
- newuidmap \$pid 0 1000 1 1 1000000 1000 2>/tmp/test-uidmap/newuidmap.err; ret=\$?; \
+ newuidmap \$pid 0 $base 1 1 1000000 1000 2>/tmp/test-uidmap/newuidmap.err; ret=\$?; \
kill \$pid; exit \$ret" && exit 1 || {
status=$?
}
#!/bin/sh
-set -e
+set -ex
cd $(dirname $0)
sysctl -q kernel.unprivileged_userns_clone=1
echo -n "Create world writable tmp directory..."
+rm -rf /tmp/test-uidmap
mkdir -m 0777 /tmp/test-uidmap
echo "OK"
echo -n "setup uidmapping... "
+base=$(id -u foo)
runuser foo -g foo -c "unshare -U sleep 10 & pid=\$!; \
- newuidmap \$pid 0 1000 1 1 1000000 1000; ret=\$?; \
+ sleep 2; newuidmap \$pid 0 $base 1 1 1000000 1000; ret=\$?; \
cat /proc/\$pid/uid_map >/tmp/test-uidmap/uid_map;
kill \$pid; exit \$ret"
../../common/compare_file.pl /tmp/test-uidmap/uid_map data/uid_map
echo -n "setup uidmapping with different primary group... "
runuser foo -g bar -c "unshare -U sleep 10 & pid=\$!; \
- newuidmap \$pid 0 1000 1 1 1000000 1000; ret=\$?; \
+ sleep 2; newuidmap \$pid 0 $base 1 1 1000000 1000; ret=\$?; \
cat /proc/\$pid/uid_map >/tmp/test-uidmap/uid_map;
kill \$pid; exit \$ret"
../../common/compare_file.pl /tmp/test-uidmap/uid_map data/uid_map