1#!/bin/sh 2# $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/07.t 211352 2010-08-15 21:24:17Z pjd $ 3 4desc="chmod returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user" 5 6dir=`dirname $0` 7. ${dir}/../misc.sh 8 9if supported lchmod; then 10 echo "1..34" 11else 12 echo "1..25" 13fi 14 15n0=`namegen` 16n1=`namegen` 17n2=`namegen` 18n3=`namegen` 19 20expect 0 mkdir ${n0} 0755 21cdir=`pwd` 22cd ${n0} 23expect 0 mkdir ${n1} 0755 24expect 0 chown ${n1} 65534 65534 25 26expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 27expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 28expect 0642 stat ${n1}/${n2} mode 29expect EPERM -u 65533 -g 65533 chmod ${n1}/${n2} 0641 30expect 0642 stat ${n1}/${n2} mode 31expect 0 chown ${n1}/${n2} 0 0 32expect EPERM -u 65534 -g 65534 chmod ${n1}/${n2} 0641 33expect 0642 stat ${n1}/${n2} mode 34expect 0 unlink ${n1}/${n2} 35 36expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 37expect 0 -u 65534 -g 65534 symlink ${n2} ${n1}/${n3} 38expect 0 -u 65534 -g 65534 chmod ${n1}/${n3} 0642 39expect 0642,65534,65534 stat ${n1}/${n2} mode,uid,gid 40expect EPERM -u 65533 -g 65533 chmod ${n1}/${n3} 0641 41expect 0642,65534,65534 stat ${n1}/${n2} mode,uid,gid 42expect 0 chown ${n1}/${n3} 0 0 43expect EPERM -u 65534 -g 65534 chmod ${n1}/${n3} 0641 44expect 0642,0,0 stat ${n1}/${n2} mode,uid,gid 45expect 0 unlink ${n1}/${n2} 46expect 0 unlink ${n1}/${n3} 47 48if supported lchmod; then 49 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 50 expect 0 -u 65534 -g 65534 lchmod ${n1}/${n2} 0642 51 expect 0642 stat ${n1}/${n2} mode 52 expect EPERM -u 65533 -g 65533 lchmod ${n1}/${n2} 0641 53 expect 0642 stat ${n1}/${n2} mode 54 expect 0 chown ${n1}/${n2} 0 0 55 expect EPERM -u 65534 -g 65534 lchmod ${n1}/${n2} 0641 56 expect 0642 stat ${n1}/${n2} mode 57 expect 0 unlink ${n1}/${n2} 58fi 59 60expect 0 rmdir ${n1} 61cd ${cdir} 62expect 0 rmdir ${n0} 63