summaryrefslogtreecommitdiffstats
path: root/tests/bugs/nfs/bug-1157223-symlink-mounting.t
blob: 740d638193d2112d02d1bc68c4972d60811b2118 (plain)
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 set $V0 nfs.disable false
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;