summaryrefslogtreecommitdiffstats
path: root/utils/idmapd
Commit message (Collapse)AuthorAgeFilesLines
* nfs-utils: Restore ABI compat with pre-merge libnfsidmapJustin Mitchell2017-11-071-3/+3
| | | | | | | | | Prior to merge libnfsidmap leaked many private symbols that were not defined in its API, creating an accidental ABI. This patch renames and unhides symbols in order to match that ABI until a cleaned up API can be established and released. Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: integrate libnfsidmap code with rest of nfs-utilsJustin Mitchell2017-10-261-1/+3
| | | | | | | | | | Modify libnfsidmap to use the now shared conffile code, adjust the build structure to generate everything correctly, and modify the other utils to use the merged version of libnfsidmap instead of testing for an external dependancy. Signed-off-by: Justin Mitchell <jumitche@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: split conffile to a separate convenience libJustin Mitchell2017-10-261-1/+1
| | | | | | | | | To allow better reuse of the code we split conffile and xlog into their own separate convenience library, then merge it back so as to not create extra dependancies for everything Signed-off-by: Justin Mitchell <jumitche@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: daemonize earlierScott Mayhew2017-08-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | daemon_init() calls closeall() to close any "unneeded" file descriptors. This causes the following issue with idmapd on systems that are configured to have SSSD handle local users and groups: 1. During startup, rpc.idmapd calls getpwnam("nobody") and getgrnam("nobody") 2. sss_nss_mc_get{pw,gr}nam from libnss_sss open the cache files for users and groups and store the fd's in a struct sss_cli_mc_ctx. The passwd cache is fd 3 and the group cache is fd 4. 3. idmapd calls daemon_init() which sets fd's 0, 1, and 2 to /dev/null and fd 3 to the write end of the pipe that the child uses to report it's startup status. It then closes all fd's >= 4. 4. idmapd then calls event_init() which leads to epoll_create1() which returns 4 as the epoll fd. 6. An NFSv4 mount request comes in from a client, triggering an nfsdcb callback. 7. idmapd calls getgrgid_r() which leads to a call to sss_nss_check_header() which determines that the cache needs to be reinitialized. sss_nss_mc_destroy_ctx() is called, which closes the ctx->fd which now corresponds to the epoll file rather than the group cache file. 8. event_dispatch() calls epoll_wait() with epfd=4, and -EBADF is returned. idmapd logs the following error and exits with a nonzero status: rpc.idmapd[650]: main: event_dispatch returns errno 9 (Bad file descriptor) Moving the deamon_init() call so that it happens before get{pw,gr}nam() fixes this. Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: fix object order in idmapd_LDADDScott Mayhew2017-08-231-1/+1
| | | | | | | | | | | | | | | | | nfs-utils and libnfsidmap have similar configuration parsing routines. They were the same up until nfs-utils commit 7b33590f (config: Remove the conf_path global), where conf_init() was changed to take a path as an argument. With the current idmap_LDADD ordering in Makefile.am, the conf_init() from libnfsidmap is called, resulting in the following error along with the failure to parse idmapd.conf: rpc.idmapd[391]: rpc.idmapd: conf_reinit: open ("(null)", O_RDONLY) failed Placing libnfs.a first in idmap_LDADD ensures that idmapd uses the config parsing routines from nfs-utils instead of libnfsidmap. Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* config: Remove the conf_path globalJustin Mitchell2017-05-051-6/+4
| | | | | | | | Working towards an nfs.conf library and API for system config tools, first step, replace the conf_path global with a parameter to conf_init Signed-off-by: Justin Mitchell <jumitche@rehat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: move the pipefs-directory config option to nfs.confScott Mayhew2017-04-092-10/+47
| | | | | | | | | | | | | Changed idmapd to read its value for the pipefs-directory from /etc/nfs.conf rather than /etc/idmapd.conf. All other configurations related to id mapping still reside in /etc/idmapd.conf for now. Added a warning to indicate that idmapd's -c option is deprecated. Corrected a misspelling of 'configuration' in nfs.conf. Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: Update rpc.idmap and nfsidmap man pagesSteve Dickson2016-08-201-0/+23
| | | | | | | | Describe how the NFSv4 domain name can be now be found using the _nfsv4idmapdomain DNS TXT record Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Added the -h flagSteve Dickson2016-01-202-2/+8
| | | | | | | In general the -h flag should at least show a usage message Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Added the -C and -S flagsSteve Dickson2015-12-111-1/+3
| | | | | | | The C and S flags were missing for the SYNOPSIS Signed-off-by: Steve Dickson <steved@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Added a usage routineSteve Dickson2015-12-111-2/+10
| | | | | | | Show the correct arguments when invalid arguments are used. Signed-off-by: Steve Dickson <steved@redhat.com>
* cleanup daemonization codeDavid Hardeman2015-01-231-4/+2
| | | | | | | | | | | | | | | The daemonization init/ready functions have parameters that are never used, require the caller to keep track of some pipefds that it has no interest in and which might not be used in some scenarios. Cleanup both functions a bit. The idea here is also that these two functions might be good points to insert more systemd init code later (sd_notify()). Also, statd had a private copy of the daemonization code for unknown reasons...so make it use the generic version instead. Signed-off-by: David H?rdeman <david@hardeman.nu> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Add a reference to nfsidmap(8) on the man pageScott Mayhew2015-01-231-1/+12
| | | | | | | | Even though the 'new' idmapper used by the client has been around for several years, a lot of users seem to be unaware of its existence. Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmap: Use event_initialized() to check if event is initializedSteve Dickson2015-01-231-1/+1
| | | | | | | | Using EVLIST_INIT directly is bound to break. This seems to be a leftover from legacy code. Reported-by: Holger Hoffstatte <holger.hoffstaette@googlemail.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Fix up issue with "make dist"NeilBrown2014-12-071-2/+1
| | | | | | | | | | | | | Add mention of new files, remove mention of old files, and cause "make dist" to create something very similar to the current distributions. systemd files are not currently included in "make dist" and some files generated by "rpcgen" are (though they aren't in official distribution). Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Remove no longer supported flags from man page.Steve Dickson2014-01-201-20/+2
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: consolidate mydaemon() and release_parent() implementationsJeff Layton2013-11-201-79/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | We currently have 2 cut-and-paste versions of this code. One for idmapd and one for svcgssd.[1] The two are basically equivalent but there are some small differences, mostly related to how errors in that function are logged. svcgssd uses printerr() with a priority of 1, which only prints errors if -v was specified. That doesn't seem to be quite right. Daemonizing errors are necessarily fatal and should be logged as such. The one for idmapd uses err(), which always prints to stderr even though we have the xlog facility set up. Since both have xlog configured at this point, log the errors using xlog_err() instead. The only other significant difference I see is that the idmapd version will open "/" if it's unable to open "/dev/null". I believe that however was a holdover from an earlier version of that function that did not error out when we were unable to open a file descriptor. Since the function does that now, I don't believe we need that fallback anymore. [1]: technically, we have a third in statd too, but it's different enough that I don't want to touch it here. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: silence pointless EOF warningJ. Bruce Fields2013-08-191-4/+8
| | | | | | | | | | | | | | RH bz 831455 has a report that repeatedly mounting and unmounting over lo can hit this warning in the EOF case. I suspect that's just normal--I'm not sure of the details, but probably idmapd gets woken up to check for an upcall and then the upcall gets yanked away before idmapd gets a chance to read it. So just skip the warning in that case. I also can't see a reason to reopen. Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Ignore open failures in dirscancb()David Jeffery2013-01-161-1/+2
| | | | | | | | | | | | | From: David Jeffery <djeffery@redhat.com> The daemon "rpc.idmapd" scans the /var/lib/nfs/rpc_pipefs/nfs/ directory periodically looking for NFS client mounts to communicate to. The daemon tried to open communication with a client mount but it disappeared in between looking for directory entries and opening them. NFS mount was umounted just before rpc.idmapd tried to communicate with it. This behavior is usually seen when autofs is configured on the system. Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: allow non-ASCII characters (UTF-8) in NFSv4 domain nameSuresh Jayaraman2012-12-171-23/+5
| | | | | | | | | | | | | | | | | | | | | | The validateascii() check in imconv() maps NFSv4 domain names with non-ASCII characters to 'nobody'. In setups where Active directory or LDAP is used this causes names with UTF-8 characters to being mapped to 'nobody' because of this check. As Bruce Fields puts it: "idmapd doesn't seem like the right place to enforce restrictions on names. Once the system has allowed a name it's too late to be complaining about it here." Replace the validateascii() call in imconv() with a check for null-termination just to be extra-careful and remove the validateascii() function itself as the only user of that function is being removed by this patch. Acked-by: J. Bruce Fields <bfields@fieldses.org> Signed-off-by: Suresh Jayaraman <sjayaraman@suse.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBSJeff Layton2012-01-051-1/+1
| | | | | | | | | | ...as that makes that library get linked into every binary. Also, replace "hardcoded" -lnfsidmap linker flag in Makefiles with a AC_SUBST variable. This fixes a regression introduced in commit d7c64dd. Signed-off-by: Jeff Layton <jlayton@redhat.com>
* autoconf: fix up libevent autoconf testJeff Layton2012-01-051-1/+1
| | | | | | | Have it set LIBEVENT to -levent and use that in the Makefiles instead of hardcoding it. Signed-off-by: Jeff Layton <jlayton@redhat.com>
* rpc.idmapd: Dies with 'I/O possible'Luca Giuzzi2011-10-041-1/+1
| | | | | | | | | | | | We have had problems on some of our machines (all Fedora 14), where rpc.idmapd used to die with an `I/O possible' message at (basically) random times. A strace suggested the issue being in nfsopen() where a signal type is reset before notification is disabled; a signal at just the right time might be the cause of the problem; see https://bugzilla.redhat.com/show_bug.cgi?id=684308 Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: Fix decoding of octal encoded fieldsJan-Marek Glogowski2011-09-201-2/+2
| | | | | | | | | | | | The decoded octal will always be positive and (char) -1 is negative. Any field containing an encoded octal will be rejected. As the encoded value should be an unsigned char, fix the check to reject all values > (unsigned char) -1 = UCHAR_MAX, as this indicate an error in the encoding. Signed-off-by: Jan-Marek Glogowski <glogow@fbihome.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: Move common code into supportSteve Dickson2010-10-135-220/+0
| | | | | | | | | | There are several source files and headers present in the ./utils/idmapd directory which are also usable in a doimapd daemon. Because of this we move that support into the support directory such that it can be shared by both daemons. Signed-off-by: Jim Rees <rees@umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Type of idmap client should be defined by ic_id not ic_clid.Bian Naimeng2010-09-161-4/+4
| | | | | | | | The type of idmap_client is defined by idmap_client.ic_id for nfs, so nfsd should have the same style. Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed warnings from idmapd.cSteve Dickson2010-08-091-10/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | idmapd.c:120: warning: missing initializer idmapd.c:120: warning: (near initialization for 'nfsd_ic[0].ic_event') idmapd.c:121: warning: missing initializer idmapd.c:121: warning: (near initialization for 'nfsd_ic[1].ic_event') idmapd.c: In function 'flush_nfsd_cache': idmapd.c:173: warning: comparison between signed and unsigned integer expressions idmapd.c: In function 'dirscancb': idmapd.c:384: warning: unused parameter 'fd' idmapd.c:384: warning: unused parameter 'which' idmapd.c: In function 'svrreopen': idmapd.c:468: warning: unused parameter 'fd' idmapd.c:468: warning: unused parameter 'which' idmapd.c:468: warning: unused parameter 'data' idmapd.c: In function 'clntscancb': idmapd.c:474: warning: unused parameter 'fd' idmapd.c:474: warning: unused parameter 'which' idmapd.c: In function 'nfsdcb': idmapd.c:488: warning: unused parameter 'fd' idmapd.c: In function 'nfscb': idmapd.c:663: warning: unused parameter 'fd' idmapd.c: In function 'validateascii': idmapd.c:850: warning: comparison between signed and unsigned integer expressions idmapd.c:858: warning: comparison between signed and unsigned integer expressions idmapd.c: In function 'getfield': idmapd.c:916: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed warnings from atomicio.cSteve Dickson2010-08-091-1/+2
| | | | | | | atomicio.c: In function 'atomicio': atomicio.c:48: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson <steved@redhat.com>
* Remove the idmapd.conf man. It now lives in theSteve Dickson2010-01-222-78/+2
| | | | | | libnfsidmap library git tree Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: rearm event handler after error in nfsdcb()Jeff Layton2009-09-141-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A couple of years ago, Bruce committed a patch to make knfsd send unsigned uid's and gid's to idmapd, rather than signed values. Part of that earlier discussion is here: http://linux-nfs.org/pipermail/nfsv4/2007-December/007321.html While this fixed the immediate problem, it doesn't appear that anything was ever done to make idmapd continue working when it gets a bogus upcall. idmapd uses libevent for its main event handling loop. When idmapd gets an upcall from knfsd it will service the request and then rearm the event by calling event_add on the event structure again. When it hits an error though, it returns in most cases w/o rearming the event. That prevents idmapd from servicing any further requests from knfsd. I've made another change too. If an error is encountered while reading the channel file, this patch has it close and reopen the file prior to rearming the event. I've not been able to test this patch directly, but I have tested a backport of it to earlier idmapd code and verified that it did prevent idmapd from hanging when it got a badly formatted upcall from knfsd. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Move idmapd's configuration file parsing routines intoSteve Dickson2009-08-164-963/+2
| | | | | | | the shared libnfs.a library, making them available to\ other daemons and programs. Signed-off-by: Steve Dickson <steved@redhat.com>
* mydaemon: remove closeall() calls from mydaemon()Steve Dickson2009-06-291-3/+6
| | | | | | | | | | | | | | | idmapd and svcgssd have a mydaemon() routine that uses closeall() to close file descriptors. Unfortunately, they aren't using it correctly and it ends up closing the pipe that the child process uses to talk to its parent. Fix this by not using closeall() in this routine and instead, just close the file descriptors that we know need to be closed. If /dev/null can't be opened for some reason, then just have the child exit with a non-zero error. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* In recent Fedora builds, the '-D _FORTIFY_SOURCE=2' compileSteve Dickson2009-03-231-2/+8
| | | | | | | | flag has been set. This cause warnings to be generated when return values from reads/writes (and other calls) are not checked. The patch address those warnings. Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd should tell the user more verbosely if DnotifyLukas Hejtmanek2009-02-181-2/+4
| | | | | | | support is missing in kernel. Signed-off-by: Lukas Hejtmanek <xhejtman@ics.muni.cz> Signed-off-by: Steve Dickson <steved@redhat.com>
* Remove idmapd.confJ. Bruce Fields2008-08-281-10/+0
| | | | | | | | The example idmapd.conf file is kept in libnfsidmap now, which is what's responsible for parsing it anyway. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
* If validateascii is passed a string containing only non-zero 7bitNeilBrown2008-02-261-1/+1
| | | | | | | | | | | | values, then the loop with exit with i == len, and the following test will access beyond the end of the array. So add an extra test to fix this. Found by Marcus Meissner <meissner@novell.com>. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* Remove unnecessary code from idmapd.Kevin Coffman2007-10-153-118/+0
| | | | | | | | | | This patch removes unnecessary code from idmapd. setproctitle is not used anywhere and it can be removed. In addition the kernel section of the nfs_idmap.h header is not used and is out of date and thus is removed. Signed-off-by: David P. Quigley <dpquigl@tycho.nsa.gov> Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Neil Brown <neilb@suse.de>
* Remove old logging implementation for idmapd and rework gssd and idmapd to ↵Kevin Coffman2007-10-151-104/+38
| | | | | | | | | | | | | use the new xlog logging infrastructure. This patch removes all of the old idmap_* logging functions and replaced them with the corresponding xlog functions. In addition that that it also reworks the gssd logging wrappers to use the new xlog_backend. Finally it makes necessary changes to the build files to get the project compiling again. Signed-off-by: David P. Quigley <dpquigl@tycho.nsa.gov> Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Neil Brown <neilb@suse.de>
* Fix more 'prototype' warnings and other warnings.Neil Brown2007-07-304-20/+19
| | | | Signed-off-by: Neil Brown <neilb@suse.de>
* Stop using storage after freeKevin Coffman2007-02-091-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> The previous patch seems to expose a use after free bug in dirscancb. At least, I could reliably reproduce a segfault by doing a bunch of mounts and then unmounting them all. The code uses the following list macro: TAILQ_FOREACH(ic, icq, ic_next) { ...to iterate over all of the ic entries and clean up any that no longer have a corresponding directory in rpc_pipefs. This macro unrolls into: for(ic=icq->tqh_first; ic != NULL; ic=ic->ic_next.tqe_next) { ...but within this loop, we can free ic, and then the for loop can trip over that when it tries to do the iteration. The attached patch works around this by not using the TAILQ_FOREACH macro and saving off the tqe_next pointer prior to the free. Again, this was tested on a patched 1.0.6, but the 1.0.10 code is very similar, and I think the problem exists there as well. Signed-off-by: Neil Brown <neilb@suse.de>
* Fix memory leak in idmapd.Kevin Coffman2007-02-091-3/+8
| | | | | | | | | | | | | | | | Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> There is a pretty nasty memory leak in idmapd in dirscancb(). Some of our customers have reported that idmapd can eat gigabytes of memory on machines with a large number of mounts and unmounts and a long uptime. That function uses scandir(), which malloc's an array of strings, but dirscancb() never frees the strings or the array. The following patch should correct this, but I've not yet tested it on 1.0.10 (only on the RHEL4 1.0.6 version). Still, the code is very similar and I'm fairly certain the problem exists in both versions. Signed-off-by: Neil Brown <neilb@suse.de>
* Don't always use default mapping to "nobody".J. Bruce Fields2006-10-171-17/+35
| | | | | | | | | | | | | | | | | | Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> We've been ignoring all mapping errors and instead mapping to a "nobody" user or group. This is arguably OK for the cases where we're returning a value to the user (so, id->name mapping on the server or name->id mapping on the client). But it's a disaster in the other direction (id->name on the server or id->name on the client): for example, a chown to an unknown user should *not* automatically be translated into a succesful chown to "nobody". This patch fixes that problem on the server side. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
* Merge branch 'master' of git://linux-nfs.org/nfs-utilsGreg Banks2006-07-032-7/+16
|\
| * Further coverity related cleanups.Neil Brown2006-06-231-2/+5
| | | | | | | | | | Greg Banks suggested some variations, particularly improved use of xmalloc/xstrdup functions. Thanks.
| * Fix various issues discovered by CoverityNeil Brown2006-06-232-6/+12
| | | | | | | | Thanks to Michael Halcrow for finding them.
* | Fix a number of the easier compile warnings: unused variables,Greg Banks2006-06-221-3/+4
| | | | | | | | unused labels, constness, signedness.
* | Detect presence of nfs4_set_debug() in libnfsidmap andGreg Banks2006-06-221-0/+2
|/ | | | don't bother calling it if it's missing.
* Minor man page tidyupNeil Brown2006-06-051-6/+6
|
* Remove **/Makefile.in, aclocal.m4, configure, andNeil Brown2006-04-171-659/+0
| | | | | | support/include/config.h.in from source control These are auto autogenerated by aclocal -I aclocal ; autoheader ; automake ; autoconf
* 2006-04-10 NeilBrown <neilb@suse.de>neilbrown2006-04-101-2/+3
| | | | | | | | | | | | | Various paranoia checks: gssd_proc.c: pass max_field sizes to sscanf to avoid buffer overflow svcgssd_proc.c: range_check name.length, to ensure name.length+1 doesn't wrap idmapd.c(nfsdcb): make sure at least one byte is read before zeroing the last byte that was read, otherwise memory corruption is possible. Found by SuSE security audit.