diff options
Diffstat (limited to 'tools/regression/fstest/tests/chown/00.t')
-rw-r--r-- | tools/regression/fstest/tests/chown/00.t | 193 |
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} |