08.t revision 272057
1251875Speter#!/bin/sh 2289166Speter# $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/08.t 211352 2010-08-15 21:24:17Z pjd $ 3289166Speter 4289166Speterdesc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and the user is not the super-user" 5289166Speter 6289166Speterdir=`dirname $0` 7289166Speter. ${dir}/../misc.sh 8289166Speter 9289166Speterrequire chflags 10289166Speter 11289166Speterecho "1..249" 12289166Speter 13289166Spetern0=`namegen` 14289166Spetern1=`namegen` 15289166Spetern2=`namegen` 16289166Speter 17289166Speterexpect 0 mkdir ${n0} 0755 18289166Spetercdir=`pwd` 19289166Spetercd ${n0} 20289166Speter 21289166Speterfor type in regular dir fifo block char socket symlink; do 22289166Speter if [ "${type}" != "symlink" ]; then 23289166Speter create_file ${type} ${n1} 24289166Speter expect 0 chown ${n1} 65534 65534 25289166Speter for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 26289166Speter expect 0 chflags ${n1} ${flag} 27289166Speter expect EPERM -u 65533 -g 65533 chflags ${n1} UF_NODUMP 28289166Speter expect ${flag} stat ${n1} flags 29289166Speter expect EPERM -u 65534 -g 65534 chflags ${n1} UF_NODUMP 30289166Speter expect ${flag} stat ${n1} flags 31289166Speter done 32289166Speter expect 0 chflags ${n1} none 33289166Speter if [ "${type}" = "dir" ]; then 34289166Speter expect 0 rmdir ${n1} 35289166Speter else 36289166Speter expect 0 unlink ${n1} 37289166Speter fi 38289166Speter fi 39289166Speter 40289166Speter create_file ${type} ${n1} 41289166Speter expect 0 lchown ${n1} 65534 65534 42289166Speter for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 43289166Speter expect 0 lchflags ${n1} ${flag} 44289166Speter expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_NODUMP 45289166Speter expect ${flag} lstat ${n1} flags 46289166Speter expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_NODUMP 47289166Speter expect ${flag} lstat ${n1} flags 48289166Speter done 49289166Speter expect 0 lchflags ${n1} none 50289166Speter if [ "${type}" = "dir" ]; then 51289166Speter expect 0 rmdir ${n1} 52289166Speter else 53289166Speter expect 0 unlink ${n1} 54289166Speter fi 55289166Speterdone 56289166Speter 57289166Spetercd ${cdir} 58289166Speterexpect 0 rmdir ${n0} 59289166Speter