1#!/bin/sh 2# $FreeBSD: head/tools/regression/pjdfstest/tests/granular/00.t 211352 2010-08-15 21:24:17Z pjd $ 3 4desc="NFSv4 granular permissions checking - WRITE_DATA vs APPEND_DATA on directories" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit 10 11echo "1..49" 12 13n0=`namegen` 14n1=`namegen` 15n2=`namegen` 16n3=`namegen` 17 18expect 0 mkdir ${n2} 0755 19expect 0 mkdir ${n3} 0777 20cdir=`pwd` 21cd ${n2} 22 23# Tests 2..7 - check out whether root user can do stuff. 24# Can create files? 25expect 0 create ${n0} 0644 26 27# Can create symlinks? 28expect 0 link ${n0} ${n1} 29expect 0 unlink ${n1} 30expect 0 unlink ${n0} 31 32# Can create directories? 33expect 0 mkdir ${n0} 0755 34expect 0 rmdir ${n0} 35 36# Check whether user 65534 is permitted to create and remove 37# 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