1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../nfs.rc
cleanup;
## Start and create a volume
TEST glusterd
TEST pidof glusterd
TEST $CLI volume info;
TEST $CLI volume create $V0 $H0:$B0/$V0
TEST $CLI volume start $V0;
## Wait for volume to register with rpc.mountd
EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available;
## Mount NFS
TEST mount_nfs $H0:/$V0 $N0 nolock;
mkdir $N0/dir1;
mkdir $N0/dir2;
pushd $N0/ ;
##link created using relative path
ln -s dir1 symlink1;
##relative path contains ".."
ln -s ../dir1 dir2/symlink2;
##link created using absolute path
ln -s $N0/dir1 symlink3;
##link pointing to another symlinks
ln -s symlink1 symlink4
ln -s symlink3 symlink5
##dead links
ln -s does/not/exist symlink6
##link which contains ".." points out of glusterfs
ln -s ../../ symlink7
##links pointing to unauthorized area
ln -s .glusterfs symlink8
popd ;
##Umount the volume
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount and umount NFS via directory
TEST mount_nfs $H0:/$V0/dir1 $N0 nolock;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount and umount NFS via symlink1
TEST mount_nfs $H0:/$V0/symlink1 $N0 nolock;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount and umount NFS via symlink2
TEST mount_nfs $H0:/$V0/dir2/symlink2 $N0 nolock;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount NFS via symlink3 should fail
TEST ! mount_nfs $H0:/$V0/symlink3 $N0 nolock;
## Mount and umount NFS via symlink4
TEST mount_nfs $H0:/$V0/symlink4 $N0 nolock;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount NFS via symlink5 should fail
TEST ! mount_nfs $H0:/$V0/symlink5 $N0 nolock;
## Mount NFS via symlink6 should fail
TEST ! mount_nfs $H0:/$V0/symlink6 $N0 nolock;
## Mount NFS via symlink7 should fail
TEST ! mount_nfs $H0:/$V0/symlink7 $N0 nolock;
## Mount NFS via symlink8 should fail
TEST ! mount_nfs $H0:/$V0/symlink8 $N0 nolock;
##Similar check for udp mount
$CLI volume stop $V0
TEST $CLI volume set $V0 nfs.mount-udp on
$CLI volume start $V0
## Wait for volume to register with rpc.mountd
EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available;
## Mount and umount NFS via directory
TEST mount_nfs $H0:/$V0/dir1 $N0 nolock,mountproto=udp,proto=tcp;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount and umount NFS via symlink1
TEST mount_nfs $H0:/$V0/symlink1 $N0 nolock,mountproto=udp,proto=tcp;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount and umount NFS via symlink2
TEST mount_nfs $H0:/$V0/dir2/symlink2 $N0 nolock,mountproto=udp,proto=tcp;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount NFS via symlink3 should fail
TEST ! mount_nfs $H0:/$V0/symlink3 $N0 nolock,mountproto=udp,proto=tcp;
## Mount and umount NFS via symlink4
TEST mount_nfs $H0:/$V0/symlink4 $N0 nolock,mountproto=udp,proto=tcp;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0
## Mount NFS via symlink5 should fail
TEST ! mount_nfs $H0:/$V0/symlink5 $N0 nolock,mountproto=udp,proto=tcp;
## Mount NFS via symlink6 should fail
TEST ! mount_nfs $H0:/$V0/symlink6 $N0 nolock,mountproto=udp,proto=tcp;
##symlink7 is not check here, because in udp mount ../../ resolves into root '/'
## Mount NFS via symlink8 should fail
TEST ! mount_nfs $H0:/$V0/symlink8 $N0 nolock,mountproto=udp,proto=tcp;
rm -rf $H0:$B0/
cleanup;
|