xref: /openbsd/regress/sys/ffs/tests/chflags/10.t (revision d415bd75)
1#!/bin/sh
2# $FreeBSD: src/tools/regression/fstest/tests/chflags/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $
3
4desc="chflags returns EPERM if non-super-user tries to set one of SF_IMMUTABLE, SF_APPEND"
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 EPERM -u 65533 -g 65533 chflags ${n1} ${flag}
18	expect none stat ${n1} flags
19	expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag}
20	expect none stat ${n1} flags
21done
22expect 0 unlink ${n1}
23
24expect 0 mkdir ${n1} 0755
25expect 0 chown ${n1} 65534 65534
26for flag in SF_IMMUTABLE SF_APPEND; do
27	expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag}
28	expect none stat ${n1} flags
29	expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag}
30	expect none stat ${n1} flags
31done
32expect 0 rmdir ${n1}
33
34expect 0 mkfifo ${n1} 0644
35expect 0 chown ${n1} 65534 65534
36for flag in SF_IMMUTABLE SF_APPEND; do
37	expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag}
38	expect none stat ${n1} flags
39	expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag}
40	expect none stat ${n1} flags
41done
42expect 0 unlink ${n1}
43
44expect 0 symlink ${n2} ${n1}
45expect 0 lchown ${n1} 65534 65534
46for flag in SF_IMMUTABLE SF_APPEND; do
47	expect EPERM -u 65533 -g 65533 lchflags ${n1} ${flag}
48	expect none lstat ${n1} flags
49	expect EPERM -u 65534 -g 65534 lchflags ${n1} ${flag}
50	expect none lstat ${n1} flags
51done
52expect 0 unlink ${n1}
53
54cd ${cdir}
55expect 0 rmdir ${n0}
56