• Weston Andros Adamson's avatar
    NFSv3: match sec= flavor against server list · d497ab97
    Weston Andros Adamson authored
    Older linux clients match the 'sec=' mount option flavor against the server's
    flavor list (if available) and return EPERM if the specified flavor or AUTH_NULL
    (which "matches" any flavor) is not found.
    
    Recent changes skip this step and allow the vfs mount even though no operations
    will succeed, creating a 'dud' mount.
    
    This patch reverts back to the old behavior of matching specified flavors
    against the server list and also returns EPERM when no sec= is specified and
    none of the flavors returned by the server are supported by the client.
    
    Example of behavior change:
    
    the server's /etc/exports:
    
    /export/krb5      *(sec=krb5,rw,no_root_squash)
    
    old client behavior:
    
    $ uname -a
    Linux one.apikia.fake 3.8.8-202.fc18.x86_64 #1 SMP Wed Apr 17 23:25:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    $ sudo mount -v -o sec=sys,vers=3 zero:/export/krb5 /mnt
    mount.nfs: timeout set for Sun May  5 17:32:04 2013
    mount.nfs: trying text-based options 'sec=sys,vers=3,addr=192.168.100.10'
    mount.nfs: prog 100003, trying vers=3, prot=6
    mount.nfs: trying 192.168.100.10 prog 100003 vers 3 prot TCP port 2049
    mount.nfs: prog 100005, trying vers=3, prot=17
    mount.nfs: trying 192.168.100.10 prog 100005 vers 3 prot UDP port 20048
    mount.nfs: mount(2): Permission denied
    mount.nfs: access denied by server while mounting zero:/export/krb5
    
    recently changed behavior:
    
    $ uname -a
    Linux one.apikia.fake 3.9.0-testing+ #2 SMP Fri May 3 20:29:32 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
    $ sudo mount -v -o sec=sys,vers=3 zero:/export/krb5 /mnt
    mount.nfs: timeout set for Sun May  5 17:37:17 2013
    mount.nfs: trying text-based options 'sec=sys,vers=3,addr=192.168.100.10'
    mount.nfs: prog 100003, trying vers=3, prot=6
    mount.nfs: trying 192.168.100.10 prog 100003 vers 3 prot TCP port 2049
    mount.nfs: prog 100005, trying vers=3, prot=17
    mount.nfs: trying 192.168.100.10 prog 100005 vers 3 prot UDP port 20048
    $ ls /mnt
    ls: cannot open directory /mnt: Permission denied
    $ sudo ls /mnt
    ls: cannot open directory /mnt: Permission denied
    $ sudo df /mnt
    df: ‘/mnt’: Permission denied
    df: no file systems processed
    $ sudo umount /mnt
    $
    Signed-off-by: default avatarWeston Andros Adamson <dros@netapp.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    d497ab97
super.c 70.1 KB