summaryrefslogtreecommitdiffstats
path: root/test/TEST-22-TMPFILES
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-04-29 15:44:45 +0200
committerLennart Poettering <lennart@poettering.net>2019-04-30 09:18:23 +0200
commit34015aea1703c7240e5d0188a98aed4e8aab5b3b (patch)
treed1aaee8ba77f9c883cd2ae42db69e7b132bb119e /test/TEST-22-TMPFILES
parenttmpfiles: be more careful when adjusting chmod() + chown() (diff)
downloadsystemd-34015aea1703c7240e5d0188a98aed4e8aab5b3b.tar.xz
systemd-34015aea1703c7240e5d0188a98aed4e8aab5b3b.zip
tests: add test for suid/sgid handling in tmpfiles
Diffstat (limited to 'test/TEST-22-TMPFILES')
-rwxr-xr-xtest/TEST-22-TMPFILES/test-09.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/test/TEST-22-TMPFILES/test-09.sh b/test/TEST-22-TMPFILES/test-09.sh
new file mode 100755
index 0000000000..b69abda644
--- /dev/null
+++ b/test/TEST-22-TMPFILES/test-09.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+set -e
+set -x
+
+# Make sure that the "stat" output is not locale dependent.
+export LANG=C LC_ALL=C
+
+# first, create file without suid/sgid
+systemd-tmpfiles --create - <<EOF
+f /tmp/xxx 0755 1 1 - -
+f /tmp/yyy 0755 1 1 - -
+EOF
+
+test "$(stat -c %F:%u:%g:%a /tmp/xxx)" = "regular empty file:1:1:755"
+test "$(stat -c %F:%u:%g:%a /tmp/yyy)" = "regular empty file:1:1:755"
+
+# then, add suid/sgid
+systemd-tmpfiles --create - <<EOF
+f /tmp/xxx 04755
+f /tmp/yyy 02755
+EOF
+
+test "$(stat -c %F:%u:%g:%a /tmp/xxx)" = "regular empty file:1:1:4755"
+test "$(stat -c %F:%u:%g:%a /tmp/yyy)" = "regular empty file:1:1:2755"
+
+# then, chown the files to somebody else
+systemd-tmpfiles --create - <<EOF
+f /tmp/xxx - 2 2
+f /tmp/yyy - 2 2
+EOF
+
+test "$(stat -c %F:%u:%g:%a /tmp/xxx)" = "regular empty file:2:2:4755"
+test "$(stat -c %F:%u:%g:%a /tmp/yyy)" = "regular empty file:2:2:2755"
+
+# then, chown the files to a third user/group but also drop to a mask that has
+# both more and fewer bits set
+systemd-tmpfiles --create - <<EOF
+f /tmp/xxx 0770 3 3
+f /tmp/yyy 0770 3 3
+EOF
+
+test "$(stat -c %F:%u:%g:%a /tmp/xxx)" = "regular empty file:3:3:770"
+test "$(stat -c %F:%u:%g:%a /tmp/yyy)" = "regular empty file:3:3:770"
+
+# return to the beginning
+systemd-tmpfiles --create - <<EOF
+f /tmp/xxx 0755 1 1 - -
+f /tmp/yyy 0755 1 1 - -
+EOF
+
+test "$(stat -c %F:%u:%g:%a /tmp/xxx)" = "regular empty file:1:1:755"
+test "$(stat -c %F:%u:%g:%a /tmp/yyy)" = "regular empty file:1:1:755"
+
+# remove everything
+systemd-tmpfiles --remove - <<EOF
+r /tmp/xxx
+r /tmp/yyy
+EOF