NFS subdir mount does not respect nfs.rpc-auth-reject option in the volume. If the volume is being mounted, then it would validate the AUTH by mnt3_check_client_net() but if the client is mounting a subdir, the control takes a different code path i.e. mnt3_find_export() which does not bother about the AUTH. FIX: Enforce the AUTH check in mnt3_parse_dir_exports() which is invoked by mnt3_find_export() for subdir mount. Change-Id: I6fdd3e6bd6cbd32b0d9ca620cc4c30fdaff9ca30 BUG: 1049225 Signed-off-by: Santosh Kumar Pradhan <spradhan@redhat.com> Reviewed-on: http://review.gluster.org/6655 Reviewed-by: Niels de Vos <ndevos@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
124 lines
3.7 KiB
Bash
Executable File
124 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
. $(dirname $0)/../include.rc
|
|
. $(dirname $0)/../nfs.rc
|
|
|
|
cleanup;
|
|
|
|
#1
|
|
TEST glusterd
|
|
TEST pidof glusterd
|
|
|
|
TEST $CLI volume create $V0 $H0:$B0/$V0
|
|
TEST $CLI volume start $V0
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr $H0:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
# based on ip addresses (1-4)
|
|
# case 1: allow only localhost ip
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-allow 127.0.0.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
# case 2: allow only non-localhost ip
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-allow 192.168.1.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
#11
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST $CLI volume reset --mode=script $V0
|
|
# case 3: reject only localhost ip
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-reject 127.0.0.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
|
|
# case 4: reject only non-localhost ip
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-reject 192.168.1.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
|
|
|
|
# NEED TO CHECK BOTH IP AND NAME BASED AUTH.
|
|
# CASES WITH NFS.ADDR-NAMELOOKUP ON (5-12)
|
|
TEST $CLI volume reset --mode=script $V0
|
|
TEST $CLI volume set $V0 nfs.addr-namelookup on
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
#20
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
# case 5: allow only localhost
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-allow localhost
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
# case 6: allow only somehost
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-allow somehost
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
|
|
# case 7: reject only localhost
|
|
TEST $CLI volume reset --mode=script $V0
|
|
TEST $CLI volume set $V0 nfs.addr-namelookup on
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-reject localhost
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
#30
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
|
|
# case 8: reject only somehost
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-reject somehost
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
# based on ip addresses: repeat of cases 1-4
|
|
# case 9: allow only localhost ip
|
|
TEST $CLI volume reset --mode=script $V0
|
|
TEST $CLI volume set $V0 nfs.addr-namelookup on
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-allow 127.0.0.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST mkdir -p $N0/subdir
|
|
TEST umount $N0
|
|
|
|
# case 10: allow a non-localhost ip
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-allow 192.168.1.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
#41
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
|
|
# case 11: reject only localhost ip
|
|
TEST $CLI volume reset --mode=script $V0
|
|
TEST $CLI volume set $V0 nfs.addr-namelookup on
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-reject 127.0.0.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0/subdir $N0
|
|
|
|
# case 12: reject only non-localhost ip
|
|
TEST $CLI volume set $V0 nfs.rpc-auth-reject 192.168.1.1
|
|
EXPECT_WITHIN 20 1 is_nfs_export_available
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0
|
|
TEST umount $N0
|
|
|
|
TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0/subdir $N0
|
|
TEST umount $N0
|
|
|
|
TEST $CLI volume stop --mode=script $V0
|
|
#52
|
|
TEST $CLI volume delete --mode=script $V0
|
|
cleanup
|