]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add CAP_MKNOD tests for PrivateDevices=
authorDjalal Harouni <tixxdz@opendz.org>
Sun, 25 Sep 2016 11:04:30 +0000 (13:04 +0200)
committerDjalal Harouni <tixxdz@opendz.org>
Sun, 25 Sep 2016 11:04:30 +0000 (13:04 +0200)
Makefile.am
src/test/test-execute.c
test/test-execute/exec-privatedevices-no-capability-mknod.service [new file with mode: 0644]
test/test-execute/exec-privatedevices-yes-capability-mknod.service [new file with mode: 0644]

index e823a5c5159e7007c2a4c0514a16fdbb5c6bf216..66dbbeca0ea92196064c8eee731d314a84859b47 100644 (file)
@@ -1639,6 +1639,8 @@ EXTRA_DIST += \
        test/test-execute/exec-personality-aarch64.service \
        test/test-execute/exec-privatedevices-no.service \
        test/test-execute/exec-privatedevices-yes.service \
+       test/test-execute/exec-privatedevices-no-capability-mknod.service \
+       test/test-execute/exec-privatedevices-yes-capability-mknod.service \
        test/test-execute/exec-privatetmp-no.service \
        test/test-execute/exec-privatetmp-yes.service \
        test/test-execute/exec-spec-interpolation.service \
index 25489cefbc0ef82ea0b16a67afb33a94ced1181d..2bc1854485b2a9190306e647fcbec7e6ae595647 100644 (file)
@@ -133,6 +133,15 @@ static void test_exec_privatedevices(Manager *m) {
         test(m, "exec-privatedevices-no.service", 0, CLD_EXITED);
 }
 
+static void test_exec_privatedevices_capabilities(Manager *m) {
+        if (detect_container() > 0) {
+                log_notice("testing in container, skipping private device tests");
+                return;
+        }
+        test(m, "exec-privatedevices-yes-capability-mknod.service", 0, CLD_EXITED);
+        test(m, "exec-privatedevices-no-capability-mknod.service", 0, CLD_EXITED);
+}
+
 static void test_exec_systemcallfilter(Manager *m) {
 #ifdef HAVE_SECCOMP
         if (!is_seccomp_available())
@@ -345,6 +354,7 @@ int main(int argc, char *argv[]) {
                 test_exec_ignoresigpipe,
                 test_exec_privatetmp,
                 test_exec_privatedevices,
+                test_exec_privatedevices_capabilities,
                 test_exec_privatenetwork,
                 test_exec_systemcallfilter,
                 test_exec_systemcallerrornumber,
diff --git a/test/test-execute/exec-privatedevices-no-capability-mknod.service b/test/test-execute/exec-privatedevices-no-capability-mknod.service
new file mode 100644 (file)
index 0000000..6d39469
--- /dev/null
@@ -0,0 +1,7 @@
+[Unit]
+Description=Test CAP_MKNOD capability for PrivateDevices=no
+
+[Service]
+PrivateDevices=no
+ExecStart=/bin/sh -x -c 'capsh --print | grep cap_mknod'
+Type=oneshot
diff --git a/test/test-execute/exec-privatedevices-yes-capability-mknod.service b/test/test-execute/exec-privatedevices-yes-capability-mknod.service
new file mode 100644 (file)
index 0000000..fb1fc28
--- /dev/null
@@ -0,0 +1,7 @@
+[Unit]
+Description=Test CAP_MKNOD capability for PrivateDevices=yes
+
+[Service]
+PrivateDevices=yes
+ExecStart=/bin/sh -x -c '! capsh --print | grep cap_mknod'
+Type=oneshot