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