diff --git a/mount/mount.c b/mount/mount.c index dc357a098..b508de674 100644 --- a/mount/mount.c +++ b/mount/mount.c @@ -209,7 +209,7 @@ static const struct opt_map opt_map[] = { static int opt_nofail = 0; static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_sizelimit, - *opt_encryption, *opt_speed, *opt_comment, *opt_uhelper, *opt_phelper; + *opt_encryption, *opt_speed, *opt_comment, *opt_uhelper, *opt_helper; static int is_readonly(const char *node); static int mounted (const char *spec0, const char *node0); @@ -229,7 +229,7 @@ static struct string_opt_map { { "speed=", 0, &opt_speed }, { "comment=", 1, &opt_comment }, { "uhelper=", 0, &opt_uhelper }, - { "phelper=", 0, &opt_phelper }, + { "helper=", 0, &opt_helper }, { NULL, 0, NULL } }; diff --git a/mount/umount.8 b/mount/umount.8 index 69196e539..4bce485c2 100644 --- a/mount/umount.8 +++ b/mount/umount.8 @@ -151,17 +151,16 @@ The syntax of external umount helpers is: .IR type.subtype ] .br -where the is filesystem type or a value from "uhelper=" or "phelper=" +where the is filesystem type or a value from "uhelper=" or "helper=" mtab option. The \-t option is used for filesystems with subtypes support (for example /sbin/mount.fuse -t fuse.sshfs). -The uhelper (unprivileged umount helper) is possible to used when non-root user +The uhelper= (unprivileged umount helper) is possible to use when non-root user wants to umount a mountpoint which is not defined in the /etc/fstab file (e.g devices mounted by udisk). -The phelper (privileged umount helper) is possible to used when root user wants -to umount a mountpoint which should not be directly umounted by umount(8) (e.g. -devices mounted by pam_mount). +The helper= mount option redirects all umount requests to the +/sbin/umount. independently on UID. .SH FILES .I /etc/mtab diff --git a/mount/umount.c b/mount/umount.c index f69e5bf33..2e7bd31ce 100644 --- a/mount/umount.c +++ b/mount/umount.c @@ -654,6 +654,15 @@ umount_file (char *arg) { if (!mc && verbose) printf(_("Could not find %s in mtab\n"), file); + if (mc) { + /* + * helper - umount helper (e.g. pam_mount) + */ + if (check_helper_umountprog(arg, arg, mc->m.mnt_opts, + "helper=", &status)) + return status; + } + if (restricted) { char *mtab_user = NULL; @@ -738,13 +747,6 @@ umount_file (char *arg) { mtab_user ? mtab_user : "root", fs->m.mnt_fsname, fs->m.mnt_dir); - } else if (mc) { - /* - * phelper - privileged umount helper (e.g. pam_mount) - */ - if (check_helper_umountprog(arg, arg, mc->m.mnt_opts, - "phelper=", &status)) - return status; } if (mc) diff --git a/shlibs/mount/src/context_umount.c b/shlibs/mount/src/context_umount.c index 08b0fd46c..e10af52f2 100644 --- a/shlibs/mount/src/context_umount.c +++ b/shlibs/mount/src/context_umount.c @@ -584,9 +584,9 @@ int mnt_context_prepare_umount(struct libmnt_context *cxt) if (!rc && !cxt->helper) { - if (!cxt->restricted && (cxt->user_mountflags & MNT_MS_PHELPER)) - /* on phelper= mount option based helper */ - rc = prepare_helper_from_options(cxt, "phelper"); + if (cxt->user_mountflags & MNT_MS_HELPER) + /* on helper= mount option based helper */ + rc = prepare_helper_from_options(cxt, "helper"); if (!rc && !cxt->helper) /* on fstype based helper */ diff --git a/shlibs/mount/src/libmount.h.in b/shlibs/mount/src/libmount.h.in index 173872699..4eba4c748 100644 --- a/shlibs/mount/src/libmount.h.in +++ b/shlibs/mount/src/libmount.h.in @@ -439,7 +439,7 @@ extern int mnt_context_do_umount(struct libmnt_context *cxt); #define MNT_MS_LOOP (1 << 9) #define MNT_MS_NOFAIL (1 << 10) #define MNT_MS_UHELPER (1 << 11) -#define MNT_MS_PHELPER (1 << 12) +#define MNT_MS_HELPER (1 << 12) /* * mount(2) MS_* masks (MNT_MAP_LINUX map) diff --git a/shlibs/mount/src/optmap.c b/shlibs/mount/src/optmap.c index 4924e9ae3..acd76173f 100644 --- a/shlibs/mount/src/optmap.c +++ b/shlibs/mount/src/optmap.c @@ -155,7 +155,7 @@ static const struct libmnt_optmap userspace_opts_map[] = { "uhelper=", MNT_MS_UHELPER }, /* /sbin/umount. */ - { "phelper=", MNT_MS_PHELPER }, /* /sbin/umount. */ + { "helper=", MNT_MS_HELPER }, /* /sbin/umount. */ { NULL, 0, 0 } };