acl.inc, run-ptest: improve ptest functionality on limited rootfs

ACL's ptest has a handful of failure modes which can be triggered by
a restrictive or small system. First, the ptest requires that daemon
be in the bin group, which run-ptest attempts to do using gpasswd,
but gpasswd is part of shadow, and oe-core removes shadow when it
doesn't think shadow will be needed. Even if, say, a package has
RDEPENDS on it. Whoops. So we manually sed the group file. This
will probably work.

Second, the filesystem used for the test has to support ACLs,
so we create a dummy ext3 filesystem and use that.

Third, the root/permissions test relies on the assumption that
"mkdir d" produces a directory which non-root users can access,
but in a secure product which defaults to umask 077, this doesn't
work. (That fix has been separately reported to upstream acl
through their bug report form.)

(This may prevent the test from running without mkfs.ext3, but it
allows the test to run on targets where root doesn't have ACL
support. Tradeoffs, tradeoffs everywhere.)

(From OE-Core rev: 0f1054e7db74bb4a196e00773915d7997b55bdf2)

Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Peter Seebach 2016-05-18 16:30:47 -05:00 committed by Richard Purdie
parent 599933cfe1
commit 070ea45b6c
3 changed files with 87 additions and 5 deletions

View File

@ -14,6 +14,7 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/acl/${BP}.src.tar.gz \
file://acl-fix-the-order-of-expected-output-of-getfacl.patch \
file://test-fix-insufficient-quoting-of.patch \
file://test-fixups-on-SELinux-machines-for-root-testcases.patch \
file://test-fix-directory-permissions.patch \
"
require ea-acl.inc

View File

@ -1,7 +1,64 @@
#!/bin/sh
#
#This script is used to run acl test suites
gpasswd -a daemon bin
make -C test -k tests root-tests |sed \
-e 's|^\[.*\] \(.*\) -- ok$|PASS: \1|' \
-e 's|^\[.*\] \(.*\) -- failed|FAIL: \1|'
gpasswd -d daemon bin
#umask 077
EXT3_IMAGE=ext3.img
EXT3_MOUNT_POINT=/mnt/ext3
trap 'rm -f ${EXT3_IMAGE}' EXIT
dd if=/dev/zero of=${EXT3_IMAGE} bs=1M count=1
if [ "$?" -eq 0 ]; then
echo "PASS: dump ext3.img"
else
echo "FAIL: dump ext3.img"
exit 1
fi
mkfs.ext3 -F ${EXT3_IMAGE}
if [ "$?" -eq 0 ]; then
echo "PASS: mkfs.ext3 -F ext3.img"
else
echo "FAIL: mkfs.ext3 -F ext3.img"
exit 1
fi
if [ -d $EXT3_MOUNT_POINT ]; then
echo "mount point exist"
else
mkdir -p $EXT3_MOUNT_POINT
fi
mount -o loop,rw,acl ${EXT3_IMAGE} $EXT3_MOUNT_POINT
if [ "$?" -eq 0 ]; then
echo "PASS: mount ext3.img"
else
echo "FAIL: mount ext3.img"
exit 1
fi
cp -rf ./test/ $EXT3_MOUNT_POINT
cd $EXT3_MOUNT_POINT/test/
if sed -e 's!^bin:x:2:$!bin:x:2:daemon!' < /etc/group > gtmp
then if cp /etc/group group.orig;
then cp gtmp /etc/group
make -k tests root-tests | sed \
-e 's|^\[.*\] \(.*\) -- ok$|PASS: \1|' \
-e 's|^\[.*\] \(.*\) -- failed|FAIL: \1|'
cp group.orig /etc/group
else echo "FAIL: couldn't save original group file."
exit 1
fi
else echo "FAIL: couldn't create modified group file."
exit 1
fi
cd -
umount $EXT3_MOUNT_POINT
rm -rf $EXT3_MOUNT_POINT
rm $EXT3_IMAGE

View File

@ -0,0 +1,24 @@
commit c45bae84817a70fef6c2b661a07a492a0d23ae85
Author: Peter Seebach <peter.seebach@windriver.com>
Date: Wed May 11 15:16:06 2016 -0500
Fix permissions on temporary directory
The temporary directory's permissions have to allow other users to
view the directory. A default umask of 022 is common, but not mandatory,
and secure systems may have more restrictive defaults.
Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
diff --git a/test/root/permissions.test b/test/root/permissions.test
index 42615f5..098b52a 100644
--- a/test/root/permissions.test
+++ b/test/root/permissions.test
@@ -16,6 +16,7 @@ Cry immediately if we are not running as root.
First, set up a temporary directory and create a regular file with
defined permissions.
+ $ umask 022
$ mkdir d
$ cd d
$ umask 027