• Steven Rostedt (VMware)'s avatar
    tracefs: Set all files to the same group ownership as the mount option · 48b27b6b
    Steven Rostedt (VMware) authored
    As people have been asking to allow non-root processes to have access to
    the tracefs directory, it was considered best to only allow groups to have
    access to the directory, where it is easier to just set the tracefs file
    system to a specific group (as other would be too dangerous), and that way
    the admins could pick which processes would have access to tracefs.
    
    Unfortunately, this broke tooling on Android that expected the other bit
    to be set. For some special cases, for non-root tools to trace the system,
    tracefs would be mounted and change the permissions of the top level
    directory which gave access to all running tasks permission to the
    tracing directory. Even though this would be dangerous to do in a
    production environment, for testing environments this can be useful.
    
    Now with the new changes to not allow other (which is still the proper
    thing to do), it breaks the testing tooling. Now more code needs to be
    loaded on the system to change ownership of the tracing directory.
    
    The real solution is to have tracefs honor the gid=xxx option when
    mounting. That is,
    
    (tracing group tracing has value 1003)
    
     mount -t tracefs -o gid=1003 tracefs /sys/kernel/tracing
    
    should have it that all files in the tracing directory should be of the
    given group.
    
    Copy the logic from d_walk() from dcache.c and simplify it for the mount
    case of tracefs if gid is set. All the files in tracefs will be walked and
    their group will be set to the value passed in.
    
    Link: https://lkml.kernel.org/r/20211207171729.2a54e1b3@gandalf.local.home
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reported-by: default avatarKalesh Singh <kaleshsingh@google.com>
    Reported-by: default avatarYabin Cui <yabinc@google.com>
    Fixes: 49d67e44 ("tracefs: Have tracefs directories not set OTH permission bits by default")
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    48b27b6b
inode.c 15.8 KB