git: 4eee1fcdfc77 - stable/13 - nfsuserd: Improve failure message when running in a jail
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 12 Jun 2023 01:24:32 UTC
The branch stable/13 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=4eee1fcdfc778640b93d3ba897d3206fa04484ee commit 4eee1fcdfc778640b93d3ba897d3206fa04484ee Author: Rick Macklem <rmacklem@FreeBSD.org> AuthorDate: 2023-05-29 20:38:07 +0000 Commit: Rick Macklem <rmacklem@FreeBSD.org> CommitDate: 2023-06-12 01:23:37 +0000 nfsuserd: Improve failure message when running in a jail If a jail is not correctly configured to run nfsd(8) in the jail, nfsuserd(8) cannot run. This patch improves the failure message for this case. (cherry picked from commit a94018e2003b83c10e8fb814f7a8d47e2513da95) --- usr.sbin/nfsuserd/nfsuserd.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/usr.sbin/nfsuserd/nfsuserd.c b/usr.sbin/nfsuserd/nfsuserd.c index 1e99f806637d..3444b16fea78 100644 --- a/usr.sbin/nfsuserd/nfsuserd.c +++ b/usr.sbin/nfsuserd/nfsuserd.c @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include <sys/mount.h> #include <sys/socket.h> #include <sys/socketvar.h> +#include <sys/sysctl.h> #include <sys/time.h> #include <sys/ucred.h> #include <sys/vnode.h> @@ -127,7 +128,8 @@ main(int argc, char *argv[]) #ifdef INET6 struct sockaddr_in6 *sin6; #endif - int s; + int jailed, s; + size_t jailed_size; if (modfind("nfscommon") < 0) { /* Not present in kernel, try loading it */ @@ -326,10 +328,19 @@ main(int argc, char *argv[]) #else if (nfssvc(NFSSVC_NFSUSERDPORT | NFSSVC_NEWSTRUCT, &nargs) < 0) { if (errno == EPERM) { - fprintf(stderr, - "Can't start nfsuserd when already running"); - fprintf(stderr, - " If not running, use the -force option.\n"); + jailed = 0; + jailed_size = sizeof(jailed); + sysctlbyname("security.jail.jailed", &jailed, + &jailed_size, NULL, 0); + if (jailed != 0) { + fprintf(stderr, "Cannot start nfsuserd. " + "allow.nfsd might not be configured\n"); + } else { + fprintf(stderr, "Cannot start nfsuserd " + "when already running."); + fprintf(stderr, " If not running, " + "use the -force option.\n"); + } } else { fprintf(stderr, "Can't do nfssvc() to add port\n"); }