Commits on Source 7

  • Ondrej Mosnáček's avatar
    kernfs: clean up struct kernfs_iattrs · b312dd50
    Ondrej Mosnáček authored
    
    
    Right now, kernfs_iattrs embeds the whole struct iattr, even though it
    doesn't really use half of its fields... This both leads to wasting
    space and makes the code look awkward. Let's just list the few fields
    we need directly in struct kernfs_iattrs.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    b312dd50
  • Ondrej Mosnáček's avatar
    kernfs: do not alloc iattrs in kernfs_xattr_get · 8347a266
    Ondrej Mosnáček authored
    
    
    This is a read-only operation, so we can simply return -ENODATA if
    kn->iattr is NULL.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    8347a266
  • Ondrej Mosnáček's avatar
    selinux: try security xattr after genfs for kernfs filesystems · 50c5d2cc
    Ondrej Mosnáček authored
    
    
    Since kernfs supports the security xattr handlers, we can simply use
    these to determine the inode's context, dropping the need to update it
    from kernfs explicitly using a security_inode_notifysecctx() call.
    
    We achieve this by setting a new sbsec flag SE_SBGENFS_XATTR to all
    mounts that are known to use kernfs under the hood and then fetching the
    xattrs after determining the fallback genfs sid in
    inode_doinit_with_dentry() when this flag is set.
    
    This will allow implementing full security xattr support in kernfs and
    removing the ...notifysecctx() call in a subsequent patch.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    50c5d2cc
  • Ondrej Mosnáček's avatar
    kernfs: use simple_xattrs for security attributes · 08097c75
    Ondrej Mosnáček authored
    
    
    Replace the special handling of security xattrs with simple_xattrs, as
    is already done for the trusted xattrs. This simplifies the code and
    allows LSMs to use more than just a single xattr to do their business.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    08097c75
  • Ondrej Mosnáček's avatar
    LSM: add new hook for kernfs node initialization · e6c71200
    Ondrej Mosnáček authored
    
    
    This patch introduces a new security hook that is intended for
    initializing the security data for newly created kernfs nodes, which
    provide a way of storing a non-default security context, but need to
    operate independently from mounts (and therefore may not have an
    associated inode at the moment of creation).
    
    The main motivation is to allow kernfs nodes to inherit the context of
    the parent under SELinux, similar to the behavior of
    security_inode_init_security(). Other LSMs may implement their own logic
    for handling the creation of new nodes.
    
    This patch also adds helper functions to <linux/kernfs.h> for
    getting/setting security xattrs of a kernfs node so that LSMs hooks are
    able to do their job. Other important attributes should be accessible
    direcly in the kernfs_node fields (in case there is need for more, then
    new helpers should be added to kernfs.h along with the patch that needs
    them).
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    e6c71200
  • Ondrej Mosnáček's avatar
    selinux: implement the kernfs_init_security hook · 83d72930
    Ondrej Mosnáček authored
    
    
    The hook applies the same logic as selinux_determine_inode_label(), with
    the exception of the super_block handling, which will be enforced on the
    actual inodes later by other hooks.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    83d72930
  • Ondrej Mosnáček's avatar
    kernfs: initialize security of newly created nodes · b5be7e8d
    Ondrej Mosnáček authored
    Use the new security_kernfs_init_security() hook to allow LSMs to
    possibly assign a non-default security context to a newly created kernfs
    node based on the attributes of the new node and also its parent node.
    
    This fixes an issue with cgroupfs under SELinux, where newly created
    cgroup subdirectories/files would not inherit its parent's context if
    it had been set explicitly to a non-default value (other than the genfs
    context specified by the policy). This can be reproduced as follows (on
    Fedora/RHEL):
    
        # mkdir /sys/fs/cgroup/unified/test
        # # Need permissive to change the label under Fedora policy:
        # setenforce 0
        # chcon -t container_file_t /sys/fs/cgroup/unified/test
        # ls -lZ /sys/fs/cgroup/unified
        total 0
        -r--r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.controllers
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.max.depth
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.max.descendants
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.procs
        -r--r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.stat
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.subtree_control
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.threads
        drwxr-xr-x.  2 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 init.scope
        drwxr-xr-x. 26 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:21 system.slice
        drwxr-xr-x.  3 root root system_u:object_r:container_file_t:s0 0 Jan 29 03:15 test
        drwxr-xr-x.  3 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 user.slice
        # mkdir /sys/fs/cgroup/unified/test/subdir
    
    Actual result:
    
        # ls -ldZ /sys/fs/cgroup/unified/test/subdir
        drwxr-xr-x. 2 root root system_u:object_r:cgroup_t:s0 0 Jan 29 03:15 /sys/fs/cgroup/unified/test/subdir
    
    Expected result:
    
        # ls -ldZ /sys/fs/cgroup/unified/test/subdir
        drwxr-xr-x. 2 root root unconfined_u:object_r:container_file_t:s0 0 Jan 29 03:15 /sys/fs/cgroup/unified/test/subdir
    
    Link: https://github.com/SELinuxProject/selinux-kernel/issues/39
    
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    b5be7e8d
Loading
Loading