00.t revision 196948
1196948Strasz#!/bin/sh
2196948Strasz# $FreeBSD: head/tools/regression/fstest/tests/granular/00.t 196948 2009-09-07 19:40:22Z trasz $
3196948Strasz
4196948Straszdesc="NFSv4 granular permissions checking - WRITE_DATA vs APPEND_DATA on directories"
5196948Strasz
6196948Straszdir=`dirname $0`
7196948Strasz. ${dir}/../misc.sh
8196948Strasz
9196948Straszecho "1..49"
10196948Strasz
11196948Straszn0=`namegen`
12196948Straszn1=`namegen`
13196948Straszn2=`namegen`
14196948Straszn3=`namegen`
15196948Strasz
16196948Straszexpect 0 mkdir ${n2} 0755
17196948Straszexpect 0 mkdir ${n3} 0777
18196948Straszcdir=`pwd`
19196948Straszcd ${n2}
20196948Strasz
21196948Strasz# Tests 2..7 - check out whether root user can do stuff.
22196948Strasz# Can create files?
23196948Straszexpect 0 create ${n0} 0644
24196948Strasz
25196948Strasz# Can create symlinks?
26196948Straszexpect 0 link ${n0} ${n1}
27196948Straszexpect 0 unlink ${n1}
28196948Straszexpect 0 unlink ${n0}
29196948Strasz
30196948Strasz# Can create directories?
31196948Straszexpect 0 mkdir ${n0} 0755
32196948Straszexpect 0 rmdir ${n0}
33196948Strasz
34196948Strasz# Check whether user 65534 is permitted to create and remove
35196948Strasz# files, but not subdirectories.
36196948Straszexpect 0 prependacl . user:65534:write_data::allow,user:65534:append_data::deny
37196948Strasz
38196948Strasz# Can create files?
39196948Straszexpect 0 -u 65534 -g 65534 create ${n0} 0644
40196948Strasz
41196948Strasz# Can create symlinks?
42196948Straszexpect 0 -u 65534 -g 65534 link ${n0} ${n1}
43196948Straszexpect 0 -u 65534 -g 65534 unlink ${n1}
44196948Straszexpect 0 -u 65534 -g 65534 unlink ${n0}
45196948Strasz
46196948Strasz# Can create directories?
47196948Straszexpect EACCES -u 65534 -g 65534 mkdir ${n0} 0755
48196948Straszexpect ENOENT -u 65534 -g 65534 rmdir ${n0}
49196948Straszexpect 0 mkdir ${n0} 0755
50196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0}
51196948Strasz
52196948Strasz# Can move files from other directory?
53196948Straszexpect 0 create ../${n3}/${n1} 0644
54196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
55196948Strasz
56196948Strasz# Can move files from other directory overwriting existing files?
57196948Straszexpect 0 create ../${n3}/${n1} 0644
58196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
59196948Strasz
60196948Straszexpect 0 -u 65534 -g 65534 unlink ${n0}
61196948Strasz
62196948Strasz# Can move directories from other directory?
63196948Straszexpect 0 mkdir ../${n3}/${n1} 0777
64196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
65196948Strasz
66196948Strasz# Can move directories from other directory overwriting existing directory?
67196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
68196948Straszexpect 0 -u 65534 -g 65534 rmdir ../${n3}/${n1}
69196948Strasz
70196948Strasz# Check whether user 65534 is permitted to create
71196948Strasz# subdirectories, but not files - and to remove neither of them.
72196948Straszexpect 0 prependacl . user:65534:write_data::deny,user:65534:append_data::allow
73196948Strasz
74196948Strasz# Can create files?
75196948Straszexpect EACCES -u 65534 -g 65534 create ${n0} 0644
76196948Strasz
77196948Strasz# Can create symlinks?
78196948Straszexpect 0 create ${n0} 0644
79196948Straszexpect EACCES -u 65534 -g 65534 link ${n0} ${n1}
80196948Straszexpect ENOENT -u 65534 -g 65534 unlink ${n1}
81196948Straszexpect EACCES -u 65534 -g 65534 unlink ${n0}
82196948Straszexpect 0 unlink ${n0}
83196948Strasz
84196948Strasz# Can create directories?
85196948Straszexpect 0 -u 65534 -g 65534 mkdir ${n0} 0755
86196948Straszexpect EACCES -u 65534 -g 65534 rmdir ${n0}
87196948Straszexpect 0 rmdir ${n0}
88196948Strasz
89196948Strasz# Can move files from other directory?
90196948Straszexpect 0 create ../${n3}/${n1} 0644
91196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
92196948Strasz
93196948Strasz# Can move files from other directory overwriting existing files?
94196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
95196948Straszexpect 0 -u 65534 -g 65534 unlink ../${n3}/${n1}
96196948Strasz
97196948Strasz# Can move directories from other directory?
98196948Straszexpect 0 mkdir ../${n3}/${n1} 0777
99196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
100196948Strasz
101196948Strasz# Can move directories from other directory overwriting existing directory?
102196948Straszexpect 0 mkdir ../${n3}/${n1} 0777
103196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
104196948Straszexpect 0 prependacl . user:65534:delete_child::allow
105196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0}
106196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0}
107196948Strasz
108196948Straszcd ${cdir}
109196948Straszexpect 0 rmdir ${n2}
110196948Straszexpect 0 rmdir ${n3}
111