[Devel] [PATCH rh7] ext4: fix filtering trusted xattr

Konstantin Khorenko khorenko at virtuozzo.com
Wed Sep 21 06:46:17 PDT 2016


On 09/21/2016 09:56 AM, Pavel Tikhomirov wrote:
> We have same check in ext2_xattr_trusted_list, ext3_xattr_trusted_list,
> hfsplus_listxattr and more, all together ~15 places. Do we need list
> only on ext4? Maybe we can be good with only getxattr allowed without list?

Let's behave the same as in a VM.

"trusted.xxx" are listed in VMs => let's list them inside Containers.

About fixing this for ext4 only: well, yes, better to fix it for other fs as well,
but i think we can skip it: we allow only ext4 inside ploop =>
we'll be fine.
If some days someone comes to us with other fs, we'll fix it as well.
(People can face it if run on "simfs" (which is a bindmount now) over, say, zfs or xfs).

>
> On 09/21/2016 01:56 AM, Maxim Patlasov wrote:
>> Commit 4f7ce4dd4741cb65df018028aaefedb298915aa6:
>>
>> Author: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
>> ve/xattr: allow to set trusted.xxx for container admin
>>
>> relaxed capability check on setxattr path, but overlooked
>> to do the same on getxattr path. Hence, container admin
>> became able to set trusted xattrs, but not seeing them:
>>
>> # setfattr -h -n trusted.name file
>> # echo $?
>> 0
>> # getfattr -dm- file
>> <empty-output>
>>
>> This broke generic/062 from xfstests.
>>
>> https://jira.sw.ru/browse/PSBM-51009
>>
>> Signed-off-by: Maxim Patlasov <mpatlasov at virtuozzo.com>
>> ---
>>  fs/ext4/xattr_trusted.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/ext4/xattr_trusted.c b/fs/ext4/xattr_trusted.c
>> index 95f1f4a..49dd83f 100644
>> --- a/fs/ext4/xattr_trusted.c
>> +++ b/fs/ext4/xattr_trusted.c
>> @@ -19,7 +19,7 @@ ext4_xattr_trusted_list(struct dentry *dentry, char *list, size_t list_size,
>>  	const size_t prefix_len = XATTR_TRUSTED_PREFIX_LEN;
>>  	const size_t total_len = prefix_len + name_len + 1;
>>
>> -	if (!capable(CAP_SYS_ADMIN))
>> +	if (!ve_capable(CAP_SYS_ADMIN))
>>  		return 0;
>>
>>  	if (list && total_len <= list_size) {
>>
>


More information about the Devel mailing list