public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Patch: Hide process info from other users/users not in my group
@ 2007-11-20 10:34 Daniel Reichelt
  2007-11-20 17:53 ` Johannes Weiner
  2007-11-21 18:03 ` Pavel Machek
  0 siblings, 2 replies; 6+ messages in thread
From: Daniel Reichelt @ 2007-11-20 10:34 UTC (permalink / raw)
  To: linux-kernel

Hi list,

this patch sets (if the corresponding kconfig option is active) the access
modes of /proc/<pid>-dirs to 550 instead of 555 in order to provide some
privacy to users. Tools like lsof and ps to spy out on other users become
ineffective.

Cheers,
--
Daniel Reichelt

# diff -Naur linux-2.6.23.8/fs/Kconfig linux-2.6.23.8-dhr/fs/Kconfig
--- linux-2.6.23.8/fs/Kconfig   2007-11-16 19:14:27.000000000 +0100
+++ linux-2.6.23.8-dhr/fs/Kconfig       2007-11-20 11:33:18.000000000 +0100
@@ -918,6 +918,17 @@
         help
         Exports the dump image of crashed kernel in ELF format.

+config PROC_SECURED_PID_DIRS
+       bool "chmod /proc/<pid>-dirs to 550"
+       depends on PROC_FS
+       default n
+       help
+         chmod /proc/<pid>-dirs to 550 instead of 555 which provides a bit
+         moreprivacy to users on your system as only the user's and the user's
+         group's process details may be viewed. Other users' tasks running on
+         the system will be completely hidden from the means of utilities like
+         ps or lsof.
+
 config PROC_SYSCTL
        bool "Sysctl support (/proc/sys)" if EMBEDDED
        depends on PROC_FS
# diff -Naur linux-2.6.23.8/fs/proc/base.c linux-2.6.23.8-dhr/fs/proc/base.c
--- linux-2.6.23.8/fs/proc/base.c       2007-11-16 19:14:27.000000000 +0100
+++ linux-2.6.23.8-dhr/fs/proc/base.c   2007-11-20 11:31:31.000000000 +0100
@@ -2200,7 +2200,11 @@
        if (!inode)
                goto out;

+#ifdef CONFIG_PROC_SECURED_PID_DIRS
+       inode->i_mode = S_IFDIR|S_IRUSR|S_IRGRP|S_IXUSR|S_IXGRP;
+#else
        inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
+#endif
        inode->i_op = &proc_tgid_base_inode_operations;
        inode->i_fop = &proc_tgid_base_operations;
        inode->i_flags|=S_IMMUTABLE;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch: Hide process info from other users/users not in my group
  2007-11-20 10:34 Patch: Hide process info from other users/users not in my group Daniel Reichelt
@ 2007-11-20 17:53 ` Johannes Weiner
  2007-11-20 19:42   ` Daniel Reichelt
  2007-11-21 10:57   ` Daniel Reichelt
  2007-11-21 18:03 ` Pavel Machek
  1 sibling, 2 replies; 6+ messages in thread
From: Johannes Weiner @ 2007-11-20 17:53 UTC (permalink / raw)
  To: Daniel Reichelt; +Cc: linux-kernel

Hi Daniel,

On Tue, Nov 20, 2007 at 11:34:20AM +0100, Daniel Reichelt wrote:
> # diff -Naur linux-2.6.23.8/fs/Kconfig linux-2.6.23.8-dhr/fs/Kconfig
> --- linux-2.6.23.8/fs/Kconfig   2007-11-16 19:14:27.000000000 +0100
> +++ linux-2.6.23.8-dhr/fs/Kconfig       2007-11-20 11:33:18.000000000 +0100
> @@ -918,6 +918,17 @@
>          help
>          Exports the dump image of crashed kernel in ELF format.
> 
> +config PROC_SECURED_PID_DIRS
> +       bool "chmod /proc/<pid>-dirs to 550"
> +       depends on PROC_FS
> +       default n
> +       help
> +         chmod /proc/<pid>-dirs to 550 instead of 555 which provides a bit
> +         moreprivacy to users on your system as only the user's and the user's

Missing space   ^.

I like the idea, but I would prefer to have three checkboxes for this option:

	* Normal modes (as in how they are right now)
	* User and group visible
	* Visible for the owning user only

