mount.cifs: properly check for mount being in fstab when running setuid root (try#3)
commit396eb03109400fe603c57a0a0d4bdc37c7131cf5
authorJeff Layton <jlayton@redhat.com>
Tue, 26 Jan 2010 13:45:57 +0000 (26 08:45 -0500)
committerKarolin Seeger <kseeger@samba.org>
Mon, 8 Mar 2010 09:02:34 +0000 (8 10:02 +0100)
tree87fbd6a67236dfac9d2908726ecd4ae34f850db3
parentfa722e20c9f5712571f9009afed8c4e44ac11cdc
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>
source3/client/mount.cifs.c