]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - tools/regression/fstest/tests/unlink/11.t
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / tools / regression / fstest / tests / unlink / 11.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="unlink returns EACCES or EPERM if the directory containing the file is marked sticky, and neither the containing directory nor the file to be removed are owned by the effective user ID"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 echo "1..33"
10
11 n0=`namegen`
12 n1=`namegen`
13 n2=`namegen`
14
15 expect 0 mkdir ${n2} 0755
16 cdir=`pwd`
17 cd ${n2}
18
19 expect 0 mkdir ${n0} 0755
20 expect 0 chown ${n0} 65534 65534
21 expect 0 chmod ${n0} 01777
22
23 # User owns both: the sticky directory and the file to be removed.
24 expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644
25 expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
26 # User owns the file to be removed, but doesn't own the sticky directory.
27 expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644
28 expect 0 -u 65533 -g 65533 unlink ${n0}/${n1}
29 # User owns the sticky directory, but doesn't own the file to be removed.
30 expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644
31 expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
32 # User doesn't own the sticky directory nor the file to be removed.
33 expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644
34 expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1}
35 expect 0 unlink ${n0}/${n1}
36
37 # User owns both: the sticky directory and the fifo to be removed.
38 expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644
39 expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
40 # User owns the fifo to be removed, but doesn't own the sticky directory.
41 expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644
42 expect 0 -u 65533 -g 65533 unlink ${n0}/${n1}
43 # User owns the sticky directory, but doesn't own the fifo to be removed.
44 expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644
45 expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
46 # User doesn't own the sticky directory nor the fifo to be removed.
47 expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644
48 expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1}
49 expect 0 unlink ${n0}/${n1}
50
51 # User owns both: the sticky directory and the symlink to be removed.
52 expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1}
53 expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
54 # User owns the symlink to be removed, but doesn't own the sticky directory.
55 expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1}
56 expect 0 -u 65533 -g 65533 unlink ${n0}/${n1}
57 # User owns the sticky directory, but doesn't own the symlink to be removed.
58 expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1}
59 expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
60 # User doesn't own the sticky directory nor the symlink to be removed.
61 expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1}
62 expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1}
63 expect 0 unlink ${n0}/${n1}
64
65 expect 0 rmdir ${n0}
66
67 cd ${cdir}
68 expect 0 rmdir ${n2}