[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 10/16] iotests/308: Fix for CAP_DAC_OVERRIDE
From: |
Kevin Wolf |
Subject: |
[PULL 10/16] iotests/308: Fix for CAP_DAC_OVERRIDE |
Date: |
Fri, 14 Jan 2022 14:52:20 +0100 |
From: Hanna Reitz <hreitz@redhat.com>
With CAP_DAC_OVERRIDE (which e.g. root generally has), permission checks
will be bypassed when opening files.
308 in one instance tries to open a read-only file (FUSE export) with
qemu-io as read/write, and expects this to fail. However, when running
it as root, opening will succeed (thanks to CAP_DAC_OVERRIDE) and only
the actual write operation will fail.
Note this as "Case not run", but have the test pass in either case.
Reported-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Fixes: 2c7dd057aa7bd7a875e9b1a53975c220d6380bc4
("export/fuse: Pass default_permissions for mount")
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20220103120014.13061-1-hreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
tests/qemu-iotests/308 | 25 +++++++++++++++++++++++--
tests/qemu-iotests/308.out | 2 +-
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/tests/qemu-iotests/308 b/tests/qemu-iotests/308
index 2e3f8f4282..bde4aac2fa 100755
--- a/tests/qemu-iotests/308
+++ b/tests/qemu-iotests/308
@@ -230,8 +230,29 @@ echo '=== Writable export ==='
fuse_export_add 'export-mp' "'mountpoint': '$EXT_MP', 'writable': true"
# Check that writing to the read-only export fails
-$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$TEST_IMG" 2>&1 \
- | _filter_qemu_io | _filter_testdir | _filter_imgfmt
+output=$($QEMU_IO -f raw -c 'write -P 42 1M 64k' "$TEST_IMG" 2>&1 \
+ | _filter_qemu_io | _filter_testdir | _filter_imgfmt)
+
+# Expected reference output: Opening the file fails because it has no
+# write permission
+reference="Could not open 'TEST_DIR/t.IMGFMT': Permission denied"
+
+if echo "$output" | grep -q "$reference"; then
+ echo "Writing to read-only export failed: OK"
+elif echo "$output" | grep -q "write failed: Permission denied"; then
+ # With CAP_DAC_OVERRIDE (e.g. when running this test as root), the export
+ # can be opened regardless of its file permissions, but writing will then
+ # fail. This is not the result for which we want to test, so count this as
+ # a SKIP.
+ _casenotrun "Opening RO export as R/W succeeded, perhaps because of" \
+ "CAP_DAC_OVERRIDE"
+
+ # Still, write this to the reference output to make the test pass
+ echo "Writing to read-only export failed: OK"
+else
+ echo "Writing to read-only export failed: ERROR"
+ echo "$output"
+fi
# But here it should work
$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$EXT_MP" | _filter_qemu_io
diff --git a/tests/qemu-iotests/308.out b/tests/qemu-iotests/308.out
index fc47bb11a2..e4467a10cf 100644
--- a/tests/qemu-iotests/308.out
+++ b/tests/qemu-iotests/308.out
@@ -95,7 +95,7 @@ virtual size: 0 B (0 bytes)
'mountpoint': 'TEST_DIR/t.IMGFMT.fuse', 'writable': true
} }
{"return": {}}
-qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open
'TEST_DIR/t.IMGFMT': Permission denied
+Writing to read-only export failed: OK
wrote 65536/65536 bytes at offset 1048576
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 65536/65536 bytes at offset 1048576
--
2.31.1
- [PULL 00/16] Block layer patches, Kevin Wolf, 2022/01/14
- [PULL 02/16] include/sysemu/blockdev.h: remove drive_mark_claimed_by_board and inline drive_def, Kevin Wolf, 2022/01/14
- [PULL 01/16] block_int: make bdrv_backing_overridden static, Kevin Wolf, 2022/01/14
- [PULL 04/16] softmmu: fix device deletion events with -device JSON syntax, Kevin Wolf, 2022/01/14
- [PULL 03/16] include/sysemu/blockdev.h: remove drive_get_max_devs, Kevin Wolf, 2022/01/14
- [PULL 06/16] qemu-storage-daemon: Add vhost-user-blk help, Kevin Wolf, 2022/01/14
- [PULL 05/16] docs: Correct 'vhost-user-blk' spelling, Kevin Wolf, 2022/01/14
- [PULL 08/16] block-backend: prevent dangling BDS pointers across aio_poll(), Kevin Wolf, 2022/01/14
- [PULL 07/16] qapi/block: Restrict vhost-user-blk to CONFIG_VHOST_USER_BLK_SERVER, Kevin Wolf, 2022/01/14
- [PULL 10/16] iotests/308: Fix for CAP_DAC_OVERRIDE,
Kevin Wolf <=
- [PULL 12/16] vvfat: Fix vvfat_write() for writes before the root directory, Kevin Wolf, 2022/01/14
- [PULL 11/16] vvfat: Fix size of temporary qcow file, Kevin Wolf, 2022/01/14
- [PULL 16/16] iotests/testrunner.py: refactor test_field_width, Kevin Wolf, 2022/01/14
- [PULL 09/16] iotests/stream-error-on-reset: New test, Kevin Wolf, 2022/01/14
- [PULL 15/16] block: drop BLK_PERM_GRAPH_MOD, Kevin Wolf, 2022/01/14
- [PULL 13/16] iotests: Test qemu-img convert of zeroed data cluster, Kevin Wolf, 2022/01/14
- [PULL 14/16] qemu-img: make is_allocated_sectors() more efficient, Kevin Wolf, 2022/01/14
- Re: [PULL 00/16] Block layer patches, Peter Maydell, 2022/01/15