mountd: Honor the no_root_squash flag on pseudo roots
authorJ. Bruce Fields <bfields@redhat.com>
Tue, 29 May 2012 18:40:38 +0000 (14:40 -0400)
committerSteve Dickson <steved@redhat.com>
Tue, 29 May 2012 18:44:18 +0000 (14:44 -0400)
From: "J. Bruce Fields" <bfields@redhat.com>

If root squashing is turned off on a export that
has multiple directories, the parent directories
of the pseudo exports that's built, also needs to
have root squashing turned off.

Tested-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/mountd/v4root.c

index 708eb61..726b50d 100644 (file)
@@ -62,6 +62,8 @@ void set_pseudofs_security(struct exportent *pseudo, struct exportent *source)
 
        if (source->e_flags & NFSEXP_INSECURE_PORT)
                pseudo->e_flags |= NFSEXP_INSECURE_PORT;
+       if ((source->e_flags & NFSEXP_ROOTSQUASH) == 0)
+               pseudo->e_flags &= ~NFSEXP_ROOTSQUASH;
        for (se = source->e_secinfo; se->flav; se++) {
                struct sec_entry *new;
 
@@ -92,7 +94,8 @@ v4root_create(char *path, nfs_export *export)
        exp = export_create(&eep, 0);
        if (exp == NULL)
                return NULL;
-       xlog(D_CALL, "v4root_create: path '%s'", exp->m_export.e_path);
+       xlog(D_CALL, "v4root_create: path '%s' flags 0x%x", 
+               exp->m_export.e_path, exp->m_export.e_flags);
        return &exp->m_export;
 }