summaryrefslogtreecommitdiffstats
path: root/tools/regression/fstest/tests/chown/00.t
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression/fstest/tests/chown/00.t')
-rw-r--r--tools/regression/fstest/tests/chown/00.t193
1 files changed, 162 insertions, 31 deletions
diff --git a/tools/regression/fstest/tests/chown/00.t b/tools/regression/fstest/tests/chown/00.t
index eb13010..9db3709 100644
--- a/tools/regression/fstest/tests/chown/00.t
+++ b/tools/regression/fstest/tests/chown/00.t
@@ -7,9 +7,9 @@ dir=`dirname $0`
. ${dir}/../misc.sh
if supported lchmod; then
- echo "1..186"
+ echo "1..264"
else
- echo "1..171"
+ echo "1..249"
fi
n0=`namegen`
@@ -21,28 +21,49 @@ cdir=`pwd`
cd ${n2}
# super-user can always modify ownership
-# 2
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 123 456
expect 123,456 lstat ${n0} uid,gid
expect 0 chown ${n0} 0 0
expect 0,0 lstat ${n0} uid,gid
expect 0 unlink ${n0}
-# 8
+
expect 0 mkfifo ${n0} 0644
expect 0 chown ${n0} 123 456
expect 123,456 lstat ${n0} uid,gid
expect 0 chown ${n0} 0 0
expect 0,0 lstat ${n0} uid,gid
expect 0 unlink ${n0}
-# 14
+
+expect 0 mknod ${n0} b 0644 1 2
+expect 0 chown ${n0} 123 456
+expect 123,456 lstat ${n0} uid,gid
+expect 0 chown ${n0} 0 0
+expect 0,0 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+
+expect 0 mknod ${n0} c 0644 1 2
+expect 0 chown ${n0} 123 456
+expect 123,456 lstat ${n0} uid,gid
+expect 0 chown ${n0} 0 0
+expect 0,0 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+
+expect 0 bind ${n0}
+expect 0 chown ${n0} 123 456
+expect 123,456 lstat ${n0} uid,gid
+expect 0 chown ${n0} 0 0
+expect 0,0 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+
expect 0 mkdir ${n0} 0755
expect 0 chown ${n0} 123 456
expect 123,456 lstat ${n0} uid,gid
expect 0 chown ${n0} 0 0
expect 0,0 lstat ${n0} uid,gid
expect 0 rmdir ${n0}
-# 20
+
expect 0 create ${n0} 0644
expect 0 symlink ${n0} ${n1}
expect 0 chown ${n1} 123 456
@@ -57,7 +78,7 @@ expect 0 unlink ${n1}
# non-super-user can modify file group if he is owner of a file and
# gid he is setting is in his groups list.
-# 31
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 65534,65533 lstat ${n0} uid,gid
@@ -69,14 +90,14 @@ expect 0 unlink ${n0}
# chown(2) return 0 if user is not owner of a file, but chown(2) is called
# with both uid and gid equal to -1.
-# 39
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 0 -u 65532 -g 65531 -- chown ${n0} -1 -1
expect 0 unlink ${n0}
# when super-user calls chown(2), set-uid and set-gid bits may be removed.
-# 43
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
@@ -84,7 +105,7 @@ expect 06555 lstat ${n0} mode
expect 0 chown ${n0} 65532 65531
expect "06555|0555" lstat ${n0} mode
expect 0 unlink ${n0}
-# 50
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 0 0
expect 0 chmod ${n0} 06555
@@ -92,7 +113,7 @@ expect 06555 lstat ${n0} mode
expect 0 chown ${n0} 65534 65533
expect "06555|0555" lstat ${n0} mode
expect 0 unlink ${n0}
-# 57
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
@@ -103,7 +124,7 @@ expect 0 unlink ${n0}
# when non-super-user calls chown(2) successfully, set-uid and set-gid bits may
# be removed, except when both uid and gid are equal to -1.
-# 64
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
@@ -119,7 +140,7 @@ expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1
expect "06555,65534,65533|0555,65534,65533" lstat ${n0} mode,uid,gid
expect 0 unlink ${n0}
-# 79
+
expect 0 mkdir ${n0} 0755
expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
@@ -135,7 +156,7 @@ expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1
expect 06555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 rmdir ${n0}
-# 94
+
if supported lchmod; then
expect 0 symlink ${n1} ${n0}
expect 0 lchown ${n0} 65534 65533
@@ -155,7 +176,7 @@ if supported lchmod; then
fi
# successfull chown(2) call (except uid and gid equal to -1) updates ctime.
-# 109
+
expect 0 create ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -164,7 +185,7 @@ expect 65534,65533 lstat ${n0} uid,gid
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 unlink ${n0}
-# 114
+
expect 0 mkdir ${n0} 0755
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -173,7 +194,7 @@ expect 65534,65533 lstat ${n0} uid,gid
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 rmdir ${n0}
-# 119
+
expect 0 mkfifo ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -182,7 +203,34 @@ expect 65534,65533 lstat ${n0} uid,gid
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 unlink ${n0}
-# 124
+
+expect 0 mknod ${n0} b 0644 1 2
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mknod ${n0} c 0644 1 2
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+expect 0 bind ${n0}
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
expect 0 symlink ${n1} ${n0}
ctime1=`${fstest} lstat ${n0} ctime`
sleep 1
@@ -191,7 +239,7 @@ expect 65534,65533 lstat ${n0} uid,gid
ctime2=`${fstest} lstat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 unlink ${n0}
-# 129
+
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
ctime1=`${fstest} stat ${n0} ctime`
@@ -201,7 +249,7 @@ expect 65534,65532 lstat ${n0} uid,gid
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 unlink ${n0}
-# 135
+
expect 0 mkdir ${n0} 0755
expect 0 chown ${n0} 65534 65533
ctime1=`${fstest} stat ${n0} ctime`
@@ -211,7 +259,7 @@ expect 65534,65532 lstat ${n0} uid,gid
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 rmdir ${n0}
-# 141
+
expect 0 mkfifo ${n0} 0644
expect 0 chown ${n0} 65534 65533
ctime1=`${fstest} stat ${n0} ctime`
@@ -222,7 +270,40 @@ expect 65534,65532 lstat ${n0} uid,gid
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 unlink ${n0}
-# 148
+
+expect 0 mknod ${n0} b 0644 1 2
+expect 0 chown ${n0} 65534 65533
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mknod ${n0} c 0644 1 2
+expect 0 chown ${n0} 65534 65533
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+expect 0 bind ${n0}
+expect 0 chown ${n0} 65534 65533
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
expect 0 symlink ${n1} ${n0}
expect 0 lchown ${n0} 65534 65533
ctime1=`${fstest} lstat ${n0} ctime`
@@ -232,7 +313,7 @@ expect 65534,65532 lstat ${n0} uid,gid
ctime2=`${fstest} lstat ${n0} ctime`
test_check $ctime1 -lt $ctime2
expect 0 unlink ${n0}
-# 154
+
expect 0 create ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -241,7 +322,7 @@ ctime2=`${fstest} stat ${n0} ctime`
todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated."
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
-# 158
+
expect 0 mkdir ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -250,7 +331,7 @@ ctime2=`${fstest} stat ${n0} ctime`
todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated."
test_check $ctime1 -eq $ctime2
expect 0 rmdir ${n0}
-# 162
+
expect 0 mkfifo ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -259,7 +340,34 @@ ctime2=`${fstest} stat ${n0} ctime`
todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated."
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
-# 166
+
+expect 0 mknod ${n0} b 0644 1 2
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 -- chown ${n0} -1 -1
+ctime2=`${fstest} stat ${n0} ctime`
+todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated."
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mknod ${n0} c 0644 1 2
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 -- chown ${n0} -1 -1
+ctime2=`${fstest} stat ${n0} ctime`
+todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated."
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 bind ${n0}
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 -- chown ${n0} -1 -1
+ctime2=`${fstest} stat ${n0} ctime`
+todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated."
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
expect 0 symlink ${n1} ${n0}
ctime1=`${fstest} lstat ${n0} ctime`
sleep 1
@@ -270,7 +378,7 @@ test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
# unsuccessful chown(2) does not update ctime.
-# 170
+
expect 0 create ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -278,7 +386,7 @@ expect EPERM -u 65534 -- chown ${n0} 65534 -1
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
-# 174
+
expect 0 mkdir ${n0} 0755
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -286,7 +394,7 @@ expect EPERM -u 65534 -g 65534 -- chown ${n0} -1 65534
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 rmdir ${n0}
-# 178
+
expect 0 mkfifo ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
@@ -294,7 +402,31 @@ expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
-# 182
+
+expect 0 mknod ${n0} b 0644 1 2
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mknod ${n0} c 0644 1 2
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 bind ${n0}
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
expect 0 symlink ${n1} ${n0}
ctime1=`${fstest} lstat ${n0} ctime`
sleep 1
@@ -303,6 +435,5 @@ ctime2=`${fstest} lstat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
-# 186
cd ${cdir}
expect 0 rmdir ${n2}
OpenPOWER on IntegriCloud