1*40a8ac8fSEnji Cooper#!/bin/sh 2*40a8ac8fSEnji Cooper# $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/10.t 211352 2010-08-15 21:24:17Z pjd $ 3*40a8ac8fSEnji Cooper 4*40a8ac8fSEnji Cooperdesc="chflags returns EPERM if non-super-user tries to set one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK" 5*40a8ac8fSEnji Cooper 6*40a8ac8fSEnji Cooperdir=`dirname $0` 7*40a8ac8fSEnji Cooper. ${dir}/../misc.sh 8*40a8ac8fSEnji Cooper 9*40a8ac8fSEnji Cooperrequire chflags 10*40a8ac8fSEnji Cooper 11*40a8ac8fSEnji Cooperecho "1..197" 12*40a8ac8fSEnji Cooper 13*40a8ac8fSEnji Coopern0=`namegen` 14*40a8ac8fSEnji Coopern1=`namegen` 15*40a8ac8fSEnji Coopern2=`namegen` 16*40a8ac8fSEnji Cooper 17*40a8ac8fSEnji Cooperexpect 0 mkdir ${n0} 0755 18*40a8ac8fSEnji Coopercdir=`pwd` 19*40a8ac8fSEnji Coopercd ${n0} 20*40a8ac8fSEnji Cooper 21*40a8ac8fSEnji Cooperfor type in regular dir fifo block char socket symlink; do 22*40a8ac8fSEnji Cooper if [ "${type}" != "symlink" ]; then 23*40a8ac8fSEnji Cooper create_file ${type} ${n1} 24*40a8ac8fSEnji Cooper expect 0 chown ${n1} 65534 65534 25*40a8ac8fSEnji Cooper for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 26*40a8ac8fSEnji Cooper expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} 27*40a8ac8fSEnji Cooper expect none stat ${n1} flags 28*40a8ac8fSEnji Cooper expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} 29*40a8ac8fSEnji Cooper expect none stat ${n1} flags 30*40a8ac8fSEnji Cooper done 31*40a8ac8fSEnji Cooper if [ "${type}" = "dir" ]; then 32*40a8ac8fSEnji Cooper expect 0 rmdir ${n1} 33*40a8ac8fSEnji Cooper else 34*40a8ac8fSEnji Cooper expect 0 unlink ${n1} 35*40a8ac8fSEnji Cooper fi 36*40a8ac8fSEnji Cooper fi 37*40a8ac8fSEnji Cooper 38*40a8ac8fSEnji Cooper create_file ${type} ${n1} 39*40a8ac8fSEnji Cooper expect 0 lchown ${n1} 65534 65534 40*40a8ac8fSEnji Cooper for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 41*40a8ac8fSEnji Cooper expect EPERM -u 65533 -g 65533 lchflags ${n1} ${flag} 42*40a8ac8fSEnji Cooper expect none lstat ${n1} flags 43*40a8ac8fSEnji Cooper expect EPERM -u 65534 -g 65534 lchflags ${n1} ${flag} 44*40a8ac8fSEnji Cooper expect none lstat ${n1} flags 45*40a8ac8fSEnji Cooper done 46*40a8ac8fSEnji Cooper if [ "${type}" = "dir" ]; then 47*40a8ac8fSEnji Cooper expect 0 rmdir ${n1} 48*40a8ac8fSEnji Cooper else 49*40a8ac8fSEnji Cooper expect 0 unlink ${n1} 50*40a8ac8fSEnji Cooper fi 51*40a8ac8fSEnji Cooperdone 52*40a8ac8fSEnji Cooper 53*40a8ac8fSEnji Coopercd ${cdir} 54*40a8ac8fSEnji Cooperexpect 0 rmdir ${n0} 55