- fix changelog message.
- actually commit the patches referred to in the commit. - adjust revision to allow fixing f32 revision on update.
This commit is contained in:
parent
8a44d1e3d3
commit
5674919ce2
62
autofs-5.1.6-correct-fsf-address.patch
Normal file
62
autofs-5.1.6-correct-fsf-address.patch
Normal file
@ -0,0 +1,62 @@
|
||||
autofs-5.1.6 - correct fsf address
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
|
||||
---
|
||||
CHANGELOG | 1 +
|
||||
COPYING | 4 ++--
|
||||
COPYRIGHT | 6 +++---
|
||||
3 files changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index 3eb34097..f53f9adf 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -4,6 +4,7 @@ xx/xx/2020 autofs-5.1.7
|
||||
- fix program map multi-mount lookup after mount fail.
|
||||
- fix browse dir not re-created on symlink expire.
|
||||
- fix a regression with map instance lookup.
|
||||
+- correct fsf address.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/COPYING b/COPYING
|
||||
index 60549be5..66885ff6 100644
|
||||
--- a/COPYING
|
||||
+++ b/COPYING
|
||||
@@ -2,7 +2,7 @@
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
diff --git a/COPYRIGHT b/COPYRIGHT
|
||||
index 37bd5d8b..b0dc1066 100644
|
||||
--- a/COPYRIGHT
|
||||
+++ b/COPYRIGHT
|
||||
@@ -4,9 +4,9 @@ For all software in this distribution unless otherwise indicated:
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
- the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
|
||||
- USA; either version 2 of the License, or (at your option) any later
|
||||
- version.
|
||||
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
+ Boston, MA 02110-1301, USA; either version 2 of the License, or
|
||||
+ (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
329
autofs-5.1.6-fix-a-regression-with-map-instance-lookup.patch
Normal file
329
autofs-5.1.6-fix-a-regression-with-map-instance-lookup.patch
Normal file
@ -0,0 +1,329 @@
|
||||
autofs-5.1.6 - fix a regression with map instance lookup
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
Commit b66deff4241d ("autofs-5.1.3 - fix possible map instance memory
|
||||
leak") introduced a regression.
|
||||
|
||||
The change didn't fix the memory leak and also failed to fix the race
|
||||
updating the map instance list that caused it.
|
||||
|
||||
To fix this get rid of the horible temporary map usage and update the
|
||||
instance list in place. Doing this causes some additional allocations
|
||||
and frees but is somewhat simpler overall and avoids the race.
|
||||
|
||||
Fixes: b66deff4241d ("autofs-5.1.3 - fix possible map instance memory leak")
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 1
|
||||
daemon/lookup.c | 188 ++++++++++++++++++++++---------------------------------
|
||||
2 files changed, 76 insertions(+), 113 deletions(-)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index 214ee8bb..3eb34097 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -3,6 +3,7 @@ xx/xx/2020 autofs-5.1.7
|
||||
- update ldap READMEs and schema definitions.
|
||||
- fix program map multi-mount lookup after mount fail.
|
||||
- fix browse dir not re-created on symlink expire.
|
||||
+- fix a regression with map instance lookup.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/daemon/lookup.c b/daemon/lookup.c
|
||||
index 60a48f3f..8d54c465 100644
|
||||
--- a/daemon/lookup.c
|
||||
+++ b/daemon/lookup.c
|
||||
@@ -64,6 +64,10 @@ static char *find_map_path(struct autofs_point *ap, struct map_source *map)
|
||||
char *search_path;
|
||||
struct stat st;
|
||||
|
||||
+ /* Absolute path, just return a copy */
|
||||
+ if (mname[0] == '/')
|
||||
+ return strdup(mname);
|
||||
+
|
||||
/*
|
||||
* This is different to the way it is in amd.
|
||||
* autofs will always try to locate maps in AUTOFS_MAP_DIR
|
||||
@@ -373,14 +377,27 @@ static int read_file_source_instance(struct autofs_point *ap, struct map_source
|
||||
char src_prog[] = "program";
|
||||
struct stat st;
|
||||
char *type, *format;
|
||||
+ char *path;
|
||||
+
|
||||
+ if (map->argc < 1) {
|
||||
+ error(ap->logopt, "invalid arguments for autofs_point");
|
||||
+ return NSS_STATUS_UNKNOWN;
|
||||
+ }
|
||||
|
||||
- if (stat(map->argv[0], &st) == -1) {
|
||||
- warn(ap->logopt, "file map %s not found", map->argv[0]);
|
||||
+ path = find_map_path(ap, map);
|
||||
+ if (!path)
|
||||
+ return NSS_STATUS_UNKNOWN;
|
||||
+
|
||||
+ if (stat(path, &st) == -1) {
|
||||
+ warn(ap->logopt, "file map %s not found", path);
|
||||
+ free(path);
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
- if (!S_ISREG(st.st_mode))
|
||||
+ if (!S_ISREG(st.st_mode)) {
|
||||
+ free(path);
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
+ }
|
||||
|
||||
if (st.st_mode & __S_IEXEC)
|
||||
type = src_prog;
|
||||
@@ -391,9 +408,23 @@ static int read_file_source_instance(struct autofs_point *ap, struct map_source
|
||||
|
||||
instance = master_find_source_instance(map, type, format, 0, NULL);
|
||||
if (!instance) {
|
||||
- int argc = map->argc;
|
||||
- const char **argv = map->argv;
|
||||
+ const char **argv;
|
||||
+ int argc;
|
||||
+
|
||||
+ argc = map->argc;
|
||||
+ argv = copy_argv(map->argc, map->argv);
|
||||
+ if (!argv) {
|
||||
+ error(ap->logopt, "failed to copy args");
|
||||
+ free(path);
|
||||
+ return NSS_STATUS_UNKNOWN;
|
||||
+ }
|
||||
+ if (argv[0])
|
||||
+ free((char *) argv[0]);
|
||||
+ argv[0] = path;
|
||||
+ path = NULL;
|
||||
+
|
||||
instance = master_add_source_instance(map, type, format, age, argc, argv);
|
||||
+ free_argv(argc, argv);
|
||||
if (!instance)
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
instance->recurse = map->recurse;
|
||||
@@ -401,6 +432,9 @@ static int read_file_source_instance(struct autofs_point *ap, struct map_source
|
||||
}
|
||||
instance->stale = map->stale;
|
||||
|
||||
+ if (path)
|
||||
+ free(path);
|
||||
+
|
||||
return do_read_map(ap, instance, age);
|
||||
}
|
||||
|
||||
@@ -426,14 +460,6 @@ static int read_source_instance(struct autofs_point *ap, struct map_source *map,
|
||||
return do_read_map(ap, instance, age);
|
||||
}
|
||||
|
||||
-static void argv_cleanup(void *arg)
|
||||
-{
|
||||
- struct map_source *tmap = (struct map_source *) arg;
|
||||
- /* path is freed in free_argv */
|
||||
- free_argv(tmap->argc, tmap->argv);
|
||||
- return;
|
||||
-}
|
||||
-
|
||||
static int lookup_map_read_map(struct autofs_point *ap,
|
||||
struct map_source *map, time_t age)
|
||||
{
|
||||
@@ -476,16 +502,11 @@ static int lookup_map_read_map(struct autofs_point *ap,
|
||||
static enum nsswitch_status read_map_source(struct nss_source *this,
|
||||
struct autofs_point *ap, struct map_source *map, time_t age)
|
||||
{
|
||||
- enum nsswitch_status result;
|
||||
- struct map_source tmap;
|
||||
- char *path;
|
||||
-
|
||||
if (strcasecmp(this->source, "files")) {
|
||||
return read_source_instance(ap, map, this->source, age);
|
||||
}
|
||||
|
||||
/*
|
||||
- * autofs built-in map for nsswitch "files" is "file".
|
||||
* This is a special case as we need to append the
|
||||
* normal location to the map name.
|
||||
* note: It's invalid to specify a relative path.
|
||||
@@ -496,50 +517,7 @@ static enum nsswitch_status read_map_source(struct nss_source *this,
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
- this->source[4] = '\0';
|
||||
- tmap.flags = map->flags;
|
||||
- tmap.type = this->source;
|
||||
- tmap.format = map->format;
|
||||
- tmap.name = map->name;
|
||||
- tmap.lookup = map->lookup;
|
||||
- tmap.mc = map->mc;
|
||||
- tmap.instance = map->instance;
|
||||
- tmap.exp_timeout = map->exp_timeout;
|
||||
- tmap.recurse = map->recurse;
|
||||
- tmap.depth = map->depth;
|
||||
- tmap.stale = map->stale;
|
||||
- tmap.argc = 0;
|
||||
- tmap.argv = NULL;
|
||||
-
|
||||
- path = find_map_path(ap, map);
|
||||
- if (!path)
|
||||
- return NSS_STATUS_UNKNOWN;
|
||||
-
|
||||
- if (map->argc >= 1) {
|
||||
- tmap.argc = map->argc;
|
||||
- tmap.argv = copy_argv(map->argc, map->argv);
|
||||
- if (!tmap.argv) {
|
||||
- error(ap->logopt, "failed to copy args");
|
||||
- free(path);
|
||||
- return NSS_STATUS_UNKNOWN;
|
||||
- }
|
||||
- if (tmap.argv[0])
|
||||
- free((char *) tmap.argv[0]);
|
||||
- tmap.argv[0] = path;
|
||||
- } else {
|
||||
- error(ap->logopt, "invalid arguments for autofs_point");
|
||||
- free(path);
|
||||
- return NSS_STATUS_UNKNOWN;
|
||||
- }
|
||||
-
|
||||
- pthread_cleanup_push(argv_cleanup, &tmap);
|
||||
- result = read_file_source_instance(ap, &tmap, age);
|
||||
- pthread_cleanup_pop(1);
|
||||
-
|
||||
- if (!map->instance)
|
||||
- map->instance = tmap.instance;
|
||||
-
|
||||
- return result;
|
||||
+ return read_file_source_instance(ap, map, age);
|
||||
}
|
||||
|
||||
int lookup_nss_read_map(struct autofs_point *ap, struct map_source *source, time_t age)
|
||||
@@ -925,17 +903,30 @@ static int lookup_name_file_source_instance(struct autofs_point *ap, struct map_
|
||||
time_t age = monotonic_time(NULL);
|
||||
struct stat st;
|
||||
char *type, *format;
|
||||
+ char *path;
|
||||
|
||||
if (*name == '/' && map->flags & MAP_FLAG_FORMAT_AMD)
|
||||
return lookup_amd_instance(ap, map, name, name_len);
|
||||
|
||||
- if (stat(map->argv[0], &st) == -1) {
|
||||
+ if (map->argc < 1) {
|
||||
+ error(ap->logopt, "invalid arguments for autofs_point");
|
||||
+ return NSS_STATUS_UNKNOWN;
|
||||
+ }
|
||||
+
|
||||
+ path = find_map_path(ap, map);
|
||||
+ if (!path)
|
||||
+ return NSS_STATUS_UNKNOWN;
|
||||
+
|
||||
+ if (stat(path, &st) == -1) {
|
||||
debug(ap->logopt, "file map not found");
|
||||
+ free(path);
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
- if (!S_ISREG(st.st_mode))
|
||||
+ if (!S_ISREG(st.st_mode)) {
|
||||
+ free(path);
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
+ }
|
||||
|
||||
if (st.st_mode & __S_IEXEC)
|
||||
type = src_prog;
|
||||
@@ -946,15 +937,32 @@ static int lookup_name_file_source_instance(struct autofs_point *ap, struct map_
|
||||
|
||||
instance = master_find_source_instance(map, type, format, 0, NULL);
|
||||
if (!instance) {
|
||||
- int argc = map->argc;
|
||||
- const char **argv = map->argv;
|
||||
+ const char **argv;
|
||||
+ int argc;
|
||||
+
|
||||
+ argc = map->argc;
|
||||
+ argv = copy_argv(map->argc, map->argv);
|
||||
+ if (!argv) {
|
||||
+ error(ap->logopt, "failed to copy args");
|
||||
+ free(path);
|
||||
+ return NSS_STATUS_UNKNOWN;
|
||||
+ }
|
||||
+ if (argv[0])
|
||||
+ free((char *) argv[0]);
|
||||
+ argv[0] = path;
|
||||
+ path = NULL;
|
||||
+
|
||||
instance = master_add_source_instance(map, type, format, age, argc, argv);
|
||||
+ free_argv(argc, argv);
|
||||
if (!instance)
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
instance->recurse = map->recurse;
|
||||
instance->depth = map->depth;
|
||||
}
|
||||
|
||||
+ if (path)
|
||||
+ free(path);
|
||||
+
|
||||
return do_lookup_mount(ap, instance, name, name_len);
|
||||
}
|
||||
|
||||
@@ -1030,10 +1038,6 @@ static enum nsswitch_status lookup_map_name(struct nss_source *this,
|
||||
struct autofs_point *ap, struct map_source *map,
|
||||
const char *name, int name_len)
|
||||
{
|
||||
- enum nsswitch_status result;
|
||||
- struct map_source tmap;
|
||||
- char *path;
|
||||
-
|
||||
if (strcasecmp(this->source, "files"))
|
||||
return lookup_name_source_instance(ap, map,
|
||||
this->source, name, name_len);
|
||||
@@ -1050,49 +1054,7 @@ static enum nsswitch_status lookup_map_name(struct nss_source *this,
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
- this->source[4] = '\0';
|
||||
- tmap.flags = map->flags;
|
||||
- tmap.type = this->source;
|
||||
- tmap.format = map->format;
|
||||
- tmap.name = map->name;
|
||||
- tmap.mc = map->mc;
|
||||
- tmap.instance = map->instance;
|
||||
- tmap.exp_timeout = map->exp_timeout;
|
||||
- tmap.recurse = map->recurse;
|
||||
- tmap.depth = map->depth;
|
||||
- tmap.argc = 0;
|
||||
- tmap.argv = NULL;
|
||||
-
|
||||
- path = find_map_path(ap, map);
|
||||
- if (!path)
|
||||
- return NSS_STATUS_UNKNOWN;
|
||||
-
|
||||
- if (map->argc >= 1) {
|
||||
- tmap.argc = map->argc;
|
||||
- tmap.argv = copy_argv(map->argc, map->argv);
|
||||
- if (!tmap.argv) {
|
||||
- error(ap->logopt, "failed to copy args");
|
||||
- free(path);
|
||||
- return NSS_STATUS_UNKNOWN;
|
||||
- }
|
||||
- if (tmap.argv[0])
|
||||
- free((char *) tmap.argv[0]);
|
||||
- tmap.argv[0] = path;
|
||||
- } else {
|
||||
- error(ap->logopt, "invalid arguments for autofs_point");
|
||||
- free(path);
|
||||
- return NSS_STATUS_UNKNOWN;
|
||||
- }
|
||||
-
|
||||
- result = lookup_name_file_source_instance(ap, &tmap, name, name_len);
|
||||
-
|
||||
- if (!map->instance)
|
||||
- map->instance = tmap.instance;
|
||||
-
|
||||
- /* path is freed in free_argv */
|
||||
- free_argv(tmap.argc, tmap.argv);
|
||||
-
|
||||
- return result;
|
||||
+ return lookup_name_file_source_instance(ap, map, name, name_len);
|
||||
}
|
||||
|
||||
static struct map_source *lookup_get_map_source(struct master_mapent *entry)
|
@ -0,0 +1,56 @@
|
||||
autofs-5.1.6 - fix browse dir not re-created on symlink expire
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
If symlinks are being used for mounts and the autofs mount has browse mode
|
||||
enabled when a symlink is removed at expire the browse mode directory needs
|
||||
to be re-created.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 1 +
|
||||
daemon/automount.c | 19 +++++++++++++++++++
|
||||
2 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index 3c784d34..214ee8bb 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -2,6 +2,7 @@ xx/xx/2020 autofs-5.1.7
|
||||
- make bind mounts propagation slave by default.
|
||||
- update ldap READMEs and schema definitions.
|
||||
- fix program map multi-mount lookup after mount fail.
|
||||
+- fix browse dir not re-created on symlink expire.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/daemon/automount.c b/daemon/automount.c
|
||||
index 8ec4ac5e..0391bfb5 100644
|
||||
--- a/daemon/automount.c
|
||||
+++ b/daemon/automount.c
|
||||
@@ -650,6 +650,25 @@ int umount_multi(struct autofs_point *ap, const char *path, int incl)
|
||||
"failed to remove symlink %s", path);
|
||||
return 1;
|
||||
}
|
||||
+ /* Check if the autofs mount has browse mode enabled.
|
||||
+ * If so re-create the directory entry.
|
||||
+ */
|
||||
+ if (ap->flags | MOUNT_FLAG_GHOST) {
|
||||
+ int ret;
|
||||
+
|
||||
+ /* If the browse directory create fails log an
|
||||
+ * error and continue anyway since the expire
|
||||
+ * has succeeded.
|
||||
+ */
|
||||
+ ret = mkdir_path(path, mp_mode);
|
||||
+ if (ret && errno != EEXIST) {
|
||||
+ char buf[MAX_ERR_BUF];
|
||||
+ char *estr;
|
||||
+ estr = strerror_r(errno, buf, MAX_ERR_BUF);
|
||||
+ warn(ap->logopt,
|
||||
+ "mkdir_path %s failed: %s", path, estr);
|
||||
+ }
|
||||
+ }
|
||||
/* Check for an external mount and attempt umount if needed */
|
||||
mounts_mutex_lock(ap);
|
||||
entry = __master_find_amdmount(ap, path);
|
27
autofs-5.1.6-fix-double-quoting-in-auto.smb.patch
Normal file
27
autofs-5.1.6-fix-double-quoting-in-auto.smb.patch
Normal file
@ -0,0 +1,27 @@
|
||||
autofs-5.1.6 - fix double quoting in auto.smb
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
The example program mount script installed to /etc/auto.smb incorrectly
|
||||
adds a quote for the trailing dollar of special Windows mounts. But they
|
||||
are already surrounded by double quotes. This may have been handled by
|
||||
mount.cifs at some point but it's failing now.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
samples/auto.smb | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/samples/auto.smb b/samples/auto.smb
|
||||
index 6af5d856..4842b689 100755
|
||||
--- a/samples/auto.smb
|
||||
+++ b/samples/auto.smb
|
||||
@@ -75,8 +75,6 @@ $SMBCLIENT $smbopts -gL "$key" 2>/dev/null| awk -v "key=$key" -v "opts=$opts" -F
|
||||
dir = $2
|
||||
loc = $2
|
||||
# Enclose mount dir and location in quotes
|
||||
- # Double quote "$" in location as it is special
|
||||
- gsub(/\$$/, "\\$", loc);
|
||||
gsub(/\&/,"\\\\&",loc)
|
||||
print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
autofs-5.1.6 - fix program map multi-mount lookup after mount fail
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
For the case of a singleton multi-mount program map lookup following
|
||||
a mount fail (and the negative timeout has passed) the lookup key is
|
||||
what's expected for an indirect map key but the the root offset map
|
||||
entry already exists. This causes autofs to think it has an incorrect
|
||||
lookup key and it fails the lookup when it should take the opptunity
|
||||
to delete and update the cache entry since it's not actually in use
|
||||
yet.
|
||||
|
||||
If a check is done to see if the lookup is for the root offset,
|
||||
deleting the entry fails because it contains an offset. Later when
|
||||
parsing is done the offset will get updated and can get out of sync
|
||||
with the entry of the multi-mount owner. That's not a problem as the
|
||||
offsets would be deleted on eventual expire but it's best to clean
|
||||
out the entry and start a fresh so the most up to date map entry
|
||||
is being used.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 1 +
|
||||
modules/lookup_program.c | 7 +++++--
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index 981a0333..3c784d34 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -1,6 +1,7 @@
|
||||
xx/xx/2020 autofs-5.1.7
|
||||
- make bind mounts propagation slave by default.
|
||||
- update ldap READMEs and schema definitions.
|
||||
+- fix program map multi-mount lookup after mount fail.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/modules/lookup_program.c b/modules/lookup_program.c
|
||||
index fcb1af74..ca209488 100644
|
||||
--- a/modules/lookup_program.c
|
||||
+++ b/modules/lookup_program.c
|
||||
@@ -646,7 +646,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
|
||||
name_len, ent, ctxt->parse->context);
|
||||
goto out_free;
|
||||
} else {
|
||||
- if (me->multi) {
|
||||
+ if (me->multi && me->multi != me) {
|
||||
cache_unlock(mc);
|
||||
warn(ap->logopt, MODPREFIX
|
||||
"unexpected lookup for active multi-mount"
|
||||
@@ -656,8 +656,11 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
|
||||
cache_unlock(mc);
|
||||
cache_writelock(mc);
|
||||
me = cache_lookup_distinct(mc, name);
|
||||
- if (me)
|
||||
+ if (me) {
|
||||
+ if (me->multi)
|
||||
+ cache_delete_offset_list(mc, name);
|
||||
cache_delete(mc, name);
|
||||
+ }
|
||||
cache_unlock(mc);
|
||||
}
|
||||
}
|
50
autofs-5.1.6-fix-trailing-dollar-sun-entry-expansion.patch
Normal file
50
autofs-5.1.6-fix-trailing-dollar-sun-entry-expansion.patch
Normal file
@ -0,0 +1,50 @@
|
||||
autofs-5.1.6 - fix trailing dollar sun entry expansion
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
In modules/parse_sun.c:expandsunent() if we see "$ " or "$<NULL>" in
|
||||
the entry it can't be a macro, and the value can't be quoted since '\'
|
||||
and '"' cases are handled seperately in the swicth, so treat the
|
||||
character as a valid entry character.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 1 +
|
||||
modules/parse_sun.c | 12 ++++++++++++
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index fa5992aa..07a85cde 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -7,6 +7,7 @@ xx/xx/2020 autofs-5.1.7
|
||||
- correct fsf address.
|
||||
- samples: fix Makefile targets' directory dependencies
|
||||
- remove intr hosts map mount option.
|
||||
+- fix trailing dollar sun entry expansion.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/modules/parse_sun.c b/modules/parse_sun.c
|
||||
index 71867ef1..f6c22d15 100644
|
||||
--- a/modules/parse_sun.c
|
||||
+++ b/modules/parse_sun.c
|
||||
@@ -161,6 +161,18 @@ int expandsunent(const char *src, char *dst, const char *key,
|
||||
}
|
||||
src = p + 1;
|
||||
} else {
|
||||
+ /* If the '$' is folloed by a space or NULL it
|
||||
+ * can't be a macro, and the value can't be
|
||||
+ * quoted since '\' and '"' cases are handled
|
||||
+ * in other cases, so treat the $ as a valid
|
||||
+ * map entry character.
|
||||
+ */
|
||||
+ if (isblank(*src) || !*src) {
|
||||
+ if (dst)
|
||||
+ *dst++ = ch;
|
||||
+ len++;
|
||||
+ break;
|
||||
+ }
|
||||
p = src;
|
||||
while (isalnum(*p) || *p == '_')
|
||||
p++;
|
262
autofs-5.1.6-make-bind-mounts-propagation-slave-by-default.patch
Normal file
262
autofs-5.1.6-make-bind-mounts-propagation-slave-by-default.patch
Normal file
@ -0,0 +1,262 @@
|
||||
autofs-5.1.6 - make bind mounts propagation slave by default
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
Make setting mount propagation on bind mounts mandatory with a default
|
||||
of propagation slave.
|
||||
|
||||
When using multi-mounts that have bind mounts the bind mount will have
|
||||
the same properties as its parent which is commonly propagation shared.
|
||||
And if the mount target is also propagation shared this can lead to a
|
||||
deadlock when attempting to access the offset mounts. When this happens
|
||||
an unwanted offset mount is propagated back to the target file system
|
||||
resulting in a deadlock since the automount target is itself an
|
||||
(unwanted) automount trigger.
|
||||
|
||||
This problem has been present much longer than I originally thought,
|
||||
perhaps since mount propagation was introduced into the kernel, so
|
||||
explicitly setting bind mount propagation is the sensible thing to do.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 3 +++
|
||||
include/automount.h | 9 +++++----
|
||||
lib/master_parse.y | 29 +++++++++++++++++------------
|
||||
lib/master_tok.l | 1 +
|
||||
man/auto.master.5.in | 19 ++++++++++---------
|
||||
modules/mount_bind.c | 40 ++++++++++++++++++++++------------------
|
||||
6 files changed, 58 insertions(+), 43 deletions(-)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index 847a9b01..f5a1a0e3 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -1,3 +1,6 @@
|
||||
+xx/xx/2020 autofs-5.1.7
|
||||
+- make bind mounts propagation slave by default.
|
||||
+
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
- fix hesiod string check in master_parse().
|
||||
diff --git a/include/automount.h b/include/automount.h
|
||||
index 4fd0ba96..fe9c7fee 100644
|
||||
--- a/include/automount.h
|
||||
+++ b/include/automount.h
|
||||
@@ -551,14 +551,15 @@ struct kernel_mod_version {
|
||||
#define MOUNT_FLAG_AMD_CACHE_ALL 0x0080
|
||||
|
||||
/* Set mount propagation for bind mounts */
|
||||
-#define MOUNT_FLAG_SLAVE 0x0100
|
||||
-#define MOUNT_FLAG_PRIVATE 0x0200
|
||||
+#define MOUNT_FLAG_SHARED 0x0100
|
||||
+#define MOUNT_FLAG_SLAVE 0x0200
|
||||
+#define MOUNT_FLAG_PRIVATE 0x0400
|
||||
|
||||
/* Use strict expire semantics if requested and kernel supports it */
|
||||
-#define MOUNT_FLAG_STRICTEXPIRE 0x0400
|
||||
+#define MOUNT_FLAG_STRICTEXPIRE 0x0800
|
||||
|
||||
/* Indicator for applications to ignore the mount entry */
|
||||
-#define MOUNT_FLAG_IGNORE 0x0800
|
||||
+#define MOUNT_FLAG_IGNORE 0x1000
|
||||
|
||||
struct autofs_point {
|
||||
pthread_t thid;
|
||||
diff --git a/lib/master_parse.y b/lib/master_parse.y
|
||||
index f817f739..08e44b57 100644
|
||||
--- a/lib/master_parse.y
|
||||
+++ b/lib/master_parse.y
|
||||
@@ -59,8 +59,6 @@ static long timeout;
|
||||
static long negative_timeout;
|
||||
static unsigned symlnk;
|
||||
static unsigned strictexpire;
|
||||
-static unsigned slave;
|
||||
-static unsigned private;
|
||||
static unsigned nobind;
|
||||
static unsigned ghost;
|
||||
extern unsigned global_selection_options;
|
||||
@@ -72,6 +70,14 @@ static int tmp_argc;
|
||||
static char **local_argv;
|
||||
static int local_argc;
|
||||
|
||||
+#define PROPAGATION_SHARED MOUNT_FLAG_SHARED
|
||||
+#define PROPAGATION_SLAVE MOUNT_FLAG_SLAVE
|
||||
+#define PROPAGATION_PRIVATE MOUNT_FLAG_PRIVATE
|
||||
+#define PROPAGATION_MASK (MOUNT_FLAG_SHARED | \
|
||||
+ MOUNT_FLAG_SLAVE | \
|
||||
+ MOUNT_FLAG_PRIVATE)
|
||||
+static unsigned int propagation;
|
||||
+
|
||||
static char errstr[MAX_ERR_LEN];
|
||||
|
||||
static unsigned int verbose;
|
||||
@@ -106,7 +112,7 @@ static int master_fprintf(FILE *, char *, ...);
|
||||
%token MAP
|
||||
%token OPT_TIMEOUT OPT_NTIMEOUT OPT_NOBIND OPT_NOGHOST OPT_GHOST OPT_VERBOSE
|
||||
%token OPT_DEBUG OPT_RANDOM OPT_USE_WEIGHT OPT_SYMLINK OPT_MODE
|
||||
-%token OPT_STRICTEXPIRE OPT_SLAVE OPT_PRIVATE
|
||||
+%token OPT_STRICTEXPIRE OPT_SHARED OPT_SLAVE OPT_PRIVATE
|
||||
%token COLON COMMA NL DDASH
|
||||
%type <strtype> map
|
||||
%type <strtype> options
|
||||
@@ -208,6 +214,7 @@ line:
|
||||
| PATH OPT_TIMEOUT { master_notify($1); YYABORT; }
|
||||
| PATH OPT_SYMLINK { master_notify($1); YYABORT; }
|
||||
| PATH OPT_STRICTEXPIRE { master_notify($1); YYABORT; }
|
||||
+ | PATH OPT_SHARED { master_notify($1); YYABORT; }
|
||||
| PATH OPT_SLAVE { master_notify($1); YYABORT; }
|
||||
| PATH OPT_PRIVATE { master_notify($1); YYABORT; }
|
||||
| PATH OPT_NOBIND { master_notify($1); YYABORT; }
|
||||
@@ -622,8 +629,9 @@ daemon_option: OPT_TIMEOUT NUMBER { timeout = $2; }
|
||||
| OPT_NTIMEOUT NUMBER { negative_timeout = $2; }
|
||||
| OPT_SYMLINK { symlnk = 1; }
|
||||
| OPT_STRICTEXPIRE { strictexpire = 1; }
|
||||
- | OPT_SLAVE { slave = 1; }
|
||||
- | OPT_PRIVATE { private = 1; }
|
||||
+ | OPT_SHARED { propagation = PROPAGATION_SHARED; }
|
||||
+ | OPT_SLAVE { propagation = PROPAGATION_SLAVE; }
|
||||
+ | OPT_PRIVATE { propagation = PROPAGATION_PRIVATE; }
|
||||
| OPT_NOBIND { nobind = 1; }
|
||||
| OPT_NOGHOST { ghost = 0; }
|
||||
| OPT_GHOST { ghost = 1; }
|
||||
@@ -697,8 +705,7 @@ static void local_init_vars(void)
|
||||
negative_timeout = 0;
|
||||
symlnk = 0;
|
||||
strictexpire = 0;
|
||||
- slave = 0;
|
||||
- private = 0;
|
||||
+ propagation = PROPAGATION_SLAVE;
|
||||
nobind = 0;
|
||||
ghost = defaults_get_browse_mode();
|
||||
random_selection = global_selection_options & MOUNT_FLAG_RANDOM_SELECT;
|
||||
@@ -888,7 +895,6 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne
|
||||
ghost = 1;
|
||||
}
|
||||
|
||||
-
|
||||
if (!entry->ap) {
|
||||
ret = master_add_autofs_point(entry, logopt, nobind, ghost, 0);
|
||||
if (!ret) {
|
||||
@@ -899,6 +905,9 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
+ entry->ap->flags &= ~(PROPAGATION_MASK);
|
||||
+ entry->ap->flags |= propagation;
|
||||
+
|
||||
if (random_selection)
|
||||
entry->ap->flags |= MOUNT_FLAG_RANDOM_SELECT;
|
||||
if (use_weight)
|
||||
@@ -907,10 +916,6 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne
|
||||
entry->ap->flags |= MOUNT_FLAG_SYMLINK;
|
||||
if (strictexpire)
|
||||
entry->ap->flags |= MOUNT_FLAG_STRICTEXPIRE;
|
||||
- if (slave)
|
||||
- entry->ap->flags |= MOUNT_FLAG_SLAVE;
|
||||
- if (private)
|
||||
- entry->ap->flags |= MOUNT_FLAG_PRIVATE;
|
||||
if (negative_timeout)
|
||||
entry->ap->negative_timeout = negative_timeout;
|
||||
if (mode && mode < LONG_MAX)
|
||||
diff --git a/lib/master_tok.l b/lib/master_tok.l
|
||||
index 7486710b..87a6b958 100644
|
||||
--- a/lib/master_tok.l
|
||||
+++ b/lib/master_tok.l
|
||||
@@ -389,6 +389,7 @@ MODE (--mode{OPTWS}|--mode{OPTWS}={OPTWS})
|
||||
-?symlink { return(OPT_SYMLINK); }
|
||||
-?nobind { return(OPT_NOBIND); }
|
||||
-?nobrowse { return(OPT_NOGHOST); }
|
||||
+ -?shared { return(OPT_SHARED); }
|
||||
-?slave { return(OPT_SLAVE); }
|
||||
-?private { return(OPT_PRIVATE); }
|
||||
-?strictexpire { return(OPT_STRICTEXPIRE); }
|
||||
diff --git a/man/auto.master.5.in b/man/auto.master.5.in
|
||||
index 6e510a59..2a0b672a 100644
|
||||
--- a/man/auto.master.5.in
|
||||
+++ b/man/auto.master.5.in
|
||||
@@ -208,17 +208,18 @@ applications scanning the mount tree. Note that this doesn't completely
|
||||
resolve the problem of expired automounts being immediately re-mounted
|
||||
due to application accesses triggered by the expire itself.
|
||||
.TP
|
||||
-.I slave \fPor\fI private
|
||||
+.I slave\fP, \fIprivate\fP or \fIshared\fP
|
||||
This option allows mount propagation of bind mounts to be set to
|
||||
-either \fIslave\fP or \fIprivate\fP. This option may be needed when using
|
||||
-multi-mounts that have bind mounts that bind to a file system that is
|
||||
-propagation shared. This is because the bind mount will have the same
|
||||
-properties as its target which causes problems for offset mounts. When
|
||||
-this happens an unwanted offset mount is propagated back to the target
|
||||
-file system resulting in a deadlock when attempting to access the offset.
|
||||
+\fIslave\fP, \fIprivate\fP or \fIshared\fP. This option defaults to
|
||||
+\fIslave\fP if no option is given. When using multi-mounts that have
|
||||
+bind mounts the bind mount will have the same properties as its parent
|
||||
+which is commonly propagation \fIshared\fP. And if the mount target is
|
||||
+also propagation \fIshared\fP this can lead to a deadlock when attempting
|
||||
+to access the offset mounts. When this happens an unwanted offset mount
|
||||
+is propagated back to the target file system resulting in a deadlock
|
||||
+since the automount target is itself an (unwanted) automount trigger.
|
||||
This option is an autofs pseudo mount option that can be used in the
|
||||
-master map only. By default, bind mounts will inherit the mount propagation
|
||||
-of the target file system.
|
||||
+master map only.
|
||||
.TP
|
||||
.I "\-r, \-\-random-multimount-selection"
|
||||
Enables the use of random selection when choosing a host from a
|
||||
diff --git a/modules/mount_bind.c b/modules/mount_bind.c
|
||||
index 9cba0d7a..5253501c 100644
|
||||
--- a/modules/mount_bind.c
|
||||
+++ b/modules/mount_bind.c
|
||||
@@ -153,6 +153,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
|
||||
|
||||
if (!symlnk && bind_works) {
|
||||
int status, existed = 1;
|
||||
+ int flags;
|
||||
|
||||
debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);
|
||||
|
||||
@@ -190,24 +191,27 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
|
||||
what, fstype, fullpath);
|
||||
}
|
||||
|
||||
- if (ap->flags & (MOUNT_FLAG_SLAVE | MOUNT_FLAG_PRIVATE)) {
|
||||
- int flags = MS_SLAVE;
|
||||
-
|
||||
- if (ap->flags & MOUNT_FLAG_PRIVATE)
|
||||
- flags = MS_PRIVATE;
|
||||
-
|
||||
- /* The bind mount has succeeded but if the target
|
||||
- * mount is propagation shared propagation of child
|
||||
- * mounts (autofs offset mounts for example) back to
|
||||
- * the target of the bind mount must be avoided or
|
||||
- * autofs trigger mounts will deadlock.
|
||||
- */
|
||||
- err = mount(NULL, fullpath, NULL, flags, NULL);
|
||||
- if (err) {
|
||||
- warn(ap->logopt,
|
||||
- "failed to set propagation for %s",
|
||||
- fullpath, root);
|
||||
- }
|
||||
+ /* The bind mount has succeeded, now set the mount propagation.
|
||||
+ *
|
||||
+ * The default is propagation shared, change it if the master
|
||||
+ * map entry has a different option specified.
|
||||
+ */
|
||||
+ flags = MS_SLAVE;
|
||||
+ if (ap->flags & MOUNT_FLAG_PRIVATE)
|
||||
+ flags = MS_PRIVATE;
|
||||
+ else if (ap->flags & MOUNT_FLAG_SHARED)
|
||||
+ flags = MS_SHARED;
|
||||
+
|
||||
+ /* Note: If the parent mount is propagation shared propagation
|
||||
+ * of child mounts (autofs offset mounts for example) back to
|
||||
+ * the target of the bind mount can happen in some cases and
|
||||
+ * must be avoided or autofs trigger mounts will deadlock.
|
||||
+ */
|
||||
+ err = mount(NULL, fullpath, NULL, flags, NULL);
|
||||
+ if (err) {
|
||||
+ warn(ap->logopt,
|
||||
+ "failed to set propagation for %s",
|
||||
+ fullpath, root);
|
||||
}
|
||||
|
||||
return 0;
|
125
autofs-5.1.6-remove-intr-hosts-map-mount-option.patch
Normal file
125
autofs-5.1.6-remove-intr-hosts-map-mount-option.patch
Normal file
@ -0,0 +1,125 @@
|
||||
autofs-5.1.6 - remove intr hosts map mount option
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
Don't use the intr option on NFS mounts by default, it's been ignored
|
||||
by the kernel for a long time now.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 1 +
|
||||
man/auto.master.5.in | 4 ++--
|
||||
man/autofs.5 | 4 ++--
|
||||
modules/parse_sun.c | 9 +++------
|
||||
samples/auto.misc | 2 +-
|
||||
samples/auto.net | 2 +-
|
||||
6 files changed, 10 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index 106b811c..fa5992aa 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -6,6 +6,7 @@ xx/xx/2020 autofs-5.1.7
|
||||
- fix a regression with map instance lookup.
|
||||
- correct fsf address.
|
||||
- samples: fix Makefile targets' directory dependencies
|
||||
+- remove intr hosts map mount option.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/man/auto.master.5.in b/man/auto.master.5.in
|
||||
index 2a0b672a..72fbfd23 100644
|
||||
--- a/man/auto.master.5.in
|
||||
+++ b/man/auto.master.5.in
|
||||
@@ -262,8 +262,8 @@ For example, with an entry in the master map of
|
||||
accessing /net/myserver will mount exports from myserver on directories below
|
||||
/net/myserver.
|
||||
.P
|
||||
-NOTE: mounts done from a hosts map will be mounted with the "nosuid,nodev,intr" options
|
||||
-unless overridden by explicitly specifying the "suid", "dev" or "nointr" options in the
|
||||
+NOTE: mounts done from a hosts map will be mounted with the "nosuid,nodev" options
|
||||
+unless overridden by explicitly specifying the "suid", "dev" options in the
|
||||
master map entry.
|
||||
.SH LDAP MAPS
|
||||
If the map type \fBldap\fP is specified the mapname is of the form
|
||||
diff --git a/man/autofs.5 b/man/autofs.5
|
||||
index d32e772e..569a2683 100644
|
||||
--- a/man/autofs.5
|
||||
+++ b/man/autofs.5
|
||||
@@ -86,13 +86,13 @@ Indirect map:
|
||||
.RS +.2i
|
||||
.ta 1.0i 3.0i
|
||||
.nf
|
||||
-kernel \-ro,soft,intr ftp.kernel.org:/pub/linux
|
||||
+kernel \-ro,soft ftp.kernel.org:/pub/linux
|
||||
boot \-fstype=ext2 :/dev/hda1
|
||||
windoze \-fstype=smbfs ://windoze/c
|
||||
removable \-fstype=ext2 :/dev/hdd
|
||||
cd \-fstype=iso9660,ro :/dev/hdc
|
||||
floppy \-fstype=auto :/dev/fd0
|
||||
-server \-rw,hard,intr / \-ro myserver.me.org:/ \\
|
||||
+server \-rw,hard / \-ro myserver.me.org:/ \\
|
||||
/usr myserver.me.org:/usr \\
|
||||
/home myserver.me.org:/home
|
||||
.fi
|
||||
diff --git a/modules/parse_sun.c b/modules/parse_sun.c
|
||||
index 88dde0b2..71867ef1 100644
|
||||
--- a/modules/parse_sun.c
|
||||
+++ b/modules/parse_sun.c
|
||||
@@ -618,10 +618,9 @@ static int sun_mount(struct autofs_point *ap, const char *root,
|
||||
int len = strlen(options);
|
||||
int suid = strstr(options, "suid") ? 0 : 7;
|
||||
int dev = strstr(options, "dev") ? 0 : 6;
|
||||
- int nointr = strstr(options, "nointr") ? 0 : 5;
|
||||
|
||||
- if (suid || dev || nointr) {
|
||||
- char *tmp = alloca(len + suid + dev + nointr + 1);
|
||||
+ if (suid || dev) {
|
||||
+ char *tmp = alloca(len + suid + dev + 1);
|
||||
if (!tmp) {
|
||||
error(ap->logopt, MODPREFIX
|
||||
"alloca failed for options");
|
||||
@@ -635,8 +634,6 @@ static int sun_mount(struct autofs_point *ap, const char *root,
|
||||
strcat(tmp, ",nosuid");
|
||||
if (dev)
|
||||
strcat(tmp, ",nodev");
|
||||
- if (nointr)
|
||||
- strcat(tmp, ",intr");
|
||||
options = tmp;
|
||||
}
|
||||
} else {
|
||||
@@ -648,7 +645,7 @@ static int sun_mount(struct autofs_point *ap, const char *root,
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
- strcpy(tmp, "nosuid,nodev,intr");
|
||||
+ strcpy(tmp, "nosuid,nodev");
|
||||
options = tmp;
|
||||
}
|
||||
}
|
||||
diff --git a/samples/auto.misc b/samples/auto.misc
|
||||
index 0ee5e75f..fdda0e73 100644
|
||||
--- a/samples/auto.misc
|
||||
+++ b/samples/auto.misc
|
||||
@@ -6,7 +6,7 @@
|
||||
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
|
||||
|
||||
# the following entries are samples to pique your imagination
|
||||
-#linux -ro,soft,intr ftp.example.org:/pub/linux
|
||||
+#linux -ro,soft ftp.example.org:/pub/linux
|
||||
#boot -fstype=ext2 :/dev/hda1
|
||||
#floppy -fstype=auto :/dev/fd0
|
||||
#floppy -fstype=ext2 :/dev/fd0
|
||||
diff --git a/samples/auto.net b/samples/auto.net
|
||||
index 0384f611..c5b145d5 100755
|
||||
--- a/samples/auto.net
|
||||
+++ b/samples/auto.net
|
||||
@@ -9,7 +9,7 @@ key="$1"
|
||||
|
||||
# add "nosymlink" here if you want to suppress symlinking local filesystems
|
||||
# add "nonstrict" to make it OK for some filesystems to not mount
|
||||
-opts="-fstype=nfs,hard,intr,nodev,nosuid"
|
||||
+opts="-fstype=nfs,hard,nodev,nosuid"
|
||||
|
||||
for P in /bin /sbin /usr/bin /usr/sbin
|
||||
do
|
885
autofs-5.1.6-update-ldap-READMEs-and-schema-definitions.patch
Normal file
885
autofs-5.1.6-update-ldap-READMEs-and-schema-definitions.patch
Normal file
@ -0,0 +1,885 @@
|
||||
autofs-5.1.6 - update ldap READMEs and schema definitions
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
The autofs schema in samples/autofs.schema should not be used for
|
||||
autofs map information, it's very old and may be inaccurate or may
|
||||
conflict with other schema definitions included in LDAP server
|
||||
distributions.
|
||||
|
||||
The README.autofs-schema has been updated to alert people to this
|
||||
but the schema file has not yet been removed.
|
||||
|
||||
A new README.ldap-schema has been added which recommends using either
|
||||
of rfc2307 or rfc2307bis schema for autofs Sun format map information
|
||||
stored in LDAP and at least one of these schema should be included in
|
||||
LDAP server distributions. Additionally the README notes the schema
|
||||
that needs to be used for autofs amd format maps is present in the
|
||||
file samples/am-utils-ldap.schema.
|
||||
|
||||
Ian
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
---
|
||||
CHANGELOG | 1
|
||||
README.autofs-schema | 8 -
|
||||
README.ldap-schema | 14 ++
|
||||
autofs.spec | 3
|
||||
samples/am-utils-ldap-id.txt | 360 ++++++++++++++++++++++++++++++++++++++++++
|
||||
samples/am-utils-ldap.schema | 52 ++++++
|
||||
samples/rfc2307.schema | 37 ++++
|
||||
samples/rfc2307bis.schema | 310 ++++++++++++++++++++++++++++++++++++
|
||||
8 files changed, 780 insertions(+), 5 deletions(-)
|
||||
create mode 100644 README.ldap-schema
|
||||
create mode 100644 samples/am-utils-ldap-id.txt
|
||||
create mode 100644 samples/am-utils-ldap.schema
|
||||
create mode 100644 samples/rfc2307.schema
|
||||
create mode 100644 samples/rfc2307bis.schema
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index f5a1a0e3..981a0333 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -1,5 +1,6 @@
|
||||
xx/xx/2020 autofs-5.1.7
|
||||
- make bind mounts propagation slave by default.
|
||||
+- update ldap READMEs and schema definitions.
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/README.autofs-schema b/README.autofs-schema
|
||||
index c121e1c3..b8c6d6a5 100644
|
||||
--- a/README.autofs-schema
|
||||
+++ b/README.autofs-schema
|
||||
@@ -9,10 +9,10 @@ not clear what schema to use for Linux autofs information.
|
||||
|
||||
The schema was corrected somewhere along the line but the autofs
|
||||
distribution copy was never updated. The schema has now been
|
||||
-updated but it is not recommended for use as the schema for autofs
|
||||
-map information.
|
||||
+updated but may not be accurate and may conflict with other LDAP
|
||||
+schemas so it is not recommended for use for autofs map information.
|
||||
|
||||
-The rfc2307 or, preferably the, rfc2307bis schema is the recommened
|
||||
-schema to use.
|
||||
+The rfc2307 or the rfc2307bis schema is the recommened schema to
|
||||
+use, based on requirements.
|
||||
|
||||
Ian
|
||||
diff --git a/README.ldap-schema b/README.ldap-schema
|
||||
new file mode 100644
|
||||
index 00000000..6cb0ba1c
|
||||
--- /dev/null
|
||||
+++ b/README.ldap-schema
|
||||
@@ -0,0 +1,14 @@
|
||||
+LDAP Schema
|
||||
+===========
|
||||
+
|
||||
+LDAP Schema definitions may be found in the samples sub-directory.
|
||||
+
|
||||
+The ldap schema rfc2307.schema and rfc2307bis.schema may be used by
|
||||
+autofs for Sun format automount maps, the choice of which is used is
|
||||
+dependent on user needs. They are included for reference only as at
|
||||
+least one of these should be included in LDAP server distributions.
|
||||
+
|
||||
+The ldap schema am-utils-ldap.schema and am-utils-ldap-id.txt describe
|
||||
+the schema used by autofs for amd format maps.
|
||||
+
|
||||
+Ian
|
||||
diff --git a/autofs.spec b/autofs.spec
|
||||
index 18e93a8d..22e7adf4 100644
|
||||
--- a/autofs.spec
|
||||
+++ b/autofs.spec
|
||||
@@ -194,7 +194,8 @@ fi
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
-%doc CREDITS CHANGELOG INSTALL COPY* README* samples/ldap* samples/autofs.schema samples/autofs_ldap_auth.conf
|
||||
+%doc CREDITS CHANGELOG INSTALL COPY* README* samples/ldap* samples/*.schema
|
||||
+%doc samples/am-utils-ldap-id.txt samples/autofs_ldap_auth.conf
|
||||
%config %{init_file_name}
|
||||
%config(noreplace) /etc/auto.master
|
||||
%config(noreplace) /etc/autofs.conf
|
||||
diff --git a/samples/am-utils-ldap-id.txt b/samples/am-utils-ldap-id.txt
|
||||
new file mode 100644
|
||||
index 00000000..33a9187b
|
||||
--- /dev/null
|
||||
+++ b/samples/am-utils-ldap-id.txt
|
||||
@@ -0,0 +1,360 @@
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+INTERNET-DRAFT Leif Johansson
|
||||
+Intented Category: Experimental Stockholm University
|
||||
+
|
||||
+
|
||||
+
|
||||
+ A directory (X.500 and LDAPv3) schema for Berkely automounter
|
||||
+
|
||||
+
|
||||
+1. Status of this Memo
|
||||
+
|
||||
+ This memo describes a directory (LDAP or X.500) schema for storing amd (Berkely-
|
||||
+ style automounter) mount info maps. The schema is currently beeing supported by
|
||||
+ the (beta version of the) am-utils version 6 package [AMUTILS].
|
||||
+
|
||||
+2. Overview and Rationale
|
||||
+
|
||||
+ Directory services such as X.500 [X500] or LDAP [RFC2251] are a natural choice of
|
||||
+ repository for amd mount map databases. All Object Identifiers in this document
|
||||
+ are prefixed by amdSchema-id to be assigned later. The relation between this
|
||||
+ schema and the automount schema elements in [HOWARD] are mostly superficial. The
|
||||
+ model for the elements in [HOWARD] was the SUN automounter which has quite a
|
||||
+ different syntax for mount maps. Furthermore the intended usage of this schema
|
||||
+ differs from that of [HOWARD] in many respects.
|
||||
+
|
||||
+3. DSA requirements
|
||||
+
|
||||
+ Directory servers implementing this schema SHOULD maintain the modifyTimestamp
|
||||
+ operational attribute. If not the amdMapCacheTtl attribute SHOULD be set to 0
|
||||
+ indicating to clients that caching of map entries SHOULD be turned off. Clients
|
||||
+ wishing to use the amdMap schema MAY use the modifyTimestamp information to set
|
||||
+ the ttl for internal caching schemes. A value of 0 for the amdMapCacheTtl must
|
||||
+ result in clients turning off any local caching.
|
||||
+
|
||||
+4. Syntax definitions
|
||||
+
|
||||
+ The following attribute syntax is defined in this document:
|
||||
+
|
||||
+ amdlocationlist
|
||||
+
|
||||
+ This syntax represents a amd map value. This is the syntax expressed in BNF using
|
||||
+ definitions from [RFC2252]:
|
||||
+
|
||||
+ amdlocationlist = amdlocationselection |
|
||||
+ amdlocationlist whsp "||" whsp amdlocationselection
|
||||
+
|
||||
+ amdlocationselection = amdlocation |
|
||||
+ amdlocationselection whsp amdlocation
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Johansson [Page 1]
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Internet draft Berkeley AMD LDAP Schema 30 March 1998
|
||||
+
|
||||
+
|
||||
+ amdlocation = amdlocationinfo |
|
||||
+ "-" amdlocationinfo |
|
||||
+ "-"
|
||||
+
|
||||
+ amdlocationinfo = seloropt |
|
||||
+ amdlocationinfo ";" seloropt |
|
||||
+ ";"
|
||||
+
|
||||
+ seloropt = seletion |
|
||||
+ optass
|
||||
+
|
||||
+ selection = keystring "==" printablestring
|
||||
+ keystring "!=" printablestring
|
||||
+
|
||||
+ optass = keystring
|
||||
+
|
||||
+ X.500 servers or LDAPv3 servers (supporting the binary attribute option) may use
|
||||
+ the following syntax definition:
|
||||
+
|
||||
+ AmdLocationList ::= SEQUENCE OF {
|
||||
+ SEQUENCE OF {
|
||||
+ location AmdLocation
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ AmdLocation ::= SET OF {
|
||||
+ CHOICE {
|
||||
+ location [0] AmdLocationInfo
|
||||
+ notlocation [1] AmdLocationInfo
|
||||
+ not [2] NULL
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ AmdLocationInfo ::= SET OF {
|
||||
+ CHOICE {
|
||||
+ selection [0] AmdSelection
|
||||
+ option [1] AmdOption
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ AmdSelection ::= CHOICE {
|
||||
+ eq [0] AttributeAndValue
|
||||
+ ne [1] AttributeAndValue
|
||||
+ }
|
||||
+
|
||||
+ AmdOption ::= AttributeAndValue
|
||||
+ AttributeAndValue ::= SEQUENCE {
|
||||
+ attribute IA5String
|
||||
+
|
||||
+
|
||||
+
|
||||
+Johansson [Page 2]
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Internet draft Berkeley AMD LDAP Schema 30 March 1998
|
||||
+
|
||||
+
|
||||
+ value IA5String
|
||||
+ }
|
||||
+
|
||||
+5. Attribute types
|
||||
+
|
||||
+ The following attribute types are defined in this document:
|
||||
+
|
||||
+ amdMapName
|
||||
+ amdMapCacheTtl
|
||||
+ amdMapEntry
|
||||
+ amdMapEntryKey
|
||||
+ amdMapEntryValue
|
||||
+
|
||||
+ amdSchema-a OBJECT IDENTIFIER ::= { amdSchema-id 1 }
|
||||
+
|
||||
+ amdMapName ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX IA5String
|
||||
+ EQUALITY MATCHING RULE caseIgoreExactMatch
|
||||
+ --ID { amdSchema-a 1 }
|
||||
+ DESCRIPTION
|
||||
+ "This attribute is the symbolic and in the naming
|
||||
+ context unique name of an amd map. This corresponds
|
||||
+ in the case of a flat file database to the name of
|
||||
+ the file or the mount-point of the map."
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ amdMapCacheTtl
|
||||
+ ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX Integer
|
||||
+ EQUALITY MATCHING RULE integerExactMatch
|
||||
+ --ID { amdSchema-a 2 }
|
||||
+ SINGLE VALUED
|
||||
+ DESCRIPTION
|
||||
+ "The maximum time-to-live for the entries in this
|
||||
+ map. After this many milliseconds the map has to
|
||||
+ be cleared from local caches and reloaded. A value
|
||||
+ of 0 disables caching."
|
||||
+ }
|
||||
+
|
||||
+ amdMapEntry
|
||||
+ ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX DistinguishedName
|
||||
+ EQUALITY MATHCING RULE dNCaseIgnoreExactMatch
|
||||
+ --ID { amdSchema-a 3 }
|
||||
+ DESCRIPTION
|
||||
+ "A multivalued attribute listing the distinguished
|
||||
+ names of the amdMapEntries making up this amdMap
|
||||
+
|
||||
+
|
||||
+
|
||||
+Johansson [Page 3]
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Internet draft Berkeley AMD LDAP Schema 30 March 1998
|
||||
+
|
||||
+
|
||||
+ object."
|
||||
+ }
|
||||
+
|
||||
+ amdMapEntryKey ::= {
|
||||
+ ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX IA5String
|
||||
+ EQUALITY MATCHING RULE stringExactMatch
|
||||
+ --ID { amdSchema-a 4 }
|
||||
+ SINGLE VALUED
|
||||
+ DESCRIPTION
|
||||
+ "The value of this attribute is usually the name of
|
||||
+ a mountpoint for this amdMapEntry."
|
||||
+ }
|
||||
+
|
||||
+ amdMapEntryValue ::= {
|
||||
+ ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX AmdLocationList
|
||||
+ --ID { amdSchema-a 5 }
|
||||
+ DESCRIPTION
|
||||
+ "This is the actual mount information for the amdMapEntry
|
||||
+ using the syntax described above."
|
||||
+ }
|
||||
+
|
||||
+ amdMapEntryKey ::= {
|
||||
+ ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX IA5String
|
||||
+ EQUALITY MATCHING RULE stringExactMatch
|
||||
+ --ID { amdSchema-a 4 }
|
||||
+ SINGLE VALUED
|
||||
+ DESCRIPTION
|
||||
+ "The value of this attribute is usually the name of
|
||||
+ a mountpoint for this amdMapEntry."
|
||||
+ }
|
||||
+
|
||||
+ amdMapEntryValue ::= {
|
||||
+ ATTRIBUTE ::= {
|
||||
+ WITH SYNTAX AmdLocationList
|
||||
+ --ID { amdSchema-a 5 }
|
||||
+ DESCRIPTION
|
||||
+ "This is the actual mount information for the amdMapEntry
|
||||
+ using the syntax described above."
|
||||
+ }
|
||||
+
|
||||
+6. Object classes
|
||||
+
|
||||
+ The following object classes are defined in this document:
|
||||
+
|
||||
+ amdMap
|
||||
+
|
||||
+
|
||||
+
|
||||
+Johansson [Page 4]
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Internet draft Berkeley AMD LDAP Schema 30 March 1998
|
||||
+
|
||||
+
|
||||
+ amdMapEntry
|
||||
+
|
||||
+ defined as follows:
|
||||
+
|
||||
+ amdSchema-oc ::= { amdSchema-id 2 }
|
||||
+
|
||||
+ amdMap OBJECT-CLASS ::= {
|
||||
+ SUBCLASS OF { top }
|
||||
+ KIND auxiliary
|
||||
+ --ID { amdSchema-oc 1 }
|
||||
+ MAY CONTAIN { amdMapCacheTtl , cn }
|
||||
+ MUST CONTAIN { amdMapName , amdMapEntry }
|
||||
+ }
|
||||
+
|
||||
+ amdMapEntry OBJECT-CLASS ::= {
|
||||
+ SUBCLASS OF { top }
|
||||
+ KIND structural
|
||||
+ --ID { amdSchema-oc 2 }
|
||||
+ MUST CONTAIN {
|
||||
+ amdMapName ,
|
||||
+ amdEntryKey ,
|
||||
+ amdEntryValue ,
|
||||
+ } MAY CONTAIN
|
||||
+ { cn } DESCRIPTION "An entry of this
|
||||
+ object class describes mount information relative to a
|
||||
+ certain amdMap entry"
|
||||
+ }
|
||||
+
|
||||
+7. Examples
|
||||
+
|
||||
+
|
||||
+
|
||||
+8. Security Considerations
|
||||
+
|
||||
+ Due to the security problems posed by NFS care should be taken not to advertise
|
||||
+ exported filesystems. Therefore it is often desirable to limit access to entries
|
||||
+ carrying amd mount map information to those systems to which the corresponding
|
||||
+ filesystems have been exported.
|
||||
+
|
||||
+9. References
|
||||
+
|
||||
+ [AMUTILS]
|
||||
+ am-utils homepage: http://shekel.cs.columbia.edu/~erez/am-utils.html
|
||||
+
|
||||
+ [RFC2251]
|
||||
+ M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
|
||||
+ Protocol (v3)", RFC 2251, December 1997.
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Johansson [Page 5]
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Internet draft Berkeley AMD LDAP Schema 30 March 1998
|
||||
+
|
||||
+
|
||||
+ [RFC2252]
|
||||
+ M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Directory
|
||||
+ Access Protocol (v3): Attribute Syntax Definitions", RFC 2252,
|
||||
+ December 1997.
|
||||
+
|
||||
+ [RFC2253]
|
||||
+ M. Wahl, S. Kille, T. Howes, "Lightweight Directory Access
|
||||
+ Protocol (v3): UTF-8 String Representation of Distinguished
|
||||
+ Names", RFC 2253, December 1997.
|
||||
+
|
||||
+ [HOWARD]
|
||||
+ Luke Howard, "An Approach for Using LDAP as a Network
|
||||
+ Information Service", draft-howard-nis-schema-??.txt, Internet
|
||||
+ draft.
|
||||
+
|
||||
+ [X500]
|
||||
+ ITU something or other.
|
||||
+
|
||||
+
|
||||
+
|
||||
+Author's Address
|
||||
+
|
||||
+
|
||||
+ Leif Johansson
|
||||
+ Department of Mathematics
|
||||
+ Stockholm University
|
||||
+ S-106 91 Stockholm
|
||||
+ SWEDEN
|
||||
+
|
||||
+ Email: leifj AT matematik.su.se
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+Johansson [Page 6]
|
||||
+
|
||||
+
|
||||
diff --git a/samples/am-utils-ldap.schema b/samples/am-utils-ldap.schema
|
||||
new file mode 100644
|
||||
index 00000000..9594d2fe
|
||||
--- /dev/null
|
||||
+++ b/samples/am-utils-ldap.schema
|
||||
@@ -0,0 +1,52 @@
|
||||
+# A schema for the Berkeley automounter (AMD)
|
||||
+# Authored by Erez Zadok and/or source maintainers
|
||||
+# Definition by Tim Colles <timc at dai.ed.ac.uk>
|
||||
+# Revised by Adam Morley <adam at gmi.com>
|
||||
+
|
||||
+# OID Base is 1.3.6.1.4.1.10180
|
||||
+#
|
||||
+# Syntaxes are under 1.3.6.1.4.1.10180.3.175-199
|
||||
+# Attribute types are under 1.3.6.1.4.1.10180.2.175-199
|
||||
+# Object classes are under 1.3.6.1.4.1.10180.1.175-199
|
||||
+
|
||||
+# Attribute Type Definitions
|
||||
+
|
||||
+attributetype ( 1.3.6.1.4.1.10180.2.175
|
||||
+ NAME 'amdmapTimestamp'
|
||||
+ DESC 'Probably the time the map was last modified'
|
||||
+ EQUALITY integerMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributetype ( 1.3.6.1.4.1.10180.2.176
|
||||
+ NAME 'amdmapName'
|
||||
+ DESC 'The symbolic name of the map, ie. map_name'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributetype ( 1.3.6.1.4.1.10180.2.177
|
||||
+ NAME 'amdmapKey'
|
||||
+ DESC 'The key value for this entry'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributetype ( 1.3.6.1.4.1.10180.2.178
|
||||
+ NAME 'amdmapValue'
|
||||
+ DESC 'The mount information for this entry'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+# Object Class Definitions
|
||||
+
|
||||
+objectclass ( 1.3.6.1.4.1.10180.1.175 NAME 'amdmapTimestamp'
|
||||
+ SUP top STRUCTURAL
|
||||
+ DESC 'Timestamp for an AMD map'
|
||||
+ MUST ( cn $ amdmapName $ amdmapTimestamp ) )
|
||||
+
|
||||
+objectclass ( 1.3.6.1.4.1.10180.1.176 NAME 'amdmap'
|
||||
+ SUP top STRUCTURAL
|
||||
+ DESC 'Defines an AMD map entry'
|
||||
+ MUST ( cn $ amdmapName $ amdmapKey $ amdmapValue ) )
|
||||
diff --git a/samples/rfc2307.schema b/samples/rfc2307.schema
|
||||
new file mode 100644
|
||||
index 00000000..e8b15edf
|
||||
--- /dev/null
|
||||
+++ b/samples/rfc2307.schema
|
||||
@@ -0,0 +1,37 @@
|
||||
+attributeType ( 1.3.6.1.1.1.1.31
|
||||
+ NAME 'automountMapName'
|
||||
+ DESC 'automount Map Name'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE
|
||||
+ X-ORIGIN 'user defined' )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.32
|
||||
+ NAME 'automountKey'
|
||||
+ DESC 'Automount Key value'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE
|
||||
+ X-ORIGIN 'user defined' )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.33
|
||||
+ NAME 'automountInformation'
|
||||
+ DESC 'Automount information'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE
|
||||
+ X-ORIGIN 'user defined' )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.16
|
||||
+ NAME 'automountMap'
|
||||
+ DESC 'Automount Map information'
|
||||
+ SUP top STRUCTURAL
|
||||
+ MUST automountMapName
|
||||
+ MAY description
|
||||
+ X-ORIGIN 'user defined' )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.17
|
||||
+ NAME 'automount'
|
||||
+ DESC 'Automount information'
|
||||
+ SUP top STRUCTURAL
|
||||
+ MUST ( automountKey $ automountInformation )
|
||||
+ MAY description
|
||||
+ X-ORIGIN 'user defined' )
|
||||
+
|
||||
diff --git a/samples/rfc2307bis.schema b/samples/rfc2307bis.schema
|
||||
new file mode 100644
|
||||
index 00000000..a626b3fe
|
||||
--- /dev/null
|
||||
+++ b/samples/rfc2307bis.schema
|
||||
@@ -0,0 +1,310 @@
|
||||
+###
|
||||
+# Extracted from: http://tools.ietf.org/html/draft-howard-rfc2307bis-02
|
||||
+###
|
||||
+
|
||||
+# Builtin
|
||||
+#attributeType ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
|
||||
+# DESC 'An integer uniquely identifying a user in an
|
||||
+# administrative domain'
|
||||
+# EQUALITY integerMatch
|
||||
+# ORDERING integerOrderingMatch
|
||||
+# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+# SINGLE-VALUE )
|
||||
+
|
||||
+# Builtin
|
||||
+#attributeType ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
|
||||
+# DESC 'An integer uniquely identifying a group in an
|
||||
+# administrative domain'
|
||||
+# EQUALITY integerMatch
|
||||
+# ORDERING integerOrderingMatch
|
||||
+# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+# SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.2 NAME 'gecos'
|
||||
+ DESC 'The GECOS field; the common name'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SUBSTR caseIgnoreSubstringsMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
|
||||
+ DESC 'The absolute path to the home directory'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
|
||||
+ DESC 'The path to the login shell'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
|
||||
+ EQUALITY caseExactMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
|
||||
+ EQUALITY caseExactMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
|
||||
+ DESC 'Netgroup triple'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SUBSTR caseIgnoreSubstringsMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
|
||||
+ DESC 'Service port number'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
|
||||
+ DESC 'Service protocol name'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
|
||||
+ DESC 'IP protocol number'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
|
||||
+ DESC 'ONC RPC number'
|
||||
+ EQUALITY integerMatch
|
||||
+ ORDERING integerOrderingMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
|
||||
+ DESC 'IPv4 addresses as a dotted decimal omitting leading
|
||||
+ zeros or IPv6 addresses as defined in RFC2373'
|
||||
+ EQUALITY caseIgnoreIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
|
||||
+ DESC 'IP network omitting leading zeros, eg. 192.168'
|
||||
+ EQUALITY caseIgnoreIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
|
||||
+ DESC 'IP netmask omitting leading zeros, eg. 255.255.255.0'
|
||||
+ EQUALITY caseIgnoreIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
|
||||
+ DESC 'MAC address in maximal, colon separated hex
|
||||
+ notation, eg. 00:00:92:90:ee:e2'
|
||||
+ EQUALITY caseIgnoreIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
|
||||
+ DESC 'rpc.bootparamd parameter'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
|
||||
+ DESC 'Boot image name'
|
||||
+ EQUALITY caseExactIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
|
||||
+ DESC 'Name of a generic NIS map'
|
||||
+ EQUALITY caseIgnoreMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
|
||||
+ DESC 'A generic NIS entry'
|
||||
+ EQUALITY caseExactMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.28 NAME 'nisPublicKey'
|
||||
+ DESC 'NIS public key'
|
||||
+ EQUALITY octetStringMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.29 NAME 'nisSecretKey'
|
||||
+ DESC 'NIS secret key'
|
||||
+ EQUALITY octetStringMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.30 NAME 'nisDomain'
|
||||
+ DESC 'NIS domain'
|
||||
+ EQUALITY caseIgnoreIA5Match
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.31 NAME 'automountMapName'
|
||||
+ DESC 'automount Map Name'
|
||||
+ EQUALITY caseExactMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.32 NAME 'automountKey'
|
||||
+ DESC 'Automount Key value'
|
||||
+ EQUALITY caseExactMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+attributeType ( 1.3.6.1.1.1.1.33 NAME 'automountInformation'
|
||||
+ DESC 'Automount information'
|
||||
+ EQUALITY caseExactMatch
|
||||
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||
+ SINGLE-VALUE )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
|
||||
+ DESC 'Abstraction of an account with POSIX attributes'
|
||||
+ MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
|
||||
+ MAY ( userPassword $ loginShell $ gecos $
|
||||
+ description ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY
|
||||
+ DESC 'Additional attributes for shadow passwords'
|
||||
+ MUST uid
|
||||
+ MAY ( userPassword $ description $
|
||||
+ shadowLastChange $ shadowMin $ shadowMax $
|
||||
+ shadowWarning $ shadowInactive $
|
||||
+ shadowExpire $ shadowFlag ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY
|
||||
+ DESC 'Abstraction of a group of accounts'
|
||||
+ MUST gidNumber
|
||||
+ MAY ( userPassword $ memberUid $
|
||||
+ description ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL
|
||||
+ DESC 'Abstraction an Internet Protocol service.
|
||||
+ Maps an IP port and protocol (such as tcp or udp)
|
||||
+ to one or more names; the distinguished value of
|
||||
+ the cn attribute denotes the services canonical
|
||||
+ name'
|
||||
+ MUST ( cn $ ipServicePort $ ipServiceProtocol )
|
||||
+ MAY description )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
|
||||
+ DESC 'Abstraction of an IP protocol. Maps a protocol number
|
||||
+ to one or more names. The distinguished value of the cn
|
||||
+ attribute denotes the protocol canonical name'
|
||||
+ MUST ( cn $ ipProtocolNumber )
|
||||
+ MAY description )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL
|
||||
+ DESC 'Abstraction of an Open Network Computing (ONC)
|
||||
+ [RFC1057] Remote Procedure Call (RPC) binding.
|
||||
+ This class maps an ONC RPC number to a name.
|
||||
+ The distinguished value of the cn attribute denotes
|
||||
+ the RPC service canonical name'
|
||||
+ MUST ( cn $ oncRpcNumber )
|
||||
+ MAY description )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY
|
||||
+ DESC 'Abstraction of a host, an IP device. The distinguished
|
||||
+ value of the cn attribute denotes the hosts canonical
|
||||
+ name. Device SHOULD be used as a structural class'
|
||||
+ MUST ( cn $ ipHostNumber )
|
||||
+ MAY ( userPassword $ l $ description $
|
||||
+ manager ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
|
||||
+ DESC 'Abstraction of a network. The distinguished value of
|
||||
+ the cn attribute denotes the network canonical name'
|
||||
+ MUST ipNetworkNumber
|
||||
+ MAY ( cn $ ipNetmaskNumber $ l $ description $ manager ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
|
||||
+ DESC 'Abstraction of a netgroup. May refer to other
|
||||
+ netgroups'
|
||||
+ MUST cn
|
||||
+ MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL
|
||||
+ DESC 'A generic abstraction of a NIS map'
|
||||
+ MUST nisMapName
|
||||
+ MAY description )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL
|
||||
+ DESC 'An entry in a NIS map'
|
||||
+ MUST ( cn $ nisMapEntry $ nisMapName ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY
|
||||
+ DESC 'A device with a MAC address; device SHOULD be
|
||||
+ used as a structural class'
|
||||
+ MAY macAddress )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY
|
||||
+ DESC 'A device with boot parameters; device SHOULD be
|
||||
+ used as a structural class'
|
||||
+ MAY ( bootFile $ bootParameter ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.14 NAME 'nisKeyObject' SUP top AUXILIARY
|
||||
+ DESC 'An object with a public and secret key'
|
||||
+ MUST ( cn $ nisPublicKey $ nisSecretKey )
|
||||
+ MAY ( uidNumber $ description ) )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.15 NAME 'nisDomainObject' SUP top AUXILIARY
|
||||
+ DESC 'Associates a NIS domain with a naming context'
|
||||
+ MUST nisDomain )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.16 NAME 'automountMap' SUP top STRUCTURAL
|
||||
+ MUST ( automountMapName )
|
||||
+ MAY description )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.17 NAME 'automount' SUP top STRUCTURAL
|
||||
+ DESC 'Automount information'
|
||||
+ MUST ( automountKey $ automountInformation )
|
||||
+ MAY description )
|
||||
+
|
||||
+objectClass ( 1.3.6.1.1.1.2.18 NAME 'groupOfMembers' SUP top STRUCTURAL
|
||||
+ DESC 'A group with members (DNs)'
|
||||
+ MUST cn
|
||||
+ MAY ( businessCategory $ seeAlso $ owner $ ou $ o $
|
||||
+ description $ member ) )
|
@ -0,0 +1,94 @@
|
||||
samples: fix Makefile targets' directory dependencies
|
||||
|
||||
From: Kyle Russell <bkylerussell@gmail.com>
|
||||
|
||||
Introduce an order-only prerequisite on dirs for targets that actually
|
||||
use these directories to guarantee they exist at install time; otherwise,
|
||||
the sample install commands can result in ENOENT in a parallelized make
|
||||
invocation.
|
||||
|
||||
Signed-off-by: Kyle Russell <bkylerussell@gmail.com>
|
||||
---
|
||||
CHANGELOG | 1 +
|
||||
samples/Makefile | 14 +++++++-------
|
||||
2 files changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/CHANGELOG b/CHANGELOG
|
||||
index f53f9adf..106b811c 100644
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -5,6 +5,7 @@ xx/xx/2020 autofs-5.1.7
|
||||
- fix browse dir not re-created on symlink expire.
|
||||
- fix a regression with map instance lookup.
|
||||
- correct fsf address.
|
||||
+- samples: fix Makefile targets' directory dependencies
|
||||
|
||||
07/10/2019 autofs-5.1.6
|
||||
- support strictexpire mount option.
|
||||
diff --git a/samples/Makefile b/samples/Makefile
|
||||
index e7f242a7..a505b1f9 100644
|
||||
--- a/samples/Makefile
|
||||
+++ b/samples/Makefile
|
||||
@@ -53,7 +53,7 @@ CONFIG = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/autofs.conf.orig || echo
|
||||
CEXISTS = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/autofs || echo "no")
|
||||
|
||||
.PHONY: autofs.conf
|
||||
-autofs.conf: autofs.conf.default
|
||||
+autofs.conf: autofs.conf.default | dirs
|
||||
@echo
|
||||
@echo "Installing autofs default configuation in $(autofsmapdir)"
|
||||
@if test -z "$(CONFIG)" ; \
|
||||
@@ -76,7 +76,7 @@ CINIT = $(shell test -e $(INSTALLROOT)$(autofsconfdir)/autofs.orig || echo "-b -
|
||||
CIEXISTS = $(shell test -e $(INSTALLROOT)$(autofsconfdir)/autofs || echo "no")
|
||||
|
||||
.PHONY: autofs.sysinit
|
||||
-autofs.sysinit: autofs.init.conf
|
||||
+autofs.sysinit: autofs.init.conf | dirs
|
||||
@echo
|
||||
@echo "Installing autofs init configuation in $(autofsconfdir)"
|
||||
@if test -z "$(CINIT)" ; \
|
||||
@@ -99,7 +99,7 @@ AUTH = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/autofs_ldap_auth.conf.orig
|
||||
AEXISTS = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/autofs_ldap_auth.conf || echo "no")
|
||||
|
||||
.PHONY: autofs_ldap_auth.conf
|
||||
-autofs_ldap_auth.conf:
|
||||
+autofs_ldap_auth.conf: | dirs
|
||||
@echo
|
||||
@echo "Installing autofs ldap auth config \"autofs_ldap_auth.conf\" in $(autofsmapdir)"
|
||||
@if test -z "$(AUTH)" ; \
|
||||
@@ -122,7 +122,7 @@ MASTER = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.master.orig || echo
|
||||
MEXISTS = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.master || echo "no")
|
||||
|
||||
.PHONY: auto.master
|
||||
-auto.master:
|
||||
+auto.master: | dirs
|
||||
@echo
|
||||
@echo "Installing autofs default master map in $(autofsmapdir)"
|
||||
@if test -z "$(MASTER)" ; \
|
||||
@@ -145,7 +145,7 @@ MISC = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.misc.orig || echo "-b
|
||||
IEXISTS = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.misc || echo "no")
|
||||
|
||||
.PHONY: auto.misc
|
||||
-auto.misc:
|
||||
+auto.misc: | dirs
|
||||
@echo
|
||||
@echo "Installing autofs sample map \"auto.misc\" in $(autofsmapdir)"
|
||||
@if test -z "$(MISC)" ; \
|
||||
@@ -168,7 +168,7 @@ NET = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.net.orig || echo "-b --
|
||||
NEXISTS = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.net || echo "no")
|
||||
|
||||
.PHONY: auto.net
|
||||
-auto.net:
|
||||
+auto.net: | dirs
|
||||
@echo
|
||||
@echo "Installing autofs sample map \"auto.net\" in $(autofsmapdir)"
|
||||
@if test -z "$(NET)" ; \
|
||||
@@ -191,7 +191,7 @@ SMB = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.smb.orig || echo "-b --
|
||||
SEXISTS = $(shell test -e $(INSTALLROOT)$(autofsmapdir)/auto.smb || echo "no")
|
||||
|
||||
.PHONY: auto.smb
|
||||
-auto.smb:
|
||||
+auto.smb: | dirs
|
||||
@echo
|
||||
@echo "Installing autofs sample map \"auto.smb\" in $(autofsmapdir)"
|
||||
@if test -z "$(SMB)" ; \
|
@ -8,7 +8,7 @@
|
||||
Summary: A tool for automatically mounting and unmounting filesystems
|
||||
Name: autofs
|
||||
Version: 5.1.6
|
||||
Release: 3%{?dist}
|
||||
Release: 6%{?dist}
|
||||
Epoch: 1
|
||||
License: GPLv2+
|
||||
Source: https://www.kernel.org/pub/linux/daemons/autofs/v5/autofs-%{version}.tar.gz
|
||||
@ -191,7 +191,12 @@ fi
|
||||
%dir /etc/auto.master.d
|
||||
|
||||
%changelog
|
||||
* Mon Jun 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.1.6-3
|
||||
* Mon Jun 01 2020 Ian Kent <ikent@redhat.com> - 1:5.1.6-4
|
||||
- fix changelog message.
|
||||
- actually commit the patches referred to in the commit.
|
||||
- adjust revision to allow fixing f32 revision on update.
|
||||
|
||||
* Mon Jun 01 2020 Ian Kent <ikent@redhat.com> - 1:5.1.6-3
|
||||
- make bind mounts propagation slave by default.
|
||||
- update ldap READMEs and schema definitions.
|
||||
- fix program map multi-mount lookup after mount fail.
|
||||
|
Loading…
Reference in New Issue
Block a user