[Bug 1645232] Re: e2fsprogs - could not preserve ACL permissions : The getxattr() returns with (EINVAL)
Theodore Ts'o
tytso at mit.edu
Sun Jan 15 04:09:09 UTC 2017
Thanks for the patch; it definitely helps identify the problem. I don't
think it is a completely correct change, however.
The problem is that it's doing the translation in
write_xattrs_to_buffer(), but it is not making the translation in the
opposite direction in read_xattrs_to_buffer(). This means if some
other program using this library function --- for example, fuse2fs,
reads in an existing xattr block with an ACL, it will read it the on-
disk format, _not_ translate it to a standard acl format, and then
write_xattrs_to_buffer() will take as input an acl encoded in the on-
disk format, and then try to convert it from lgetxattr format to on-disk
format again, and Much Hilarity will result.
I also wonder if write_xattrs_to_buffer() is the right place to make
this conversion, or rather ext2fs_{read,write}_ext_attr3(). Then what
is stored in the handle structure is the on-disk encoding, and we would
do the translation at the higher layer function rather than the low-
level read/write functions.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to e2fsprogs in Ubuntu.
https://bugs.launchpad.net/bugs/1645232
Title:
e2fsprogs - could not preserve ACL permissions : The getxattr()
returns with (EINVAL)
Status in e2fsprogs package in Ubuntu:
Confirmed
Bug description:
The original installed e2fsprogs did not support mke2fs -d /directory
" option . So , git cloned from e2fsprogs packages from repository
and installed it and followed below steps to reproduce this :
1. set the ACL rules as below to one of the binary :
$ setfacl -m u:vipatil:r-- rootfs/usr/bin/helloworld
$ getfacl rootfs/usr/bin/helloworld
# file: rootfs/usr/bin/helloworld
# owner: shkumar
# group: hardev
user::rwx
user:vipatil:r--
group::---
mask::r--
other::---
2. $ dd if=/dev/zero of=test.ext4 bs=1M count=60
3. $ mke2fs -t ext4 test.ext4 -d rootfs/
mke2fs 1.43.3 (04-Sep-2016)
Discarding device blocks: done
Creating filesystem with 61440 1k blocks and 15360 inodes
Filesystem UUID: 495713b3-5f1f-427a-8359-a736dfb2ece9
Superblock backups stored on blocks:
8193, 24577, 40961, 57345
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done
4. sudo mount -o loop,acl,user_xattr,rw,sync test.ext4 mountpoint
5.@/mountpoint$ getfacl usr/bin/helloworld
getfacl: usr/bin/helloworld: Invalid argument
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/e2fsprogs/+bug/1645232/+subscriptions
More information about the foundations-bugs
mailing list