[systemd-commits] 4 commits - test/TEST-04-SECCOMP test/test-functions units/systemd-logind.service.in
Zbigniew JÄdrzejewski-Szmek
zbyszek at kemper.freedesktop.org
Sat Feb 15 01:09:09 CET 2014
test/TEST-04-SECCOMP/Makefile | 1
test/TEST-04-SECCOMP/test-seccomp.sh | 13 ++++
test/TEST-04-SECCOMP/test.sh | 79 ++++++++++++++++++++++++++++
test/TEST-04-SECCOMP/will-fail.service | 8 ++
test/TEST-04-SECCOMP/will-fail2.service | 6 ++
test/TEST-04-SECCOMP/will-not-fail.service | 9 +++
test/TEST-04-SECCOMP/will-not-fail2.service | 6 ++
test/test-functions | 14 ++--
units/systemd-logind.service.in | 5 +
9 files changed, 135 insertions(+), 6 deletions(-)
New commits:
commit f928d3263d788da8dec64f06c792988b6076e600
Author: Ronny Chevalier <chevalier.ronny at gmail.com>
Date: Fri Feb 14 17:21:41 2014 +0100
test: add basic seccomp tests
diff --git a/test/TEST-04-SECCOMP/Makefile b/test/TEST-04-SECCOMP/Makefile
new file mode 120000
index 0000000..e9f93b1
--- /dev/null
+++ b/test/TEST-04-SECCOMP/Makefile
@@ -0,0 +1 @@
+../TEST-01-BASIC/Makefile
\ No newline at end of file
diff --git a/test/TEST-04-SECCOMP/test-seccomp.sh b/test/TEST-04-SECCOMP/test-seccomp.sh
new file mode 100755
index 0000000..2496190
--- /dev/null
+++ b/test/TEST-04-SECCOMP/test-seccomp.sh
@@ -0,0 +1,13 @@
+#!/bin/bash -x
+
+systemctl start will-fail.service
+systemctl start will-fail2.service
+systemctl start will-not-fail.service
+systemctl start will-not-fail2.service
+systemctl is-failed will-fail.service || exit 1
+systemctl is-failed will-fail2.service || exit 1
+systemctl is-failed will-not-fail.service && exit 1
+systemctl is-failed will-not-fail2.service && exit 1
+
+touch /testok
+exit 0
diff --git a/test/TEST-04-SECCOMP/test.sh b/test/TEST-04-SECCOMP/test.sh
new file mode 100755
index 0000000..a85b50c
--- /dev/null
+++ b/test/TEST-04-SECCOMP/test.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+TEST_DESCRIPTION="seccomp tests"
+
+. $TEST_BASE_DIR/test-functions
+
+check_result_qemu() {
+ ret=1
+ mkdir -p $TESTDIR/root
+ mount ${LOOPDEV}p1 $TESTDIR/root
+ [[ -e $TESTDIR/root/testok ]] && ret=0
+ [[ -f $TESTDIR/root/failed ]] && cp -a $TESTDIR/root/failed $TESTDIR
+ cp -a $TESTDIR/root/var/log/journal $TESTDIR
+ umount $TESTDIR/root
+ [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
+ ls -l $TESTDIR/journal/*/*.journal
+ test -s $TESTDIR/failed && ret=$(($ret+1))
+ return $ret
+}
+
+test_run() {
+ if run_qemu; then
+ check_result_qemu || return 1
+ else
+ dwarn "can't run QEMU, skipping"
+ fi
+ if check_nspawn; then
+ run_nspawn
+ check_result_nspawn || return 1
+ else
+ dwarn "can't run systemd-nspawn, skipping"
+ fi
+ return 0
+}
+
+test_setup() {
+ create_empty_image
+ mkdir -p $TESTDIR/root
+ mount ${LOOPDEV}p1 $TESTDIR/root
+
+ # Create what will eventually be our root filesystem onto an overlay
+ (
+ LOG_LEVEL=5
+ eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
+
+ setup_basic_environment
+
+ # setup the testsuite service
+ cat >$initdir/etc/systemd/system/testsuite.service <<EOF
+[Unit]
+Description=Testsuite service
+After=multi-user.target
+
+[Service]
+ExecStart=/test-seccomp.sh
+Type=oneshot
+EOF
+
+ # copy the units used by this test
+ cp {will-fail,will-fail2,will-not-fail,will-not-fail2}.service \
+ $initdir/etc/systemd/system
+ cp test-seccomp.sh $initdir/
+
+ setup_testsuite
+ )
+ setup_nspawn_root
+
+ ddebug "umount $TESTDIR/root"
+ umount $TESTDIR/root
+}
+
+test_cleanup() {
+ umount $TESTDIR/root 2>/dev/null
+ [[ $LOOPDEV ]] && losetup -d $LOOPDEV
+ return 0
+}
+
+do_test "$@"
diff --git a/test/TEST-04-SECCOMP/will-fail.service b/test/TEST-04-SECCOMP/will-fail.service
new file mode 100644
index 0000000..c4e0be9
--- /dev/null
+++ b/test/TEST-04-SECCOMP/will-fail.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Will fail
+
+[Service]
+ExecStart=/bin/echo "This should not be seen"
+SystemCallFilter=ioperm
+SystemCallFilter=~ioperm
+SystemCallFilter=ioperm
diff --git a/test/TEST-04-SECCOMP/will-fail2.service b/test/TEST-04-SECCOMP/will-fail2.service
new file mode 100644
index 0000000..f7f1ae9
--- /dev/null
+++ b/test/TEST-04-SECCOMP/will-fail2.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Will fail 2
+
+[Service]
+ExecStart=/bin/echo "This should not be seen"
+SystemCallFilter=~write open execve exit_group close mmap munmap fstat DONOTEXIST
diff --git a/test/TEST-04-SECCOMP/will-not-fail.service b/test/TEST-04-SECCOMP/will-not-fail.service
new file mode 100644
index 0000000..5c1b594
--- /dev/null
+++ b/test/TEST-04-SECCOMP/will-not-fail.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Will not fail
+
+[Service]
+ExecStart=/bin/echo "Foo bar"
+SystemCallFilter=~read write open execve ioperm
+SystemCallFilter=ioctl
+SystemCallFilter=read write open execve
+SystemCallFilter=~ioperm
diff --git a/test/TEST-04-SECCOMP/will-not-fail2.service b/test/TEST-04-SECCOMP/will-not-fail2.service
new file mode 100644
index 0000000..2df05e3
--- /dev/null
+++ b/test/TEST-04-SECCOMP/will-not-fail2.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Reset SystemCallFilter
+
+[Service]
+ExecStart=/bin/echo "Foo bar"
+SystemCallFilter=
commit 8f9c6fe5ff1d59001aecbf3fbf9ca0ed7ff28ba7
Author: Zbigniew JÄdrzejewski-Szmek <zbyszek at in.waw.pl>
Date: Fri Feb 14 17:01:43 2014 -0500
units: systemd-logind fails hard without dbus
That is, without --enable-kdbus and kdbus running.
With --enable-kdbus things are more complicated, because dbus might be
necessary, if kdbus is missing at runtime. If it is not necessary,
the socket will be started, which is not imporant, but not the service.
diff --git a/units/systemd-logind.service.in b/units/systemd-logind.service.in
index 9019668..c6cbd1c 100644
--- a/units/systemd-logind.service.in
+++ b/units/systemd-logind.service.in
@@ -13,6 +13,11 @@ Documentation=http://www.freedesktop.org/wiki/Software/systemd/multiseat
Wants=user.slice
After=nss-user-lookup.target user.slice
+# Ask for the dbus socket. If running over kdbus, the socket will
+# not be actually used.
+Wants=dbus.socket
+After=dbus.socket
+
[Service]
ExecStart=@rootlibexecdir@/systemd-logind
Restart=always
commit 8a8332f77e61d41f3bb28b8f929ed41e0ffaf721
Author: Zbigniew JÄdrzejewski-Szmek <zbyszek at in.waw.pl>
Date: Fri Feb 14 16:39:58 2014 -0500
test: print the important commands to make debugging easier
diff --git a/test/test-functions b/test/test-functions
index 8e300b1..dac0dcc 100644
--- a/test/test-functions
+++ b/test/test-functions
@@ -66,11 +66,13 @@ $KERNEL_APPEND \
QEMU_OPTIONS="$QEMU_OPTIONS -initrd $INITRD"
fi
- $QEMU_BIN $QEMU_OPTIONS -append "$KERNEL_APPEND" $TESTDIR/rootdisk.img || return 1
+ ( set -x
+ $QEMU_BIN $QEMU_OPTIONS -append "$KERNEL_APPEND" $TESTDIR/rootdisk.img ) || return 1
}
run_nspawn() {
- ../../systemd-nspawn --boot --directory=$TESTDIR/nspawn-root /usr/lib/systemd/systemd
+ set -x
+ ../../systemd-nspawn --boot --directory=$TESTDIR/nspawn-root /usr/lib/systemd/systemd $KERNEL_APPEND
}
setup_basic_environment() {
@@ -108,7 +110,7 @@ install_dmevent() {
install_systemd() {
# install compiled files
- (cd $TEST_BASE_DIR/..; make DESTDIR=$initdir install)
+ (cd $TEST_BASE_DIR/..; set -x; make DESTDIR=$initdir install)
# remove unneeded documentation
rm -fr $initdir/usr/share/{man,doc,gtk-doc}
# we strip binaries since debug symbols increase binaries size a lot
commit b8667ee4162cd2510363602b417cecede9fd2cca
Author: Zbigniew JÄdrzejewski-Szmek <zbyszek at in.waw.pl>
Date: Fri Feb 14 16:39:15 2014 -0500
test: make the image bigger
I got some errors about lack of disk space... 100MB either way
shouldn't matter.
diff --git a/test/test-functions b/test/test-functions
index a9446e5..8e300b1 100644
--- a/test/test-functions
+++ b/test/test-functions
@@ -126,12 +126,12 @@ install_missing_libraries() {
create_empty_image() {
rm -f "$TESTDIR/rootdisk.img"
# Create the blank file to use as a root filesystem
- dd if=/dev/null of="$TESTDIR/rootdisk.img" bs=1M seek=200
+ dd if=/dev/null of="$TESTDIR/rootdisk.img" bs=1M seek=300
LOOPDEV=$(losetup --show -P -f $TESTDIR/rootdisk.img)
[ -b "$LOOPDEV" ] || return 1
echo "LOOPDEV=$LOOPDEV" >> $STATEFILE
- sfdisk -C 6400 -H 2 -S 32 -L "$LOOPDEV" <<EOF
-,3200
+ sfdisk -C 9600 -H 2 -S 32 -L "$LOOPDEV" <<EOF
+,4800
,
EOF
More information about the systemd-commits
mailing list