On 10/29/20 11:49 AM, Andrea Bolognani wrote:
On Wed, 2020-10-28 at 20:25 +0100, Michal Privoznik wrote:
> On 10/28/20 8:16 PM, Andrea Bolognani wrote:
>> On Mon, 2020-10-26 at 00:25 +0300, Roman Bolshakov wrote:
>>> +++ b/src/security/security_util.c
>>> @@ -56,6 +56,8 @@ VIR_LOG_INIT("security.security_util");
>>> # define XATTR_NAMESPACE "trusted"
>>> #elif defined(__FreeBSD__)
>>> # define XATTR_NAMESPACE "system"
>>> +#elif defined(__APPLE__)
>>> +# define XATTR_NAMESPACE "org"
>>> #endif
>>
>> Considering that Apple uses com.apple for its own xattrs, libvirt
>> using org.libvirt makes sense to me.
>
> One thing to consider here (and my rough googling did not help) is that
> we need the namespace to be RW only by root. If it were writable by a
> regular user (e.g "user." on linux) then a regular user could trick us
> to chown() the file to whatever user they please. Is "org" (and per your
> commit message in fact any XATTR namespace, since it doesn't look like
> mac os has any notion of namespaces after all) writable by root only?
Yeah that's a solid point, thanks for keeping an eye on me ;)
Assuming macOS doesn't have any root-only namespaces, can we simply
compile out the feature entirely on that OS? What about other targets
like Windows?
What do you mean by compile out? The whole security_uitl.c is divided
into two parts: the actual implementation if XATTR_NAMESPACE is set
(which is currently only on Linux + BSD) and stubs which do nothing but
report an error.
Then, these internal APIs are called only from the secdrivers which we
don't build on Windows, do we?
Roman, is there any misbehaviour you're seeing? Or is this just porting
the feature to macOS? I'm not against it, I just don't have anywhere to
test it.
Michal