Deleted Added
full compact
07.t (166065) 07.t (210984)
1#!/bin/sh
1#!/bin/sh
2# $FreeBSD: head/tools/regression/fstest/tests/rename/07.t 166065 2007-01-17 01:42:12Z pjd $
2# $FreeBSD: head/tools/regression/fstest/tests/rename/07.t 210984 2010-08-06 23:58:54Z pjd $
3
4desc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9require chflags
10
3
4desc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9require chflags
10
11echo "1..106"
11case "${os}:${fs}" in
12FreeBSD:ZFS)
13 flags1="SF_IMMUTABLE SF_APPEND"
14 flags2="SF_NOUNLINK"
15 echo "1..110"
16 ;;
17FreeBSD:UFS)
18 flags1="SF_IMMUTABLE SF_APPEND UF_IMMUTABLE UF_APPEND"
19 flags2="SF_NOUNLINK UF_NOUNLINK"
20 echo "1..182"
21 ;;
22*)
23 quick_exit
24esac
12
13n0=`namegen`
14n1=`namegen`
15n2=`namegen`
16
17expect 0 mkdir ${n0} 0755
18
19expect 0 create ${n0}/${n1} 0644
25
26n0=`namegen`
27n1=`namegen`
28n2=`namegen`
29
30expect 0 mkdir ${n0} 0755
31
32expect 0 create ${n0}/${n1} 0644
20for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
33for flag in ${flags1}; do
21 expect 0 chflags ${n0} ${flag}
22 expect ${flag} stat ${n0} flags
34 expect 0 chflags ${n0} ${flag}
35 expect ${flag} stat ${n0} flags
36 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
23 expect EPERM rename ${n0}/${n1} ${n2}
37 expect EPERM rename ${n0}/${n1} ${n2}
38 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
39 expect ENOENT rename ${n2} ${n0}/${n1}
24done
25expect 0 chflags ${n0} none
26expect 0 unlink ${n0}/${n1}
27
28expect 0 mkdir ${n0}/${n1} 0755
40done
41expect 0 chflags ${n0} none
42expect 0 unlink ${n0}/${n1}
43
44expect 0 mkdir ${n0}/${n1} 0755
29for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
45for flag in ${flags1}; do
30 expect 0 chflags ${n0} ${flag}
31 expect ${flag} stat ${n0} flags
46 expect 0 chflags ${n0} ${flag}
47 expect ${flag} stat ${n0} flags
48 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
32 expect EPERM rename ${n0}/${n1} ${n2}
49 expect EPERM rename ${n0}/${n1} ${n2}
50 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
51 expect ENOENT rename ${n2} ${n0}/${n1}
33done
34expect 0 chflags ${n0} none
35expect 0 rmdir ${n0}/${n1}
36
37expect 0 mkfifo ${n0}/${n1} 0644
52done
53expect 0 chflags ${n0} none
54expect 0 rmdir ${n0}/${n1}
55
56expect 0 mkfifo ${n0}/${n1} 0644
38for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
57for flag in ${flags1}; do
39 expect 0 chflags ${n0} ${flag}
40 expect ${flag} stat ${n0} flags
58 expect 0 chflags ${n0} ${flag}
59 expect ${flag} stat ${n0} flags
60 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
41 expect EPERM rename ${n0}/${n1} ${n2}
61 expect EPERM rename ${n0}/${n1} ${n2}
62 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
63 expect ENOENT rename ${n2} ${n0}/${n1}
42done
43expect 0 chflags ${n0} none
44expect 0 unlink ${n0}/${n1}
45
64done
65expect 0 chflags ${n0} none
66expect 0 unlink ${n0}/${n1}
67
68expect 0 mknod ${n0}/${n1} c 0644 1 2
69for flag in ${flags1}; do
70 expect 0 chflags ${n0} ${flag}
71 expect ${flag} stat ${n0} flags
72 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
73 expect EPERM rename ${n0}/${n1} ${n2}
74 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
75 expect ENOENT rename ${n2} ${n0}/${n1}
76done
77expect 0 chflags ${n0} none
78expect 0 unlink ${n0}/${n1}
79
80expect 0 bind ${n0}/${n1}
81for flag in ${flags1}; do
82 expect 0 chflags ${n0} ${flag}
83 expect ${flag} stat ${n0} flags
84 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
85 expect EPERM rename ${n0}/${n1} ${n2}
86 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
87 expect ENOENT rename ${n2} ${n0}/${n1}
88done
89expect 0 chflags ${n0} none
90expect 0 unlink ${n0}/${n1}
91
46expect 0 symlink ${n2} ${n0}/${n1}
92expect 0 symlink ${n2} ${n0}/${n1}
47for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
93for flag in ${flags1}; do
48 expect 0 chflags ${n0} ${flag}
49 expect ${flag} stat ${n0} flags
94 expect 0 chflags ${n0} ${flag}
95 expect ${flag} stat ${n0} flags
96 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
50 expect EPERM rename ${n0}/${n1} ${n2}
97 expect EPERM rename ${n0}/${n1} ${n2}
98 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
99 expect ENOENT rename ${n2} ${n0}/${n1}
51done
52expect 0 chflags ${n0} none
53expect 0 unlink ${n0}/${n1}
54
55expect 0 create ${n0}/${n1} 0644
100done
101expect 0 chflags ${n0} none
102expect 0 unlink ${n0}/${n1}
103
104expect 0 create ${n0}/${n1} 0644
56for flag in SF_NOUNLINK UF_NOUNLINK; do
105for flag in ${flags2}; do
57 expect 0 chflags ${n0} ${flag}
58 expect ${flag} stat ${n0} flags
59 expect 0 rename ${n0}/${n1} ${n2}
60 expect 0 rename ${n2} ${n0}/${n1}
61done
62expect 0 chflags ${n0} none
63expect 0 unlink ${n0}/${n1}
64
65expect 0 mkdir ${n0}/${n1} 0755
106 expect 0 chflags ${n0} ${flag}
107 expect ${flag} stat ${n0} flags
108 expect 0 rename ${n0}/${n1} ${n2}
109 expect 0 rename ${n2} ${n0}/${n1}
110done
111expect 0 chflags ${n0} none
112expect 0 unlink ${n0}/${n1}
113
114expect 0 mkdir ${n0}/${n1} 0755
66for flag in SF_NOUNLINK UF_NOUNLINK; do
115for flag in ${flags2}; do
67 expect 0 chflags ${n0} ${flag}
68 expect ${flag} stat ${n0} flags
69 expect 0 rename ${n0}/${n1} ${n2}
70 expect 0 rename ${n2} ${n0}/${n1}
71done
72expect 0 chflags ${n0} none
73expect 0 rmdir ${n0}/${n1}
74
75expect 0 mkfifo ${n0}/${n1} 0644
116 expect 0 chflags ${n0} ${flag}
117 expect ${flag} stat ${n0} flags
118 expect 0 rename ${n0}/${n1} ${n2}
119 expect 0 rename ${n2} ${n0}/${n1}
120done
121expect 0 chflags ${n0} none
122expect 0 rmdir ${n0}/${n1}
123
124expect 0 mkfifo ${n0}/${n1} 0644
76for flag in SF_NOUNLINK UF_NOUNLINK; do
125for flag in ${flags2}; do
77 expect 0 chflags ${n0} ${flag}
78 expect ${flag} stat ${n0} flags
79 expect 0 rename ${n0}/${n1} ${n2}
80 expect 0 rename ${n2} ${n0}/${n1}
81done
82expect 0 chflags ${n0} none
83expect 0 unlink ${n0}/${n1}
84
126 expect 0 chflags ${n0} ${flag}
127 expect ${flag} stat ${n0} flags
128 expect 0 rename ${n0}/${n1} ${n2}
129 expect 0 rename ${n2} ${n0}/${n1}
130done
131expect 0 chflags ${n0} none
132expect 0 unlink ${n0}/${n1}
133
134expect 0 mknod ${n0}/${n1} c 0644 1 2
135for flag in ${flags2}; do
136 expect 0 chflags ${n0} ${flag}
137 expect ${flag} stat ${n0} flags
138 expect 0 rename ${n0}/${n1} ${n2}
139 expect 0 rename ${n2} ${n0}/${n1}
140done
141expect 0 chflags ${n0} none
142expect 0 unlink ${n0}/${n1}
143
144expect 0 bind ${n0}/${n1}
145for flag in ${flags2}; do
146 expect 0 chflags ${n0} ${flag}
147 expect ${flag} stat ${n0} flags
148 expect 0 rename ${n0}/${n1} ${n2}
149 expect 0 rename ${n2} ${n0}/${n1}
150done
151expect 0 chflags ${n0} none
152expect 0 unlink ${n0}/${n1}
153
85expect 0 symlink ${n2} ${n0}/${n1}
154expect 0 symlink ${n2} ${n0}/${n1}
86for flag in SF_NOUNLINK UF_NOUNLINK; do
155for flag in ${flags2}; do
87 expect 0 chflags ${n0} ${flag}
88 expect ${flag} stat ${n0} flags
89 expect 0 rename ${n0}/${n1} ${n2}
90 expect 0 rename ${n2} ${n0}/${n1}
91done
92expect 0 chflags ${n0} none
93expect 0 unlink ${n0}/${n1}
94
95expect 0 rmdir ${n0}
156 expect 0 chflags ${n0} ${flag}
157 expect ${flag} stat ${n0} flags
158 expect 0 rename ${n0}/${n1} ${n2}
159 expect 0 rename ${n2} ${n0}/${n1}
160done
161expect 0 chflags ${n0} none
162expect 0 unlink ${n0}/${n1}
163
164expect 0 rmdir ${n0}