1271294Sngie#!/bin/sh 2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/07.t 211352 2010-08-15 21:24:17Z pjd $ 3271294Sngie 4271294Sngiedesc="chmod returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user" 5271294Sngie 6271294Sngiedir=`dirname $0` 7271294Sngie. ${dir}/../misc.sh 8271294Sngie 9271294Sngieif supported lchmod; then 10271294Sngie echo "1..34" 11271294Sngieelse 12271294Sngie echo "1..25" 13271294Sngiefi 14271294Sngie 15271294Sngien0=`namegen` 16271294Sngien1=`namegen` 17271294Sngien2=`namegen` 18271294Sngien3=`namegen` 19271294Sngie 20271294Sngieexpect 0 mkdir ${n0} 0755 21271294Sngiecdir=`pwd` 22271294Sngiecd ${n0} 23271294Sngieexpect 0 mkdir ${n1} 0755 24271294Sngieexpect 0 chown ${n1} 65534 65534 25271294Sngie 26271294Sngieexpect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 27271294Sngieexpect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 28271294Sngieexpect 0642 stat ${n1}/${n2} mode 29271294Sngieexpect EPERM -u 65533 -g 65533 chmod ${n1}/${n2} 0641 30271294Sngieexpect 0642 stat ${n1}/${n2} mode 31271294Sngieexpect 0 chown ${n1}/${n2} 0 0 32271294Sngieexpect EPERM -u 65534 -g 65534 chmod ${n1}/${n2} 0641 33271294Sngieexpect 0642 stat ${n1}/${n2} mode 34271294Sngieexpect 0 unlink ${n1}/${n2} 35271294Sngie 36271294Sngieexpect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 37271294Sngieexpect 0 -u 65534 -g 65534 symlink ${n2} ${n1}/${n3} 38271294Sngieexpect 0 -u 65534 -g 65534 chmod ${n1}/${n3} 0642 39271294Sngieexpect 0642,65534,65534 stat ${n1}/${n2} mode,uid,gid 40271294Sngieexpect EPERM -u 65533 -g 65533 chmod ${n1}/${n3} 0641 41271294Sngieexpect 0642,65534,65534 stat ${n1}/${n2} mode,uid,gid 42271294Sngieexpect 0 chown ${n1}/${n3} 0 0 43271294Sngieexpect EPERM -u 65534 -g 65534 chmod ${n1}/${n3} 0641 44271294Sngieexpect 0642,0,0 stat ${n1}/${n2} mode,uid,gid 45271294Sngieexpect 0 unlink ${n1}/${n2} 46271294Sngieexpect 0 unlink ${n1}/${n3} 47271294Sngie 48271294Sngieif supported lchmod; then 49271294Sngie expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 50271294Sngie expect 0 -u 65534 -g 65534 lchmod ${n1}/${n2} 0642 51271294Sngie expect 0642 stat ${n1}/${n2} mode 52271294Sngie expect EPERM -u 65533 -g 65533 lchmod ${n1}/${n2} 0641 53271294Sngie expect 0642 stat ${n1}/${n2} mode 54271294Sngie expect 0 chown ${n1}/${n2} 0 0 55271294Sngie expect EPERM -u 65534 -g 65534 lchmod ${n1}/${n2} 0641 56271294Sngie expect 0642 stat ${n1}/${n2} mode 57271294Sngie expect 0 unlink ${n1}/${n2} 58271294Sngiefi 59271294Sngie 60271294Sngieexpect 0 rmdir ${n1} 61271294Sngiecd ${cdir} 62271294Sngieexpect 0 rmdir ${n0} 63