mount.cifs: properly check for mount being in fstab when running setuid root (try#3)
commite1ce92a0927c89bfc5aa06a1bc616ca187745a90
authorJeff Layton <jlayton@redhat.com>
Tue, 26 Jan 2010 13:45:57 +0000 (26 08:45 -0500)
committerKarolin Seeger <kseeger@samba.org>
Thu, 6 May 2010 12:12:12 +0000 (6 14:12 +0200)
tree56e951c82fcdcec41827eb7a27f48417180bbfc0
parent39f83e0764908edce1bfa270becfa7256c171d5d
mount.cifs: properly check for mount being in fstab when running setuid root (try#3)

This is the third attempt to clean up the checks when a setuid
mount.cifs is run by an unprivileged user. The main difference in this
patch from the last one is that it fixes a bug where the mount might
have failed if unnecessarily if CIFS_LEGACY_SETUID_CHECK was set.

When mount.cifs is installed setuid root and run as an unprivileged
user, it does some checks to limit how the mount is used. It checks that
the mountpoint is owned by the user doing the mount.

These checks however do not match those that /bin/mount does when it is
called by an unprivileged user. When /bin/mount is called by an
unprivileged user to do a mount, it checks that the mount in question is
in /etc/fstab, that it has the "user" option set, etc.

This means that it's currently not possible to set up user mounts the
standard way (by the admin, in /etc/fstab) and simultaneously protect
from an unprivileged user calling mount.cifs directly to mount a share
on any directory that that user owns.

Fix this by making the checks in mount.cifs match those of /bin/mount
itself. This is a necessary step to make mount.cifs safe to be installed
as a setuid binary, but not sufficient. For that, we'd need to give
mount.cifs a proper security audit.

Since some users may be depending on the legacy behavior, this patch
also adds the ability to build mount.cifs with the older behavior.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
(cherry picked from commit 396eb03109400fe603c57a0a0d4bdc37c7131cf5)
source3/client/mount.cifs.c