Skip to contentSkip to conversation

procfs: add documentation for procfs mount options

RFC In review Vasiliy Kulikov 2 participants 2 messages Nov 15, 2011 Documentation

lore
Share & tools
lore
#0 lore raw

RFC 3/3 procfs: add documentation for procfs mount options

--

 Documentation/filesystems/proc.txt |   39 ++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)
Documentation/filesystems/proc.txt +39 -0
index 0ec91f0..518987e 100644
@@ -41,6 +41,8 @@ Table of Contents
   3.5	/proc/<pid>/mountinfo - Information about mounts
   3.6	/proc/<pid>/comm  & /proc/<pid>/task/<tid>/comm
 
+  4	Configuring procfs
+  4.1	Mount options
 
 ------------------------------------------------------------------------------
 Preface
@@ -1542,3 +1544,40 @@ a task to set its own or one of its thread siblings comm value. The comm value
 is limited in size compared to the cmdline value, so writing anything longer
 then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated
 comm value.
+
+
+------------------------------------------------------------------------------
+Configuring procfs
+------------------------------------------------------------------------------
+
+4.1	Mount options
+---------------------
+
+The following mount options are supported:
+
+	hidepid=	Set /proc/<pid>/ access mode.
+	gid=		Set the group authorized to learn processes information.
+
+hidepid=0 means classic mode - everybody may access all /proc/<pid>/ directories
+(default).
+
+hidepid=1 means users may not access any /proc/<pid>/ directories, but their
+own.  Sensitive files like cmdline, sched*, status are now protected against
+other users.  This makes impossible to learn whether any user runs
+specific program (given the program doesn't reveal itself by its behaviour).
+As an additional bonus, as /proc/<pid>/cmdline is unaccessible for other users,
+poorly written programs passing sensitive information via program arguments are
+now protected against local eavesdroppers.
+
+hidepid=2 means hidepid=1 plus all /proc/<pid>/ will be fully invisible to other
+users.  It doesn't mean that it hides a fact whether a process with a specific
+pid value exists (it can be learned by other means, e.g. by "kill -0 $PID"),
+but it hides process' uid and gid, which may be learned by stat()'ing
+/proc/<pid>/ otherwise.  It greatly complicates intruder's task of gathering info
+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.
+
+gid= defines a group authorized to learn processes information otherwise
+prohibited by hidepid=.  If you use some daemon like identd which have to learn
+information about processes information, just add identd to this group.

--

#1 lore raw
Quoted 21 lines · Vasiliy Kulikov

--

 Documentation/filesystems/proc.txt |   39 ++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)
Documentation/filesystems/proc.txt +8 -0
index 0ec91f0..518987e 100644
@@ -1542,3 +1544,40 @@ a task to set its own or one of its thread siblings comm value. The comm value
 is limited in size compared to the cmdline value, so writing anything longer
 then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated
 comm value.
+
+
+------------------------------------------------------------------------------
+Configuring procfs
+------------------------------------------------------------------------------
+
+4.1	Mount options
+---------------------

Documentation/filesystems/proc.txt a task to set its own or one of its thread siblings comm value. The comm value · line 1564

Quoted 10 lines
Documentation/filesystems/proc.txt +10 -0
+
+The following mount options are supported:
+
+	hidepid=	Set /proc/<pid>/ access mode.
+	gid=		Set the group authorized to learn processes information.
+
+hidepid=0 means classic mode - everybody may access all /proc/<pid>/ directories
+(default).
+
+hidepid=1 means users may not access any /proc/<pid>/ directories, but their

directories but their
(drop comma)

Documentation/filesystems/proc.txt a task to set its own or one of its thread siblings comm value. The comm value · line 1566

Quoted 2 lines
Documentation/filesystems/proc.txt +2 -0
+own.  Sensitive files like cmdline, sched*, status are now protected against
+other users.  This makes impossible to learn whether any user runs

This makes it impossible

Documentation/filesystems/proc.txt a task to set its own or one of its thread siblings comm value. The comm value · line 1576

Quoted 10 lines
Documentation/filesystems/proc.txt +10 -0
+specific program (given the program doesn't reveal itself by its behaviour).
+As an additional bonus, as /proc/<pid>/cmdline is unaccessible for other users,
+poorly written programs passing sensitive information via program arguments are
+now protected against local eavesdroppers.
+
+hidepid=2 means hidepid=1 plus all /proc/<pid>/ will be fully invisible to other
+users.  It doesn't mean that it hides a fact whether a process with a specific
+pid value exists (it can be learned by other means, e.g. by "kill -0 $PID"),
+but it hides process' uid and gid, which may be learned by stat()'ing
+/proc/<pid>/ otherwise.  It greatly complicates intruder's task of gathering info

complicates an intruder's task of gathering information
(or data) [+ fix line length]

Documentation/filesystems/proc.txt a task to set its own or one of its thread siblings comm value. The comm value · line 1582

Quoted 6 lines
Documentation/filesystems/proc.txt +6 -0
+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.
+
+gid= defines a group authorized to learn processes information otherwise
+prohibited by hidepid=.  If you use some daemon like identd which have to learn

which has to learn
or which must learn
or which needs to learn

Quoted 2 lines
Documentation/filesystems/proc.txt +1 -1
+information about processes information, just add identd to this group.
--
Signature · 2 lines
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***