1188943Sthompsa#!/bin/sh 2188943Sthompsa# $FreeBSD: head/tools/regression/pjdfstest/tests/granular/00.t 211352 2010-08-15 21:24:17Z pjd $ 3188943Sthompsa 4188943Sthompsadesc="NFSv4 granular permissions checking - WRITE_DATA vs APPEND_DATA on directories" 5188943Sthompsa 6188943Sthompsadir=`dirname $0` 7188943Sthompsa. ${dir}/../misc.sh 8188943Sthompsa 9188943Sthompsa[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit 10188943Sthompsa 11188943Sthompsaecho "1..49" 12188943Sthompsa 13188943Sthompsan0=`namegen` 14188943Sthompsan1=`namegen` 15188943Sthompsan2=`namegen` 16188943Sthompsan3=`namegen` 17188943Sthompsa 18188943Sthompsaexpect 0 mkdir ${n2} 0755 19188943Sthompsaexpect 0 mkdir ${n3} 0777 20188943Sthompsacdir=`pwd` 21188943Sthompsacd ${n2} 22188943Sthompsa 23188943Sthompsa# Tests 2..7 - check out whether root user can do stuff. 24188943Sthompsa# Can create files? 25188943Sthompsaexpect 0 create ${n0} 0644 26188943Sthompsa 27188943Sthompsa# Can create symlinks? 28188943Sthompsaexpect 0 link ${n0} ${n1} 29188943Sthompsaexpect 0 unlink ${n1} 30188943Sthompsaexpect 0 unlink ${n0} 31188943Sthompsa 32188943Sthompsa# Can create directories? 33188943Sthompsaexpect 0 mkdir ${n0} 0755 34188943Sthompsaexpect 0 rmdir ${n0} 35188943Sthompsa 36188943Sthompsa# Check whether user 65534 is permitted to create and remove 37188943Sthompsa# files, but not subdirectories. 38expect 0 prependacl . user:65534:write_data::allow,user:65534:append_data::deny 39 40# Can create files? 41expect 0 -u 65534 -g 65534 create ${n0} 0644 42 43# Can create symlinks? 44expect 0 -u 65534 -g 65534 link ${n0} ${n1} 45expect 0 -u 65534 -g 65534 unlink ${n1} 46expect 0 -u 65534 -g 65534 unlink ${n0} 47 48# Can create directories? 49expect EACCES -u 65534 -g 65534 mkdir ${n0} 0755 50expect ENOENT -u 65534 -g 65534 rmdir ${n0} 51expect 0 mkdir ${n0} 0755 52expect 0 -u 65534 -g 65534 rmdir ${n0} 53 54# Can move files from other directory? 55expect 0 create ../${n3}/${n1} 0644 56expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 57 58# Can move files from other directory overwriting existing files? 59expect 0 create ../${n3}/${n1} 0644 60expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 61 62expect 0 -u 65534 -g 65534 unlink ${n0} 63 64# Can move directories from other directory? 65expect 0 mkdir ../${n3}/${n1} 0777 66expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 67 68# Can move directories from other directory overwriting existing directory? 69expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 70expect 0 -u 65534 -g 65534 rmdir ../${n3}/${n1} 71 72# Check whether user 65534 is permitted to create 73# subdirectories, but not files - and to remove neither of them. 74expect 0 prependacl . user:65534:write_data::deny,user:65534:append_data::allow 75 76# Can create files? 77expect EACCES -u 65534 -g 65534 create ${n0} 0644 78 79# Can create symlinks? 80expect 0 create ${n0} 0644 81expect EACCES -u 65534 -g 65534 link ${n0} ${n1} 82expect ENOENT -u 65534 -g 65534 unlink ${n1} 83expect EACCES -u 65534 -g 65534 unlink ${n0} 84expect 0 unlink ${n0} 85 86# Can create directories? 87expect 0 -u 65534 -g 65534 mkdir ${n0} 0755 88expect EACCES -u 65534 -g 65534 rmdir ${n0} 89expect 0 rmdir ${n0} 90 91# Can move files from other directory? 92expect 0 create ../${n3}/${n1} 0644 93expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 94 95# Can move files from other directory overwriting existing files? 96expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 97expect 0 -u 65534 -g 65534 unlink ../${n3}/${n1} 98 99# Can move directories from other directory? 100expect 0 mkdir ../${n3}/${n1} 0777 101expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 102 103# Can move directories from other directory overwriting existing directory? 104expect 0 mkdir ../${n3}/${n1} 0777 105expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 106expect 0 prependacl . user:65534:delete_child::allow 107expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} 108expect 0 -u 65534 -g 65534 rmdir ${n0} 109 110cd ${cdir} 111expect 0 rmdir ${n2} 112expect 0 rmdir ${n3} 113