mirror of
https://github.com/containers/fuse-overlayfs.git
synced 2025-09-08 14:52:31 -04:00

ovl_setattr () used to pass -1 as uid or gid when either of them is not changed for do_fchown () / do_chown (), but if these functions use overriding xattrs instead of real fchown () or chown (), it causes -1 to be written in owner overriding xattrs and break them. Replace -1 with the current uid or gid before calling do_fchown () / do_chown (). Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
50 lines
1.1 KiB
Bash
Executable File
50 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -ex
|
|
|
|
test $(id -u) -gt 0
|
|
|
|
rm -rf unpriv-test
|
|
mkdir unpriv-test
|
|
|
|
cd unpriv-test
|
|
|
|
mkdir lower upper workdir merged
|
|
|
|
touch lower/a lower/b
|
|
chmod 444 lower/a lower/b
|
|
|
|
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir merged
|
|
|
|
rm -f merged/a
|
|
chmod 406 merged/b
|
|
|
|
test \! -e merged/a
|
|
test $(stat --printf=%a merged/b) -eq 406
|
|
test $(stat --printf=%a upper/b) -eq 406
|
|
if [ ${FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT:-0} -eq 1 ]; then
|
|
test -e upper/.wh.a
|
|
else
|
|
test -c upper/a
|
|
fi
|
|
|
|
fusermount -u merged || [ $? -eq "${EXPECT_UMOUNT_STATUS:-0}" ]
|
|
|
|
# xattr_permissions=2
|
|
rm -rf lower upper workdir merged
|
|
mkdir lower upper workdir merged
|
|
|
|
touch upper/file
|
|
|
|
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,xattr_permissions=2 merged
|
|
|
|
# Ensure UID is preserved with chgrp.
|
|
podman unshare chgrp 1 merged/file
|
|
test $(podman unshare stat -c %u:%g merged/file) = 0:1
|
|
|
|
# Ensure UID and GID are preserved with chmod.
|
|
chmod 600 merged/file
|
|
test $(podman unshare stat -c %u:%g merged/file) = 0:1
|
|
|
|
fusermount -u merged || [ $? -eq "${EXPECT_UMOUNT_STATUS:-0}" ]
|