login
Header Space

 
 

[patch 01/10] unprivileged mounts: add user mounts to the kernel

Previous thread: [patch 07/10] unprivileged mounts: add sysctl tunable for "safe" property by Miklos Szeredi on Tuesday, February 5, 2008 - 5:36 pm. (10 messages)

Next thread: [patch 03/10] unprivileged mounts: propagate error values from clone_mnt by Miklos Szeredi on Tuesday, February 5, 2008 - 5:36 pm. (1 message)
To: <akpm@...>, <hch@...>, <serue@...>
Cc: <linux-fsdevel@...>, <linux-kernel@...>
Date: Tuesday, February 5, 2008 - 5:36 pm

From: Miklos Szeredi &lt;mszeredi@suse.cz&gt;

This patchset adds support for keeping mount ownership information in the
kernel, and allow unprivileged mount(2) and umount(2) in certain cases.

The mount owner has the following privileges:

  - unmount the owned mount
  - create a submount under the owned mount

The sysadmin can set the owner explicitly on mount and remount.  When an
unprivileged user creates a mount, then the owner is automatically set to the
user.

The following use cases are envisioned:

1) Private namespace, with selected mounts owned by user.  E.g.
   /home/$USER is a good candidate for allowing unpriv mounts and unmounts
   within.

2) Private namespace, with all mounts owned by user and having the "nosuid"
   flag.  User can mount and umount anywhere within the namespace, but suid
   programs will not work.

3) Global namespace, with a designated directory, which is a mount owned by
   the user.  E.g.  /mnt/users/$USER is set up so that it is bind mounted onto
   itself, and set to be owned by $USER.  The user can add/remove mounts only
   under this directory.

The following extra security measures are taken for unprivileged mounts:

 - usermounts are limited by a sysctl tunable
 - force "nosuid,nodev" mount options on the created mount

This series increases the size of vmlinux by about 1.5k on x86_64.

For testing unprivileged mounts (and for other purposes) simple
mount/umount utilities are available from:

  http://www.kernel.org/pub/linux/kernel/people/mszeredi/mmount/

A preliminary patch for util-linux-ng to add the same functionality to
mount(8) and umount(8) is available here:

  http://lkml.org/lkml/2008/1/16/103


This patch:

A new mount flag, MS_SETUSER is used to make a mount owned by a user.  If this
flag is specified, then the owner will be set to the current fsuid and the
mount will be marked with the MNT_USER flag.  On remount don't preserve
previous owner, and treat MS_SETUSER as for a new mount.  The MS_SETUSER flag
...
Previous thread: [patch 07/10] unprivileged mounts: add sysctl tunable for "safe" property by Miklos Szeredi on Tuesday, February 5, 2008 - 5:36 pm. (10 messages)

Next thread: [patch 03/10] unprivileged mounts: propagate error values from clone_mnt by Miklos Szeredi on Tuesday, February 5, 2008 - 5:36 pm. (1 message)
speck-geostationary