From: Mattias Nissler Date: Thu, 17 Nov 2016 13:47:51 +0000 (+0100) Subject: mount: Add support for "nosymfollow" mount option. X-Git-Tag: v2.37-rc1~492^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=73b193f8da0437d1b399903cf0f8e4c827adc03c;p=thirdparty%2Futil-linux.git mount: Add support for "nosymfollow" mount option. This adds support for the "nosymfollow" mount option, which indicates that symlinks should not be traversed on the mount this option is applied to. Also update the mount(8) man page with information about this option. Signed-off-by: Mattias Nissler Signed-off-by: Ross Zwisler --- diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c index e0ef550b0f..8c394c1ffb 100644 --- a/libmount/src/context_mount.c +++ b/libmount/src/context_mount.c @@ -422,6 +422,8 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr) mnt_optstr_append_option(optstr, "suid", NULL); if (!(cxt->mountflags & MS_NODEV)) mnt_optstr_append_option(optstr, "dev", NULL); + if (!(cxt->mountflags & MS_NOSYMFOLLOW)) + mnt_optstr_append_option(optstr, "symfollow", NULL); } diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in index 321c0540bb..e6710ae017 100644 --- a/libmount/src/libmount.h.in +++ b/libmount/src/libmount.h.in @@ -941,6 +941,9 @@ extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status #ifndef MS_DIRSYNC #define MS_DIRSYNC 128 /* Directory modifications are synchronous */ #endif +#ifndef MS_NOSYMFOLLOW +#define MS_NOSYMFOLLOW 256 /* Don't follow symlinks */ +#endif #ifndef MS_NOATIME #define MS_NOATIME 0x400 /* 1024: Do not update access times. */ #endif diff --git a/libmount/src/optmap.c b/libmount/src/optmap.c index a080d8df6f..49e8113d21 100644 --- a/libmount/src/optmap.c +++ b/libmount/src/optmap.c @@ -131,6 +131,10 @@ static const struct libmnt_optmap linux_flags_map[] = { "rslave", MS_SLAVE | MS_REC, MNT_NOHLPS | MNT_NOMTAB }, { "shared", MS_SHARED, MNT_NOHLPS | MNT_NOMTAB }, /* Shared */ { "rshared", MS_SHARED | MS_REC, MNT_NOHLPS | MNT_NOMTAB }, +#endif +#ifdef MS_NOSYMFOLLOW + { "symfollow", MS_NOSYMFOLLOW, MNT_INVERT }, /* Don't follow symlinks */ + { "nosymfollow", MS_NOSYMFOLLOW }, #endif { NULL, 0, 0 } }; diff --git a/sys-utils/mount.8 b/sys-utils/mount.8 index d633d25a40..d5fa55f43b 100644 --- a/sys-utils/mount.8 +++ b/sys-utils/mount.8 @@ -1472,6 +1472,16 @@ specifies the filesystem access mode used for in octal notation. The default mode is 0755. This functionality is supported only for root users or when mount executed without suid permissions. The option is also supported as x-mount.mkdir, this notation is deprecated since v2.30. +.TP +.B nosymfollow +Do not follow symlinks when resolving paths. Symlinks can still be created, +and +.BR readlink (1), +.BR readlink (2), +.BR realpath (1) +and +.BR realpath (3) +all still work properly. .SH FILESYSTEM-SPECIFIC MOUNT OPTIONS This section lists options that are specific to particular filesystems.