mount.nfs: don't overwrite mount options from /etc/nfsmount.conf
authorKarel Zak <kzak@redhat.com>
Thu, 5 Jan 2012 18:32:26 +0000 (13:32 -0500)
committerSteve Dickson <steved@redhat.com>
Thu, 5 Jan 2012 20:42:40 +0000 (15:42 -0500)
The libmount (as well as mount(8)) ignores mount options from command
line if running in restricted mode (suid, non-root-user) and all
options are read from fstab only.

It means that all options are replaced with stuff from fstab,
including mount options from nfsmount.conf. This is bug.

We have to apply fstab and then nfsmount.conf.

Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/mount/mount_libmount.c

index e450d79..e8f17a9 100644 (file)
@@ -346,6 +346,21 @@ static int mount_main(struct libmnt_context *cxt, int argc, char **argv)
 
        if (chk_mountpoint(mount_point))
                goto err;
+
+       /*
+        * The libmount strictly uses only options from fstab if running in
+        * restricted mode (suid, non-root user). This is done in
+        * mnt_context_prepare_mount() by default.
+        *
+        * We have to read fstab before nfsmount.conf, otherwise the options
+        * from nfsmount.conf will be ignored (overwrited).
+        */
+       rc = mnt_context_apply_fstab(cxt);
+       if (rc) {
+               nfs_error(_("%s: failed to apply fstab options\n"), progname);
+               goto err;
+       }
+
        /*
         * Concatenate mount options from the configuration file
         */