On Tue, 2007-04-17 at 13:40 -0500, Trevor S Highland wrote:
> I am trying to open /selinux/avc/cache_threshold for writing as root
> with the staff_r role. The open succeeds. When I attempt to write to
> the file, the write succeeds if I write the value that is currently in
> the file. If I write any other value write returns EPERM. From my
> understanding staff_r should not have write access
> to /selinux/avc/cache_threshold. If this is the case, can anyone
> explain why the open succeeds.
> 
> Thank you,
> Trevor

Well the implementation sees this as 2 different operations.  The open
is taken care of entirely by standard VFS securty hooks.  AKA does your
shell (staff_r) have permission to open a system_u:object_r:security_t
file with write.  Apparently policy says that it does and I see no
reason why that couldn't be 'fixed' thus solving your inquiry.  Dan?

The second operation is actually setting the new value, in that case the
kernel code looks like:

        if (new_value != avc_cache_threshold) {
                ret = task_has_security(current, SECURITY__SETSECPARAM);
                if (ret)
                        goto out_free;
                avc_cache_threshold = new_value;
        }

I could buy into switching the task_has_security() hook and the new/old
comparison so you don't have the inconsistancy if you don't make a
change and always get an EPERM but if you want the open to fail that's
not a kernel problem and is just a policy issue.

-Eric

--
redhat-lspp mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/redhat-lspp

Reply via email to