#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2015 Red Hat, Inc. # # FSQA Test No. 087 # # Check if setting the file access and modification times to the current time # (t) and to a specific timestamp (T) is allowed when expected. # # From utime(2): Changing timestamps is permitted when: either the process has # appropriate privileges, or the effective user ID equals the user ID of the # file, or [the process is trying to set the timestamps to the current time] # and the process has write permission for the file. # # Note that the last of these tests will always wrongly succeed over NFSv2. # For NFSv3+, that test will wrongly succeed until kernel commit # "Disable NFSv2 timestamp workaround for NFSv3+". # seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { cd / } # get standard environment, filters and checks . ./common/rc . ./common/filter # real QA test starts here _supported_fs generic _require_test QA_FS_PERMS=$here/src/fs_perms cd $TEST_DIR cp $here/src/testx ./testx.file # The owner: $QA_FS_PERMS 600 99 99 99 99 t 1 $QA_FS_PERMS 600 99 99 99 99 T 1 # Other processes with and without write permission: $QA_FS_PERMS 600 99 99 100 99 t 0 $QA_FS_PERMS 600 99 99 100 99 T 0 $QA_FS_PERMS 660 99 99 100 99 t 1 $QA_FS_PERMS 660 99 99 100 99 T 0 rm -f ./testx.file status=0 exit