How about that?

	Hannes

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch: Hide process info from other users/users not in my group
  2007-11-20 17:53 ` Johannes Weiner
@ 2007-11-20 19:42   ` Daniel Reichelt
  2007-11-21 10:57   ` Daniel Reichelt
  1 sibling, 0 replies; 6+ messages in thread
From: Daniel Reichelt @ 2007-11-20 19:42 UTC (permalink / raw)
  To: Daniel Reichelt, linux-kernel

> I like the idea, but I would prefer to have three checkboxes for this option:
Nice addition, thanks for the input.

--- linux-2.6.23.8/fs/Kconfig   2007-11-16 19:14:27.000000000 +0100
+++ linux-2.6.23.8-dhr/fs/Kconfig       2007-11-20 19:54:54.000000000 +0100
@@ -918,6 +918,36 @@
         help
         Exports the dump image of crashed kernel in ELF format.

+choice
+       prompt "Restrict access to /proc/<pid>-dirs"
+       default PROC_PIDDIRS_UNRESTRICTED
+config PROC_PIDDIRS_UNRESTRICTED
+       bool "no restriction"
+       depends on PROC_FS
+       help
+         Don't restrict access to /proc/<pid>-dirs, i.e. leave mode at 555
+         respectively r-xr-xr-x . This is the traditional mode of operation.
+
+         If unsure, say Y.
+config PROC_PIDDIRS_RESTRICT_TO_UG
+       bool "restrict to user and group
+       depends on PROC_FS
+       help
+         Restrict access to /proc/<pid>-dirs to user and group, i.e. set mode
+         to 550 respectively r-xr-x--- .
+
+         If unsure, say N.
+
+config PROC_PIDDIRS_RESTRICT_TO_U
+       bool "restrict to user
+       depends on PROC_FS
+       help
+         Restrict access to /proc/<pid>-dirs to user only, i.e. set mode to
+         500 respectively r-x------ .
+
+         If unsure, say N.
+endchoice
+
 config PROC_SYSCTL
        bool "Sysctl support (/proc/sys)" if EMBEDDED
        depends on PROC_FS
--- linux-2.6.23.8/fs/proc/base.c       2007-11-16 19:14:27.000000000 +0100
+++ linux-2.6.23.8-dhr/fs/proc/base.c   2007-11-20 20:01:33.000000000 +0100
@@ -2200,7 +2200,13 @@
        if (!inode)
                goto out;

+#ifdef CONFIG_PROC_PIDDIRS_UNRESTRICTED
        inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
+#elifdef CONFIG_PROC_PIDDIRS_RESTRICT_TO_UG
+       inode->i_mode = S_IFDIR|S_IRUSR|S_IRGRP|S_IXUSR|S_IXGRP;
+#elifdef CONFIG_PROC_PIDDIRS_RESTRICT_TO_U
+       inode->i_mode = S_IFDIR|S_IRUSR|S_IXUSR;
+#endif
        inode->i_op = &proc_tgid_base_inode_operations;
        inode->i_fop = &proc_tgid_base_operations;
        inode->i_flags|=S_IMMUTABLE;


--
Daniel


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch: Hide process info from other users/users not in my group
  2007-11-20 17:53 ` Johannes Weiner
  2007-11-20 19:42   ` Daniel Reichelt
@ 2007-11-21 10:57   ` Daniel Reichelt
  1 sibling, 0 replies; 6+ messages in thread
From: Daniel Reichelt @ 2007-11-21 10:57 UTC (permalink / raw)
  To: Johannes Weiner; +Cc: linux-kernel

Hi,

sorry, I messed up the #ifdef directives (confused them with C++...). Here's
the really working patch:

--- linux-2.6.23.8/fs/Kconfig   2007-11-16 19:14:27.000000000 +0100
+++ linux-2.6.23.8-dhr/fs/Kconfig       2007-11-20 19:54:54.000000000 +0100
@@ -918,6 +918,36 @@
         help
         Exports the dump image of crashed kernel in ELF format.

+choice
+       prompt "Restrict access to /proc/<pid>-dirs"
+       default PROC_PIDDIRS_UNRESTRICTED
+config PROC_PIDDIRS_UNRESTRICTED
+       bool "no restriction"
+       depends on PROC_FS
+       help
+         Don't restrict access to /proc/<pid>-dirs, i.e. leave mode at 555
+         respectively r-xr-xr-x . This is the traditional mode of operation.
+
+         If unsure, say Y.
+config PROC_PIDDIRS_RESTRICT_TO_UG
+       bool "restrict to user and group
+       depends on PROC_FS
+       help
+         Restrict access to /proc/<pid>-dirs to user and group, i.e. set mode
+         to 550 respectively r-xr-x--- .
+
+         If unsure, say N.
+
+config PROC_PIDDIRS_RESTRICT_TO_U
+       bool "restrict to user
+       depends on PROC_FS
+       help
+         Restrict access to /proc/<pid>-dirs to user only, i.e. set mode to
+         500 respectively r-x------ .
+
+         If unsure, say N.
+endchoice
+
 config PROC_SYSCTL
        bool "Sysctl support (/proc/sys)" if EMBEDDED
        depends on PROC_FS
