Skip to content

mount ownership and unprivileged mount syscall (v9)

Miklos Szeredi linux-fsdevel lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest11 patches 3 repliesIn review

v8 -> v9 from the cover letter

- new patch: copy mount ownership when cloning the mount namespace

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/11unprivileged mounts: add user mounts to the kernelfs/namespace.c fs/pnode.h include/linux/fs.h +1 more+36 -80 replies
2/11unprivileged mounts: allow unprivileged umountfs/namespace.c+22 -10 replies
3/11unprivileged mounts: propagate error values from clone_mntfs/namespace.c fs/pnode.c+51 -490 replies
4/11unprivileged mounts: account user mountsDocumentation/filesystems/proc.txt fs/namespace.c include/linux/fs.h +1 more+91 -40 replies
5/11unprivileged mounts: allow unprivileged bind mountsfs/namespace.c+27 -170 replies
6/11unprivileged mounts: allow unprivileged mountsfs/namespace.c fs/super.c include/linux/fs.h+67 -400 replies
7/11unprivileged mounts: add sysctl tunable for "safe" propertyDocumentation/filesystems/proc.txt fs/filesystems.c include/linux/fs.h+92 -00 replies
8/11unprivileged mounts: make fuse safeDocumentation/filesystems/fuse.txt fs/fuse/inode.c+103 -60 replies
9/11unprivileged mounts: propagation: inherit owner from parentfs/namespace.c fs/pnode.c fs/pnode.h +1 more+43 -190 replies
10/11unprivileged mounts: add "no submounts" flagfs/namespace.c include/linux/fs.h include/linux/mount.h+10 -20 replies
11/11unprivileged mounts: copy mount ownership on namespace cloningfs/namespace.c fs/pnode.h+7 -10 replies

Reviews trailers per patch

10 of 11 patches have a Reviewed-by or Acked-by.

PatchSerge Hallyn
1/11A-b
2/11A-b
3/11A-b
4/11A-b
5/11A-b
6/11A-b
7/11A-b
8/11A-b
9/11A-b
10/11A-b
11/11

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [patch 00/11] mount ownership and unprivileged mount syscall (v9)

Andrew, Al,

Please consider adding this series to your trees.

I've been using these patches for a while on my laptop to mount fuse filesystems as user, without any suid-root helpers. The setup is as follows:

- link /proc/mounts to /etc/mtab
- patch util-linux-ng with http://lkml.org/lkml/2008/1/16/103
- remove suid from mount, umount and fusermount
- add a line to /etc/fstab to bind mount ~/mnt onto itself owned by the user
- add 'fs.types.fuse.usermount_safe = 1' to /etc/sysctl.conf

Apart from '/dev/sda2' being replaced with '/dev/root' in 'mount' and 'df' outputs, I haven't experienced any problems.

Thanks,
Miklos

v8 -> v9

- new patch: copy mount ownership when cloning the mount namespace

v7 -> v8

- extend documentation of allow_usermount sysctl tunable
- describe new unprivileged mounting in fuse.txt

v6 -> v7:

- add '/proc/sys/fs/types/<type>/usermount_safe' tunable (new patch)
- do not make FUSE safe by default, describe possible problems associated with unprivileged FUSE mounts in patch header
- return EMFILE instead of EPERM, if maximum user mount count is exceeded
- rename option 'nomnt' -> 'nosubmnt'
- clean up error propagation in dup_mnt_ns
- update util-linux-ng patch

v5 -> v6:

- update to latest -mm
- preliminary util-linux-ng support (will post right after this series)

v4 -> v5:

- fold back Andrew's changes
- fold back my update patch:
o use fsuid instead of ruid
o allow forced unpriv. unmounts for "safe" filesystems
o allow mounting over special files, but not over symlinks
o set nosuid and nodev based on lack of specific capability
- patch header updates
- new patch: on propagation inherit owner from parent
- new patch: add "no submounts" mount flag

v3 -> v4:

- simplify interface as much as possible, now only a single option ("user=UID") is used to control everything
- no longer allow/deny mounting based on file/directory permissions, that approach does not always make sense

v1 -> v3:

- add mount flags to set/clear mnt_flags individually
- add "usermnt" mount flag. If it is set, then allow unprivileged submounts under this mount
- make max number of user mounts default to 1024, since now the usermnt flag will prevent user mounts by default

--