00.t revision 196948
1#!/bin/sh
2# $FreeBSD: head/tools/regression/fstest/tests/granular/00.t 196948 2009-09-07 19:40:22Z trasz $
3
4desc="NFSv4 granular permissions checking - WRITE_DATA vs APPEND_DATA on directories"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9echo "1..49"
10
11n0=`namegen`
12n1=`namegen`
13n2=`namegen`
14n3=`namegen`
15
16expect 0 mkdir ${n2} 0755
17expect 0 mkdir ${n3} 0777
18cdir=`pwd`
19cd ${n2}
20
21# Tests 2..7 - check out whether root user can do stuff.
22# Can create files?
23expect 0 create ${n0} 0644
24
25# Can create symlinks?
26expect 0 link ${n0} ${n1}
27expect 0 unlink ${n1}
28expect 0 unlink ${n0}
29
30# Can create directories?
31expect 0 mkdir ${n0} 0755
32expect 0 rmdir ${n0}
33
34# Check whether user 65534 is permitted to create and remove
35# files, but not subdirectories.
36expect 0 prependacl . user:65534:write_data::allow,user:65534:append_data::deny
37
38# Can create files?
39expect 0 -u 65534 -g 65534 create ${n0} 0644
40
41# Can create symlinks?
42expect 0 -u 65534 -g 65534 link ${n0} ${n1}
43expect 0 -u 65534 -g 65534 unlink ${n1}
44expect 0 -u 65534 -g 65534 unlink ${n0}
45
46# Can create directories?
47expect EACCES -u 65534 -g 65534 mkdir ${n0} 0755
48expect ENOENT -u 65534 -g 65534 rmdir ${n0}
49expect 0 mkdir ${n0} 0755
50expect 0 -u 65534 -g 65534 rmdir ${n0}
51
52# Can move files from other directory?
53expect 0 create ../${n3}/${n1} 0644
54expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
55
56# Can move files from other directory overwriting existing files?
57expect 0 create ../${n3}/${n1} 0644
58expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
59
60expect 0 -u 65534 -g 65534 unlink ${n0}
61
62# Can move directories from other directory?
63expect 0 mkdir ../${n3}/${n1} 0777
64expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
65
66# Can move directories from other directory overwriting existing directory?
67expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
68expect 0 -u 65534 -g 65534 rmdir ../${n3}/${n1}
69
70# Check whether user 65534 is permitted to create
71# subdirectories, but not files - and to remove neither of them.
72expect 0 prependacl . user:65534:write_data::deny,user:65534:append_data::allow
73
74# Can create files?
75expect EACCES -u 65534 -g 65534 create ${n0} 0644
76
77# Can create symlinks?
78expect 0 create ${n0} 0644
79expect EACCES -u 65534 -g 65534 link ${n0} ${n1}
80expect ENOENT -u 65534 -g 65534 unlink ${n1}
81expect EACCES -u 65534 -g 65534 unlink ${n0}
82expect 0 unlink ${n0}
83
84# Can create directories?
85expect 0 -u 65534 -g 65534 mkdir ${n0} 0755
86expect EACCES -u 65534 -g 65534 rmdir ${n0}
87expect 0 rmdir ${n0}
88
89# Can move files from other directory?
90expect 0 create ../${n3}/${n1} 0644
91expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
92
93# Can move files from other directory overwriting existing files?
94expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
95expect 0 -u 65534 -g 65534 unlink ../${n3}/${n1}
96
97# Can move directories from other directory?
98expect 0 mkdir ../${n3}/${n1} 0777
99expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
100
101# Can move directories from other directory overwriting existing directory?
102expect 0 mkdir ../${n3}/${n1} 0777
103expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
104expect 0 prependacl . user:65534:delete_child::allow
105expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
106expect 0 -u 65534 -g 65534 rmdir ${n0}
107
108cd ${cdir}
109expect 0 rmdir ${n2}
110expect 0 rmdir ${n3}
111