Signed-off-by: zhangjian <zhangjian496@huawei.com> (cherry picked from commit 26b75078a052c5bc35deef9bc118b941ec3de7f0)
56 lines
2.3 KiB
Diff
56 lines
2.3 KiB
Diff
From 90a23f7c6343bcb1b69c93ceccc14cc06e14d958 Mon Sep 17 00:00:00 2001
|
|
From: Aram Akhavan <github@aram.nubmail.ca>
|
|
Date: Sat, 15 Jul 2023 13:21:04 -0400
|
|
Subject: [PATCH] libnfsidmap: try to get the domain directly from hostname if
|
|
the DNS lookup fails and always show the log message if the domain can't be
|
|
determined
|
|
|
|
In nfs4_init_name_mapping(), if no domain is specified in the config file, the hostname will be looked up in DNS, and the domain extracted from that.
|
|
If DNS resolution isn't up at this time (i.e. on idmapd startup), the hardcoded domain in IDMAPD_DEFAULT_DOMAIN is used. This will break id mapping
|
|
for anyone who doesn't happen to use "localdomain". Previously, the log message indicating this has happened requires -v to be passed, so the
|
|
"failure" was silent by default.
|
|
|
|
Signed-off-by: Aram Akhavan <github@aram.nubmail.ca>
|
|
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
---
|
|
support/nfsidmap/libnfsidmap.c | 16 +++++++++++-----
|
|
1 file changed, 11 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/support/nfsidmap/libnfsidmap.c b/support/nfsidmap/libnfsidmap.c
|
|
index 0a912e5..1db24d1 100644
|
|
--- a/support/nfsidmap/libnfsidmap.c
|
|
+++ b/support/nfsidmap/libnfsidmap.c
|
|
@@ -219,10 +219,16 @@ static int domain_from_dns(char **domain)
|
|
|
|
if (gethostname(hname, sizeof(hname)) == -1)
|
|
return -1;
|
|
- if ((he = gethostbyname(hname)) == NULL)
|
|
- return -1;
|
|
- if ((c = strchr(he->h_name, '.')) == NULL || *++c == '\0')
|
|
- return -1;
|
|
+ if ((he = gethostbyname(hname)) == NULL) {
|
|
+ IDMAP_LOG(1, ("libnfsidmap: DNS lookup of hostname failed. Attempting to use domain from hostname as is."));
|
|
+ if ((c = strchr(hname, '.')) == NULL || *++c == '\0')
|
|
+ return -1;
|
|
+ }
|
|
+ else {
|
|
+ if ((c = strchr(he->h_name, '.')) == NULL || *++c == '\0')
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
/*
|
|
* Query DNS to see if the _nfsv4idmapdomain TXT record exists
|
|
* If so use it...
|
|
@@ -387,7 +393,7 @@ int nfs4_init_name_mapping(char *conffile)
|
|
dflt = 1;
|
|
ret = domain_from_dns(&default_domain);
|
|
if (ret) {
|
|
- IDMAP_LOG(1, ("libnfsidmap: Unable to determine "
|
|
+ IDMAP_LOG(0, ("libnfsidmap: Unable to determine "
|
|
"the NFSv4 domain; Using '%s' as the NFSv4 domain "
|
|
"which means UIDs will be mapped to the 'Nobody-User' "
|
|
"user defined in %s",
|
|
--
|
|
2.33.0
|
|
|