--- linux-2.6.23.8/fs/proc/base.c       2007-11-16 19:14:27.000000000 +0100
+++ linux-2.6.23.8-dhr/fs/proc/base.c   2007-11-21 10:44:17.000000000 +0100
@@ -2200,7 +2200,13 @@
        if (!inode)
                goto out;

+#if defined CONFIG_PROC_PIDDIRS_UNRESTRICTED
        inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
+#elif defined CONFIG_PROC_PIDDIRS_RESTRICT_TO_UG
+       inode->i_mode = S_IFDIR|S_IRUSR|S_IRGRP|S_IXUSR|S_IXGRP;
+#elif defined CONFIG_PROC_PIDDIRS_RESTRICT_TO_U
+       inode->i_mode = S_IFDIR|S_IRUSR|S_IXUSR;
+#endif
        inode->i_op = &proc_tgid_base_inode_operations;
        inode->i_fop = &proc_tgid_base_operations;
        inode->i_flags|=S_IMMUTABLE;

--
Daniel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch: Hide process info from other users/users not in my group
  2007-11-20 10:34 Patch: Hide process info from other users/users not in my group Daniel Reichelt
  2007-11-20 17:53 ` Johannes Weiner
@ 2007-11-21 18:03 ` Pavel Machek
  2007-11-25 17:44   ` Daniel Reichelt
  1 sibling, 1 reply; 6+ messages in thread
From: Pavel Machek @ 2007-11-21 18:03 UTC (permalink / raw)
  To: Daniel Reichelt; +Cc: linux-kernel

Hi!

> this patch sets (if the corresponding kconfig option is active) the access
> modes of /proc/<pid>-dirs to 550 instead of 555 in order to provide some
> privacy to users. Tools like lsof and ps to spy out on other users become
> ineffective.
> 
> Cheers,
> --
> Daniel Reichelt
> 
> # diff -Naur linux-2.6.23.8/fs/Kconfig linux-2.6.23.8-dhr/fs/Kconfig
> --- linux-2.6.23.8/fs/Kconfig   2007-11-16 19:14:27.000000000 +0100
> +++ linux-2.6.23.8-dhr/fs/Kconfig       2007-11-20 11:33:18.000000000 +0100
> @@ -918,6 +918,17 @@
>          help
>          Exports the dump image of crashed kernel in ELF format.
> 
> +config PROC_SECURED_PID_DIRS
> +       bool "chmod /proc/<pid>-dirs to 550"
> +       depends on PROC_FS
> +       default n
> +       help
> +         chmod /proc/<pid>-dirs to 550 instead of 555 which provides a bit
> +         moreprivacy to users on your system as only the user's and the user's
> +         group's process details may be viewed. Other users' tasks running on
> +         the system will be completely hidden from the means of utilities like
> +         ps or lsof.
> +

This really needs to be runtime-configurable.

-- 
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch: Hide process info from other users/users not in my group
  2007-11-21 18:03 ` Pavel Machek
@ 2007-11-25 17:44   ` Daniel Reichelt
  0 siblings, 0 replies; 6+ messages in thread
From: Daniel Reichelt @ 2007-11-25 17:44 UTC (permalink / raw)
  To: Pavel Machek; +Cc: linux-kernel

Hi Pavel,

> This really needs to be runtime-configurable.
Hm. When this setting is changed during runtime, all the pre-existing
permissions would have to be changed as weill which might be done by iterating
through a list of running processes. Unfortunately I don't know how to do that.
This is my very first kernel patch (ever) and if I'd try to code s.th. like
that, I'd probably conjure race-conditions and other beasts... If you're
willing to help me, we might come up with a solution...

cu
Daniel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-11-25 17:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-20 10:34 Patch: Hide process info from other users/users not in my group Daniel Reichelt
2007-11-20 17:53 ` Johannes Weiner
2007-11-20 19:42   ` Daniel Reichelt
2007-11-21 10:57   ` Daniel Reichelt
2007-11-21 18:03 ` Pavel Machek
2007-11-25 17:44   ` Daniel Reichelt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox