Re: [PATCH] nfs: Add '--with-nss-modules' configure option to specify nss modules.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 11/07/2014 04:09 PM, Sami Wagiaalla wrote:
> From: Sami Wagiaalla <swagiaal@xxxxxxxxxx>
> 
> I was having trouble setting up NFS on Atomic Host.  It turns out
> there is an issue when rpcbind is trying to find the uid of the
> rpc user.  OSTree based operating systems store user information
> for system users such as the rpc user in /usr/lib/passwd and
> leaves /etc/passwd for humans users.  This is enabled by the use
> of the nss module nss-altfiles which allows one to specify
> additional files to be added the the passwd database.  rpcbind
> however overrides the rule added to /etc/nsswitch.conf and removes
> "altfiles" from the list of modules by doing the following:
> 
>     __nss_configure_lookup("passwd", "files");
> 
> This was added in commit 77f7556878d1fe03dc ("[...]use
> __nss_configure_lookup() to restrict the [rpc user] lookup") to
> remove "nis" form the list of modules and prevent rpcbind from
> having a circular dependency on itself.  In an OSTree based
> operating system however this prevents rpcbind from finding the rpc
> user and the service cannot start.
> 
> This patch adds an option --with-nss-modules which allows one
> to specify the nss modules which should be searched for user
> information.  The default setting is "files" which preserves the
> current behavior, but this enables one to add other modules to
> the search path.
> 
> Signed-off-by: Sami Wagiaalla <swagiaal@xxxxxxxxxx>
Committed.... 

steved.

> ---
>  Makefile.am   |  1 +
>  configure.ac  |  7 +++++++
>  src/rpcbind.c | 10 ++++++++--
>  3 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile.am b/Makefile.am
> index d10c906..e0bc4b4 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -6,6 +6,7 @@ AM_CPPFLAGS = \
>  	-DINET6 \
>  	-DRPCBIND_STATEDIR="\"$(statedir)\"" \
>  	-DRPCBIND_USER="\"$(rpcuser)\"" \
> +	-DNSS_MODULES="\"$(nss_modules)\"" \
>  	-D_GNU_SOURCE \
>  	$(TIRPC_CFLAGS)
>  
> diff --git a/configure.ac b/configure.ac
> index 39181f0..5a88cc7 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -27,6 +27,13 @@ AC_ARG_WITH([rpcuser],
>    ,, [with_rpcuser=root])
>  AC_SUBST([rpcuser], [$with_rpcuser])
>   
> +AC_ARG_WITH([nss_modules],
> +  AS_HELP_STRING([--with-nss-modules=NSS_MODULES]
> +  , [Sets the nss module search list to the given space-delimited string.
> +     For example --with-nss-modules="files altfiles" @<:@default=files@:>@])
> +  ,, [with_nss_modules=files])
> +AC_SUBST([nss_modules], [$with_nss_modules])
> +
>  PKG_CHECK_MODULES([TIRPC], [libtirpc])
>  
>  AS_IF([test x$enable_libwrap = xyes], [
> diff --git a/src/rpcbind.c b/src/rpcbind.c
> index 924aca1..e3462e3 100644
> --- a/src/rpcbind.c
> +++ b/src/rpcbind.c
> @@ -91,6 +91,12 @@ char *rpcbinduser = RPCBIND_USER;
>  char *rpcbinduser = NULL;
>  #endif
>  
> +#ifdef NSS_MODULES
> +char *nss_modules = NSS_MODULES;
> +#else
> +char *nss_modules = "files";
> +#endif
> +
>  /* who to suid to if -s is given */
>  #define RUN_AS  "daemon"
>  
> @@ -165,7 +171,7 @@ main(int argc, char *argv[])
>  	 * Make sure we use the local service file 
>  	 * for service lookkups
>  	 */
> -	__nss_configure_lookup("services", "files");
> +	__nss_configure_lookup("services", nss_modules);
>  
>  	nc_handle = setnetconfig(); 	/* open netconfig file */
>  	if (nc_handle == NULL) {
> @@ -231,7 +237,7 @@ main(int argc, char *argv[])
>  		 * Make sure we use the local password file
>  		 * for these lookups.
>  		 */
> -		__nss_configure_lookup("passwd", "files");
> +		__nss_configure_lookup("passwd", nss_modules);
>  
>  		if((p = getpwnam(id)) == NULL) {
>  			syslog(LOG_ERR, "cannot get uid of '%s': %m", id);
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux