1271294Sngie#!/bin/sh
2271294Sngie# $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/08.t 211352 2010-08-15 21:24:17Z pjd $
3271294Sngie
4271294Sngiedesc="chmod returns EPERM if the named file has its immutable or append-only flag set"
5271294Sngie
6271294Sngiedir=`dirname $0`
7271294Sngie. ${dir}/../misc.sh
8271294Sngie
9271294Sngierequire chflags
10271294Sngie
11271294Sngiecase "${os}:${fs}" in
12271294SngieFreeBSD:ZFS)
13271294Sngie	echo "1..29"
14271294Sngie	;;
15271294SngieFreeBSD:UFS)
16271294Sngie	echo "1..54"
17271294Sngie	;;
18271294Sngie*)
19271294Sngie	quick_exit
20271294Sngieesac
21271294Sngie
22271294Sngien0=`namegen`
23271294Sngie
24271294Sngieexpect 0 create ${n0} 0644
25271294Sngieexpect 0 chflags ${n0} SF_IMMUTABLE
26271294Sngieexpect EPERM chmod ${n0} 0600
27271294Sngiesupported lchmod && expect EPERM lchmod ${n0} 0600
28271294Sngieexpect 0644 stat ${n0} mode
29271294Sngieexpect 0 chflags ${n0} none
30271294Sngieexpect 0 chmod ${n0} 0600
31271294Sngieexpect 0600 stat ${n0} mode
32271294Sngiesupported lchmod && expect 0 lchmod ${n0} 0400
33271294Sngiesupported lchmod && expect 0400 stat ${n0} mode
34271294Sngieexpect 0 unlink ${n0}
35271294Sngie
36271294Sngieexpect 0 create ${n0} 0644
37271294Sngieexpect 0 chflags ${n0} SF_NOUNLINK
38271294Sngieexpect 0 chmod ${n0} 0600
39271294Sngieexpect 0600 stat ${n0} mode
40271294Sngiesupported lchmod && expect 0 lchmod ${n0} 0400
41271294Sngiesupported lchmod && expect 0400 stat ${n0} mode
42271294Sngieexpect 0 chflags ${n0} none
43271294Sngieexpect 0 unlink ${n0}
44271294Sngie
45271294Sngiecase "${os}:${fs}" in
46271294SngieFreeBSD:ZFS)
47271294Sngie	expect 0 create ${n0} 0644
48271294Sngie	expect 0 chflags ${n0} SF_APPEND
49271294Sngie	expect 0 chmod ${n0} 0600
50271294Sngie	expect 0600 stat ${n0} mode
51271294Sngie	supported lchmod && expect 0 lchmod ${n0} 0500
52271294Sngie	supported lchmod && expect 0500 stat ${n0} mode
53271294Sngie	expect 0 chflags ${n0} none
54271294Sngie	expect 0 chmod ${n0} 0400
55271294Sngie	expect 0400 stat ${n0} mode
56271294Sngie	expect 0 unlink ${n0}
57271294Sngie	;;
58271294SngieFreeBSD:UFS)
59271294Sngie	expect 0 create ${n0} 0644
60271294Sngie	expect 0 chflags ${n0} SF_APPEND
61271294Sngie	expect EPERM chmod ${n0} 0600
62271294Sngie	supported lchmod && expect EPERM lchmod ${n0} 0600
63271294Sngie	expect 0644 stat ${n0} mode
64271294Sngie	expect 0 chflags ${n0} none
65271294Sngie	expect 0 chmod ${n0} 0600
66271294Sngie	expect 0600 stat ${n0} mode
67271294Sngie	expect 0 unlink ${n0}
68271294Sngie
69271294Sngie	expect 0 create ${n0} 0644
70271294Sngie	expect 0 chflags ${n0} UF_IMMUTABLE
71271294Sngie	expect EPERM chmod ${n0} 0600
72271294Sngie	supported lchmod && expect EPERM lchmod ${n0} 0600
73271294Sngie	expect 0644 stat ${n0} mode
74271294Sngie	expect 0 chflags ${n0} none
75271294Sngie	expect 0 chmod ${n0} 0600
76271294Sngie	expect 0600 stat ${n0} mode
77271294Sngie	expect 0 unlink ${n0}
78271294Sngie
79271294Sngie	expect 0 create ${n0} 0644
80271294Sngie	expect 0 chflags ${n0} UF_NOUNLINK
81271294Sngie	expect 0 chmod ${n0} 0600
82271294Sngie	expect 0600 stat ${n0} mode
83271294Sngie	supported lchmod && expect 0 lchmod ${n0} 0400
84271294Sngie	supported lchmod && expect 0400 stat ${n0} mode
85271294Sngie	expect 0 chflags ${n0} none
86271294Sngie	expect 0 unlink ${n0}
87271294Sngie
88271294Sngie	expect 0 create ${n0} 0644
89271294Sngie	expect 0 chflags ${n0} UF_APPEND
90271294Sngie	expect EPERM chmod ${n0} 0600
91271294Sngie	supported lchmod && expect EPERM lchmod ${n0} 0600
92271294Sngie	expect 0644 stat ${n0} mode
93271294Sngie	expect 0 chflags ${n0} none
94271294Sngie	expect 0 chmod ${n0} 0600
95271294Sngie	expect 0600 stat ${n0} mode
96271294Sngie	expect 0 unlink ${n0}
97271294Sngie	;;
98271294Sngieesac
99