Thread (24 messages) 24 messages, 5 authors, 2020-02-12

Re: [PATCH v8 10/11] docs: proc: add documentation for "hidepid=4" and "subset=pidfs" options and new mount behavior

From: Alexey Gladkov <hidden>
Date: 2020-02-12 16:03:48
Also in: linux-fsdevel, linux-security-module, lkml

On Mon, Feb 10, 2020 at 10:29:23AM -0800, Andy Lutomirski wrote:
On Mon, Feb 10, 2020 at 7:06 AM Alexey Gladkov [off-list ref] wrote:
quoted
Signed-off-by: Alexey Gladkov <redacted>
---
 Documentation/filesystems/proc.txt | 53 ++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index 99ca040e3f90..4741fd092f36 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -50,6 +50,8 @@ Table of Contents
   4    Configuring procfs
   4.1  Mount options

+  5    Filesystem behavior
+
 ------------------------------------------------------------------------------
 Preface
 ------------------------------------------------------------------------------
@@ -2021,6 +2023,7 @@ The following mount options are supported:

        hidepid=        Set /proc/<pid>/ access mode.
        gid=            Set the group authorized to learn processes information.
+       subset=         Show only the specified subset of procfs.

 hidepid=0 means classic mode - everybody may access all /proc/<pid>/ directories
 (default).
@@ -2042,6 +2045,56 @@ information about running processes, whether some daemon runs with elevated
 privileges, whether other user runs some sensitive program, whether other users
 run any program at all, etc.

+hidepid=4 means that procfs should only contain /proc/<pid>/ directories
+that the caller can ptrace.
I have a couple of minor nits here.

First, perhaps we could stop using magic numbers and use words.
hidepid=ptraceable is actually comprehensible, whereas hidepid=4
requires looking up what '4' means.
Do you mean to add string aliases for the values?

hidepid=0 == hidepid=default
hidepid=1 == hidepid=restrict
hidepid=2 == hidepid=ownonly
hidepid=4 == hidepid=ptraceable

Something like that ?
Second, there is PTRACE_MODE_ATTACH and PTRACE_MODE_READ.  Which is it?
This is PTRACE_MODE_READ.
quoted
+
 gid= defines a group authorized to learn processes information otherwise
 prohibited by hidepid=.  If you use some daemon like identd which needs to learn
 information about processes information, just add identd to this group.
How is this better than just creating an entirely separate mount a
different hidepid and a different gid owning it?
I'm not sure I understand the question. Now you cannot have two proc with
different hidepid in the same pid_namespace. 
In any event,
usually gid= means that this gid is the group owner of inodes.  Let's
call it something different.  gid_override_hidepid might be credible.
But it's also really weird -- do different groups really see different
contents when they read a directory?
If you use hidepid=2,gid=wheel options then the user is not in the wheel
group will see only their processes and the user in the wheel group will
see whole tree. The gid= is a kind of whitelist for hidepid=1|2.

-- 
Rgrds, legion
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help