mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
export/fuse: Pass default_permissions for mount
We do not do any permission checks in fuse_open(), so let the kernel do them. We already let fuse_getattr() report the proper UNIX permissions, so this should work the way we want. This causes a change in 308's reference output, because now opening a non-writable export with O_RDWR fails already, instead of only actually attempting to write to it. (That is an improvement.) Signed-off-by: Max Reitz <mreitz@redhat.com> Message-Id: <20210625142317.271673-2-mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
c2615bdfbd
commit
2c7dd057aa
3 changed files with 9 additions and 4 deletions
|
@ -153,8 +153,12 @@ static int setup_fuse_export(FuseExport *exp, const char *mountpoint,
|
||||||
struct fuse_args fuse_args;
|
struct fuse_args fuse_args;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Needs to match what fuse_init() sets. Only max_read must be supplied. */
|
/*
|
||||||
mount_opts = g_strdup_printf("max_read=%zu", FUSE_MAX_BOUNCE_BYTES);
|
* max_read needs to match what fuse_init() sets.
|
||||||
|
* max_write need not be supplied.
|
||||||
|
*/
|
||||||
|
mount_opts = g_strdup_printf("max_read=%zu,default_permissions",
|
||||||
|
FUSE_MAX_BOUNCE_BYTES);
|
||||||
|
|
||||||
fuse_argv[0] = ""; /* Dummy program name */
|
fuse_argv[0] = ""; /* Dummy program name */
|
||||||
fuse_argv[1] = "-o";
|
fuse_argv[1] = "-o";
|
||||||
|
|
|
@ -215,7 +215,8 @@ echo '=== Writable export ==='
|
||||||
fuse_export_add 'export-mp' "'mountpoint': '$EXT_MP', 'writable': true"
|
fuse_export_add 'export-mp' "'mountpoint': '$EXT_MP', 'writable': true"
|
||||||
|
|
||||||
# Check that writing to the read-only export fails
|
# Check that writing to the read-only export fails
|
||||||
$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$TEST_IMG" | _filter_qemu_io
|
$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$TEST_IMG" 2>&1 \
|
||||||
|
| _filter_qemu_io | _filter_testdir | _filter_imgfmt
|
||||||
|
|
||||||
# But here it should work
|
# But here it should work
|
||||||
$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$EXT_MP" | _filter_qemu_io
|
$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$EXT_MP" | _filter_qemu_io
|
||||||
|
|
|
@ -91,7 +91,7 @@ virtual size: 0 B (0 bytes)
|
||||||
'mountpoint': 'TEST_DIR/t.IMGFMT.fuse', 'writable': true
|
'mountpoint': 'TEST_DIR/t.IMGFMT.fuse', 'writable': true
|
||||||
} }
|
} }
|
||||||
{"return": {}}
|
{"return": {}}
|
||||||
write failed: Permission denied
|
qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT': Permission denied
|
||||||
wrote 65536/65536 bytes at offset 1048576
|
wrote 65536/65536 bytes at offset 1048576
|
||||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
wrote 65536/65536 bytes at offset 1048576
|
wrote 65536/65536 bytes at offset 1048576
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue