1#!/bin/sh 2# $FreeBSD: src/tools/regression/fstest/tests/chflags/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 4desc="chflags returns EPERM when one of SF_IMMUTABLE or SF_APPEND, is set and the user is not the super-user" 5 6n0=`namegen` 7n1=`namegen` 8n2=`namegen` 9 10expect 0 mkdir ${n0} 0755 11cdir=`pwd` 12cd ${n0} 13 14expect 0 create ${n1} 0644 15expect 0 chown ${n1} 65534 65534 16for flag in SF_IMMUTABLE SF_APPEND ; do 17 expect 0 chflags ${n1} ${flag} 18 expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 19 expect ${flag} stat ${n1} flags 20 expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 21 expect ${flag} stat ${n1} flags 22done 23expect 0 chflags ${n1} none 24expect 0 unlink ${n1} 25 26expect 0 mkdir ${n1} 0755 27expect 0 chown ${n1} 65534 65534 28for flag in SF_IMMUTABLE SF_APPEND ; do 29 expect 0 chflags ${n1} ${flag} 30 expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 31 expect ${flag} stat ${n1} flags 32 expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 33 expect ${flag} stat ${n1} flags 34done 35expect 0 chflags ${n1} none 36expect 0 rmdir ${n1} 37 38expect 0 mkfifo ${n1} 0644 39expect 0 chown ${n1} 65534 65534 40for flag in SF_IMMUTABLE SF_APPEND ; do 41 expect 0 chflags ${n1} ${flag} 42 expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 43 expect ${flag} stat ${n1} flags 44 expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 45 expect ${flag} stat ${n1} flags 46done 47expect 0 chflags ${n1} none 48expect 0 unlink ${n1} 49 50expect 0 symlink ${n2} ${n1} 51expect 0 lchown ${n1} 65534 65534 52for flag in SF_IMMUTABLE SF_APPEND ; do 53 expect 0 lchflags ${n1} ${flag} 54 expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE 55 expect ${flag} lstat ${n1} flags 56 expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE 57 expect ${flag} lstat ${n1} flags 58done 59expect 0 lchflags ${n1} none 60expect 0 unlink ${n1} 61 62cd ${cdir} 63expect 0 rmdir ${n0} 64