05.t revision 196948
1196948Strasz#!/bin/sh 2196948Strasz# $FreeBSD: head/tools/regression/fstest/tests/granular/05.t 196948 2009-09-07 19:40:22Z trasz $ 3196948Strasz 4196948Straszdesc="NFSv4 granular permissions checking - DELETE and DELETE_CHILD with directories" 5196948Strasz 6196948Straszdir=`dirname $0` 7196948Strasz. ${dir}/../misc.sh 8196948Strasz 9196948Straszecho "1..68" 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# Unlink allowed on writable directory. 22196948Straszexpect 0 mkdir ${n0} 0755 23196948Straszexpect EACCES -u 65534 -g 65534 rmdir ${n0} 24196948Straszexpect 0 prependacl . user:65534:write_data::allow 25196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 26196948Strasz 27196948Strasz# Moving directory elsewhere allowed on writable directory. 28196948Straszexpect 0 mkdir ${n0} 0777 29196948Straszexpect 0 prependacl . user:65534:write_data::deny 30196948Straszexpect EACCES -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} 31196948Straszexpect 0 prependacl . user:65534:write_data::allow 32196948Straszexpect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} 33196948Strasz 34196948Strasz# 12 35196948Strasz# Moving directory from elsewhere allowed on writable directory. 36196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 37196948Straszexpect 0 prependacl . user:65534:append_data::allow 38196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 39196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 40196948Strasz 41196948Strasz# Moving directory from elsewhere overwriting local directory allowed 42196948Strasz# on writable directory. 43196948Straszexpect 0 mkdir ${n0} 0755 44196948Straszexpect 0 mkdir ../${n3}/${n0} 0777 45196948Straszexpect 0 prependacl . user:65534:write_data::deny 46196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 47196948Straszexpect 0 prependacl . user:65534:write_data::allow 48196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 49196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 50196948Strasz 51196948Strasz# 23 52196948Strasz# Denied DELETE changes nothing wrt removing. 53196948Straszexpect 0 mkdir ${n0} 0755 54196948Straszexpect 0 prependacl ${n0} user:65534:delete::deny 55196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 56196948Strasz 57196948Strasz# Denied DELETE changes nothing wrt moving elsewhere or from elsewhere. 58196948Straszexpect 0 mkdir ${n0} 0777 59196948Straszexpect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} 60196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 61196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 62196948Strasz 63196948Strasz# DELETE_CHILD denies unlink on writable directory. 64196948Straszexpect 0 mkdir ${n0} 0755 65196948Straszexpect 0 prependacl . user:65534:delete_child::deny 66196948Straszexpect EPERM -u 65534 -g 65534 rmdir ${n0} 67196948Straszexpect 0 rmdir ${n0} 68196948Strasz 69196948Strasz# 35 70196948Strasz# DELETE_CHILD denies moving directory elsewhere. 71196948Straszexpect 0 mkdir ${n0} 0777 72196948Straszexpect EPERM -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} 73196948Straszexpect 0 rename ${n0} ../${n3}/${n0} 74196948Strasz 75196948Strasz# DELETE_CHILD does not deny moving directory from elsewhere 76196948Strasz# to a writable directory. 77196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 78196948Strasz 79196948Strasz# DELETE_CHILD denies moving directory from elsewhere 80196948Strasz# to a writable directory overwriting local directory. 81196948Straszexpect 0 mkdir ../${n3}/${n0} 0755 82196948Straszexpect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 83196948Strasz 84196948Strasz# DELETE allowed on directory allows for unlinking, no matter 85196948Strasz# what permissions on containing directory are. 86196948Straszexpect 0 prependacl ${n0} user:65534:delete::allow 87196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 88196948Strasz 89196948Strasz# Same for moving the directory elsewhere. 90196948Straszexpect 0 mkdir ${n0} 0777 91196948Straszexpect 0 prependacl ${n0} user:65534:delete::allow 92196948Straszexpect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} 93196948Strasz 94196948Strasz# 46 95196948Strasz# Same for moving the directory from elsewhere into a writable 96196948Strasz# directory with DELETE_CHILD denied. 97196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 98196948Straszexpect 0 rmdir ${n0} 99196948Strasz 100196948Strasz# DELETE does not allow for overwriting a directory in a unwritable 101196948Strasz# directory with DELETE_CHILD denied. 102196948Straszexpect 0 mkdir ${n0} 0755 103196948Straszexpect 0 mkdir ../${n3}/${n0} 0777 104196948Straszexpect 0 prependacl . user:65534:write_data::deny 105196948Straszexpect 0 prependacl . user:65534:delete_child::deny 106196948Straszexpect EPERM -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 107196948Straszexpect 0 prependacl ${n0} user:65534:delete::allow 108196948Strasz# XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 109196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 110196948Strasz 111196948Strasz# 54 112196948Strasz# But it allows for plain deletion. 113196948Strasz# XXX: expect 0 -u 65534 -g 65534 rmdir ${n0} 114196948Straszexpect 0 rmdir ${n0} 115196948Strasz 116196948Strasz# DELETE_CHILD allowed on unwritable directory. 117196948Straszexpect 0 mkdir ${n0} 0755 118196948Straszexpect 0 prependacl . user:65534:delete_child::allow 119196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 120196948Strasz 121196948Strasz# Moving things elsewhere is allowed. 122196948Straszexpect 0 mkdir ${n0} 0777 123196948Straszexpect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} 124196948Strasz 125196948Strasz# 60 126196948Strasz# Moving things back is not. 127196948Strasz# XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 128196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 129196948Strasz 130196948Strasz# Even if we're overwriting. 131196948Strasz# XXX: expect 0 mkdir ${n0} 0755 132196948Straszexpect 0 mkdir ../${n3}/${n0} 0777 133196948Strasz# XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 134196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 135196948Straszexpect 0 mkdir ../${n3}/${n0} 0777 136196948Strasz 137196948Strasz# Even if we have DELETE on the existing directory. 138196948Straszexpect 0 prependacl ${n0} user:65534:delete::allow 139196948Strasz# XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 140196948Straszexpect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} 141196948Strasz 142196948Strasz# Denied DELETE changes nothing wrt removing. 143196948Straszexpect 0 prependacl ${n0} user:65534:delete::deny 144196948Straszexpect 0 -u 65534 -g 65534 rmdir ${n0} 145196948Strasz 146196948Straszcd ${cdir} 147196948Straszexpect 0 rmdir ${n2} 148