|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +desc="utime allowed when owner, or privileged, or current time and write access" |
| 4 | + |
| 5 | +dir=`dirname $0` |
| 6 | +. ${dir}/../misc.sh |
| 7 | + |
| 8 | +echo "1..40" |
| 9 | + |
| 10 | +n0=`namegen` |
| 11 | +n1=`namegen` |
| 12 | +n2=`namegen` |
| 13 | + |
| 14 | +expect 0 mkdir ${n0} 0777 |
| 15 | +expect 0 chown ${n0} 65534 65534 |
| 16 | +expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0464 |
| 17 | +expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0464 |
| 18 | +now=`${fstest} stat ${n0} mtime` |
| 19 | +hourback=`echo $now-3600 | bc` |
| 20 | +halfhourback=`echo $now-1800 | bc` |
| 21 | +# |
| 22 | +# allowed to root |
| 23 | +# |
| 24 | +# 5 |
| 25 | +expect 0 utime ${n0}/${n1} $hourback $halfhourback |
| 26 | +expect $hourback stat ${n0}/${n1} atime |
| 27 | +expect $halfhourback stat ${n0}/${n1} mtime |
| 28 | +expect 0 utime ${n0}/${n1} |
| 29 | +atime=`${fstest} stat ${n0}/${n1} atime` |
| 30 | +test_check $now -le $atime |
| 31 | +mtime=`${fstest} stat ${n0}/${n1} mtime` |
| 32 | +test_check $now -le $mtime |
| 33 | + |
| 34 | +expect 0 utime ${n0}/${n2} $hourback $halfhourback |
| 35 | +expect $hourback stat ${n0}/${n2} atime |
| 36 | +expect $halfhourback stat ${n0}/${n2} mtime |
| 37 | +expect 0 utime ${n0}/${n2} |
| 38 | +atime=`${fstest} stat ${n0}/${n2} atime` |
| 39 | +test_check $now -le $atime |
| 40 | +mtime=`${fstest} stat ${n0}/${n2} mtime` |
| 41 | +test_check $now -le $mtime |
| 42 | +# |
| 43 | +# allowed to owner, though no write access |
| 44 | +# |
| 45 | +# 17 |
| 46 | +expect 0 -u 65534 -g 65534 utime ${n0}/${n1} $hourback $halfhourback |
| 47 | +expect $hourback stat ${n0}/${n1} atime |
| 48 | +expect $halfhourback stat ${n0}/${n1} mtime |
| 49 | +expect 0 -u 65534 -g 65534 utime ${n0}/${n1} |
| 50 | +atime=`${fstest} stat ${n0}/${n1} atime` |
| 51 | +test_check $now -le $atime |
| 52 | +mtime=`${fstest} stat ${n0}/${n1} mtime` |
| 53 | +test_check $now -le $mtime |
| 54 | + |
| 55 | +expect 0 -u 65534 -g 65534 utime ${n0}/${n2} $hourback $halfhourback |
| 56 | +expect $hourback stat ${n0}/${n2} atime |
| 57 | +expect $halfhourback stat ${n0}/${n2} mtime |
| 58 | +expect 0 -u 65534 -g 65534 utime ${n0}/${n2} |
| 59 | +atime=`${fstest} stat ${n0}/${n2} atime` |
| 60 | +test_check $now -le $atime |
| 61 | +mtime=`${fstest} stat ${n0}/${n2} mtime` |
| 62 | +test_check $now -le $mtime |
| 63 | +# |
| 64 | +# group has access to set to current time |
| 65 | +# |
| 66 | +# 29 |
| 67 | +expect 0 utime ${n0}/${n1} $hourback $halfhourback |
| 68 | +expect 0 -u 65533 -g 65534 utime ${n0}/${n1} |
| 69 | +atime=`${fstest} stat ${n0}/${n1} atime` |
| 70 | +test_check $now -le $atime |
| 71 | +mtime=`${fstest} stat ${n0}/${n1} mtime` |
| 72 | +test_check $now -le $mtime |
| 73 | + |
| 74 | +expect 0 utime ${n0}/${n2} $hourback $halfhourback |
| 75 | +expect 0 -u 65533 -g 65534 utime ${n0}/${n2} |
| 76 | +atime=`${fstest} stat ${n0}/${n2} atime` |
| 77 | +test_check $now -le $atime |
| 78 | +mtime=`${fstest} stat ${n0}/${n2} mtime` |
| 79 | +test_check $now -le $mtime |
| 80 | +# |
| 81 | +# cleanup |
| 82 | +# |
| 83 | +# 37 |
| 84 | +expect 0 chmod ${n0} 0755 |
| 85 | +expect 0 rmdir ${n0}/${n2} |
| 86 | +expect 0 unlink ${n0}/${n1} |
| 87 | +expect 0 rmdir ${n0} |
0 commit comments