代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/autofs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
autofs-5.1.4 - fix directory create permission
From: Ian Kent <raven@themaw.net>
autofs mount point directory creation is done using a permission of
0555.
But it is necessary to create directories within autofs mount points
for some map entry types so write access should be set for the owner
on mount point directories.
Signed-off-by: Ian Kent <raven@themaw.net>
---
CHANGELOG | 1 +
daemon/automount.c | 2 ++
daemon/direct.c | 4 ++--
daemon/indirect.c | 2 +-
daemon/lookup.c | 2 +-
include/automount.h | 1 +
modules/mount_bind.c | 6 +++---
modules/mount_changer.c | 2 +-
modules/mount_ext2.c | 2 +-
modules/mount_generic.c | 2 +-
modules/mount_nfs.c | 2 +-
modules/parse_amd.c | 2 +-
12 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index d07d88ce..4faab510 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
xx/xx/2018 autofs-5.1.5
- fix flag file permission.
+- fix directory create permission.
19/12/2017 autofs-5.1.4
- fix spec file url.
diff --git a/daemon/automount.c b/daemon/automount.c
index 5c739617..dcdc19fb 100644
--- a/daemon/automount.c
+++ b/daemon/automount.c
@@ -51,6 +51,8 @@ const char *libdir = AUTOFS_LIB_DIR; /* Location of library modules */
const char *mapdir = AUTOFS_MAP_DIR; /* Location of mount maps */
const char *confdir = AUTOFS_CONF_DIR; /* Location of autofs config file */
+unsigned int mp_mode = 0755;
+
unsigned int nfs_mount_uses_string_options = 0;
static struct nfs_mount_vers vers, check = {1, 1, 1};
diff --git a/daemon/direct.c b/daemon/direct.c
index 9a134351..3fdecdb8 100644
--- a/daemon/direct.c
+++ b/daemon/direct.c
@@ -424,7 +424,7 @@ int do_mount_autofs_direct(struct autofs_point *ap,
}
/* In case the directory doesn't exist, try to mkdir it */
- if (mkdir_path(me->key, 0555) < 0) {
+ if (mkdir_path(me->key, mp_mode) < 0) {
if (errno != EEXIST && errno != EROFS) {
crit(ap->logopt,
"failed to create mount directory %s", me->key);
@@ -739,7 +739,7 @@ int mount_autofs_offset(struct autofs_point *ap, struct mapent *me, const char *
strcat(mountpoint, offset);
/* In case the directory doesn't exist, try to mkdir it */
- if (mkdir_path(mountpoint, 0555) < 0) {
+ if (mkdir_path(mountpoint, mp_mode) < 0) {
if (errno == EEXIST) {
/*
* If the mount point directory is a real mount
diff --git a/daemon/indirect.c b/daemon/indirect.c
index ffb11b8c..03c081ed 100644
--- a/daemon/indirect.c
+++ b/daemon/indirect.c
@@ -133,7 +133,7 @@ static int do_mount_autofs_indirect(struct autofs_point *ap, const char *root)
}
/* In case the directory doesn't exist, try to mkdir it */
- if (mkdir_path(root, 0555) < 0) {
+ if (mkdir_path(root, mp_mode) < 0) {
if (errno != EEXIST && errno != EROFS) {
crit(ap->logopt,
"failed to create autofs directory %s",
diff --git a/daemon/lookup.c b/daemon/lookup.c
index cb67e7d9..6a722b3b 100644
--- a/daemon/lookup.c
+++ b/daemon/lookup.c
@@ -802,7 +802,7 @@ int lookup_ghost(struct autofs_point *ap, const char *root)
goto next;
}
- ret = mkdir_path(fullpath, 0555);
+ ret = mkdir_path(fullpath, mp_mode);
if (ret < 0 && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
warn(ap->logopt,
diff --git a/include/automount.h b/include/automount.h
index 2e2c2b02..e5c19d23 100644
--- a/include/automount.h
+++ b/include/automount.h
@@ -269,6 +269,7 @@ void reset_signals(void);
int do_mount(struct autofs_point *ap, const char *root, const char *name,
int name_len, const char *what, const char *fstype,
const char *options);
+extern unsigned int mp_mode;
int mkdir_path(const char *path, mode_t mode);
int rmdir_path(struct autofs_point *ap, const char *path, dev_t dev);
diff --git a/modules/mount_bind.c b/modules/mount_bind.c
index 4864ea51..5effa880 100644
--- a/modules/mount_bind.c
+++ b/modules/mount_bind.c
@@ -151,7 +151,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);
- status = mkdir_path(fullpath, 0555);
+ status = mkdir_path(fullpath, mp_mode);
if (status && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
@@ -203,7 +203,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
} else {
debug(ap->logopt,
MODPREFIX "calling mkdir_path %s", basepath);
- if (mkdir_path(basepath, 0555) && errno != EEXIST) {
+ if (mkdir_path(basepath, mp_mode) && errno != EEXIST) {
char *estr;
estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
@@ -219,7 +219,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
"failed to create symlink %s -> %s",
fullpath, what);
if ((ap->flags & MOUNT_FLAG_GHOST) && !status) {
- if (mkdir_path(fullpath, 0555) && errno != EEXIST) {
+ if (mkdir_path(fullpath, mp_mode) && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
MODPREFIX "mkdir_path %s failed: %s",
diff --git a/modules/mount_changer.c b/modules/mount_changer.c
index 798f23b2..7d44a720 100644
--- a/modules/mount_changer.c
+++ b/modules/mount_changer.c
@@ -87,7 +87,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);
- status = mkdir_path(fullpath, 0555);
+ status = mkdir_path(fullpath, mp_mode);
if (status && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
diff --git a/modules/mount_ext2.c b/modules/mount_ext2.c
index 90fc0876..3bbea95a 100644
--- a/modules/mount_ext2.c
+++ b/modules/mount_ext2.c
@@ -69,7 +69,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);
- status = mkdir_path(fullpath, 0555);
+ status = mkdir_path(fullpath, mp_mode);
if (status && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
diff --git a/modules/mount_generic.c b/modules/mount_generic.c
index ae637875..b1a3adbf 100644
--- a/modules/mount_generic.c
+++ b/modules/mount_generic.c
@@ -68,7 +68,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);
- status = mkdir_path(fullpath, 0555);
+ status = mkdir_path(fullpath, mp_mode);
if (status && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
diff --git a/modules/mount_nfs.c b/modules/mount_nfs.c
index bf712a93..77166544 100644
--- a/modules/mount_nfs.c
+++ b/modules/mount_nfs.c
@@ -277,7 +277,7 @@ dont_probe:
debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);
- status = mkdir_path(fullpath, 0555);
+ status = mkdir_path(fullpath, mp_mode);
if (status && errno != EEXIST) {
char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
error(ap->logopt,
diff --git a/modules/parse_amd.c b/modules/parse_amd.c
index b40c1ad1..c4b3ef0b 100644
--- a/modules/parse_amd.c
+++ b/modules/parse_amd.c
@@ -1288,7 +1288,7 @@ static int do_program_mount(struct autofs_point *ap,
rv = 0;
ext_mount_add(&entry->ext_mount, entry->fs, 1);
} else {
- rv = mkdir_path(entry->fs, 0555);
+ rv = mkdir_path(entry->fs, mp_mode);
if (rv && errno != EEXIST) {
char buf[MAX_ERR_BUF];
char *estr;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。