ZFS: fix the delegate tests
These tests have never worked correctly * Replace runwattr with sudo * Fix a scoping bug with the "dtst" variable * Cleanup user properties created during tests * Eliminate the checks for refreservation and send support. They will always be supported. * Fix verify_fs_snapshot. It seemed to assume that permissions would not yet be delegated, but that's not how it's actually used. * Combine verify_fs_promote with verify_vol_promote * Remove some useless sleeps * Fix backwards condition in verify_vol_volsize * Remove some redundant cleanup steps in the tests. cleanup.ksh will handle everything. * Disable some parts of the tests that FreeBSD doesn't support: * Creating snapshots with mkdir * devices * shareisci * sharenfs * xattr * zoned The sharenfs parts could probably be reenabled with more work to remove the Solarisms. MFC after: 2 weeks Sponsored by: Axcient Differential Revision: https://reviews.freebsd.org/D21898
This commit is contained in:
parent
063f9d1295
commit
87015aac27
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=353287
@ -159,11 +159,9 @@ function user_run
|
|||||||
{
|
{
|
||||||
typeset user=$1
|
typeset user=$1
|
||||||
typeset group=$($GROUPS $user)
|
typeset group=$($GROUPS $user)
|
||||||
|
|
||||||
shift
|
shift
|
||||||
|
|
||||||
eval \$RUNWATTR -u \$user -g \$group \"$@\" > /dev/null 2>&1
|
sudo -u $user -g $group $@
|
||||||
return $?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_perm
|
function common_perm
|
||||||
@ -251,7 +249,7 @@ function check_fs_perm
|
|||||||
ret=$?
|
ret=$?
|
||||||
;;
|
;;
|
||||||
promote)
|
promote)
|
||||||
verify_fs_promote $user $perm $fs
|
verify_promote $user $perm $fs
|
||||||
ret=$?
|
ret=$?
|
||||||
;;
|
;;
|
||||||
canmount)
|
canmount)
|
||||||
@ -336,7 +334,7 @@ function check_vol_perm
|
|||||||
ret=$?
|
ret=$?
|
||||||
;;
|
;;
|
||||||
promote)
|
promote)
|
||||||
verify_vol_promote $user $perm $vol
|
verify_promote $user $perm $vol
|
||||||
ret=$?
|
ret=$?
|
||||||
;;
|
;;
|
||||||
volsize)
|
volsize)
|
||||||
@ -358,6 +356,8 @@ function check_vol_perm
|
|||||||
|
|
||||||
function setup_unallow_testenv
|
function setup_unallow_testenv
|
||||||
{
|
{
|
||||||
|
typeset dtst
|
||||||
|
|
||||||
log_must restore_root_datasets
|
log_must restore_root_datasets
|
||||||
|
|
||||||
log_must $ZFS create $SUBFS
|
log_must $ZFS create $SUBFS
|
||||||
@ -403,8 +403,9 @@ function verify_send
|
|||||||
typeset bak_user=$TMPDIR/bak.$user.$stamp
|
typeset bak_user=$TMPDIR/bak.$user.$stamp
|
||||||
typeset bak_root=$TMPDIR/bak.root.$stamp
|
typeset bak_root=$TMPDIR/bak.root.$stamp
|
||||||
|
|
||||||
user_run $user eval "$ZFS send $snap > $bak_user"
|
user_run $user $ZFS send $snap > $bak_user
|
||||||
log_must eval "$ZFS send $snap > $bak_root"
|
log_must eval "$ZFS send $snap > $bak_root"
|
||||||
|
log_must $ZFS destroy $snap
|
||||||
|
|
||||||
if [[ $(checksum $bak_user) == $(checksum $bak_root) ]]; then
|
if [[ $(checksum $bak_user) == $(checksum $bak_root) ]]; then
|
||||||
ret=0
|
ret=0
|
||||||
@ -422,6 +423,7 @@ function verify_fs_receive
|
|||||||
typeset perm=$2
|
typeset perm=$2
|
||||||
typeset fs=$3
|
typeset fs=$3
|
||||||
|
|
||||||
|
typeset dtst
|
||||||
typeset oldval
|
typeset oldval
|
||||||
typeset stamp=${perm}.${user}.$($DATE +'%F-%R:%S')
|
typeset stamp=${perm}.${user}.$($DATE +'%F-%R:%S')
|
||||||
typeset newfs=$fs/newfs.$stamp
|
typeset newfs=$fs/newfs.$stamp
|
||||||
@ -444,27 +446,27 @@ function verify_fs_receive
|
|||||||
log_must eval "$ZFS send $dtstsnap > $bak_root"
|
log_must eval "$ZFS send $dtstsnap > $bak_root"
|
||||||
log_must $ZFS destroy -rf $dtst
|
log_must $ZFS destroy -rf $dtst
|
||||||
|
|
||||||
user_run $user eval "$ZFS receive $dtst < $bak_root"
|
user_run $user $ZFS receive $dtst < $bak_root
|
||||||
if datasetexists $dtstsnap ; then
|
if datasetexists $dtstsnap ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_must $ZFS allow $user create $fs
|
log_must $ZFS allow $user create $fs
|
||||||
user_run $user eval "$ZFS receive $dtst < $bak_root"
|
user_run $user $ZFS receive $dtst < $bak_root
|
||||||
log_must $ZFS unallow $user create $fs
|
log_must $ZFS unallow $user create $fs
|
||||||
if datasetexists $dtstsnap ; then
|
if datasetexists $dtstsnap ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_must $ZFS allow $user mount $fs
|
log_must $ZFS allow $user mount $fs
|
||||||
user_run $user eval "$ZFS receive $dtst < $bak_root"
|
user_run $user $ZFS receive $dtst < $bak_root
|
||||||
log_must $ZFS unallow $user mount $fs
|
log_must $ZFS unallow $user mount $fs
|
||||||
if datasetexists $dtstsnap ; then
|
if datasetexists $dtstsnap ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_must $ZFS allow $user mount,create $fs
|
log_must $ZFS allow $user mount,create $fs
|
||||||
user_run $user eval "$ZFS receive $dtst < $bak_root"
|
user_run $user $ZFS receive $dtst < $bak_root
|
||||||
log_must $ZFS unallow $user mount,create $fs
|
log_must $ZFS unallow $user mount,create $fs
|
||||||
if ! datasetexists $dtstsnap ; then
|
if ! datasetexists $dtstsnap ; then
|
||||||
return 1
|
return 1
|
||||||
@ -500,6 +502,7 @@ function verify_userprop
|
|||||||
if [[ $stamp != $(get_prop "$user:ts" $dtst) ]]; then
|
if [[ $stamp != $(get_prop "$user:ts" $dtst) ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
log_must $ZFS inherit "$user:ts" $dtst
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@ -581,7 +584,6 @@ function verify_fs_create
|
|||||||
typeset stamp=${perm}.${user}.$($DATE +'%F-%R:%S')
|
typeset stamp=${perm}.${user}.$($DATE +'%F-%R:%S')
|
||||||
typeset newfs=$fs/nfs.$stamp
|
typeset newfs=$fs/nfs.$stamp
|
||||||
typeset newvol=$fs/nvol.$stamp
|
typeset newvol=$fs/nvol.$stamp
|
||||||
typeset check_refrev=false
|
|
||||||
|
|
||||||
user_run $user $ZFS create $newfs
|
user_run $user $ZFS create $newfs
|
||||||
if datasetexists $newfs ; then
|
if datasetexists $newfs ; then
|
||||||
@ -594,9 +596,6 @@ function verify_fs_create
|
|||||||
if ! datasetexists $newfs ; then
|
if ! datasetexists $newfs ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if support_refrev $newfs; then
|
|
||||||
check_refrev=true
|
|
||||||
fi
|
|
||||||
log_must $ZFS destroy $newfs
|
log_must $ZFS destroy $newfs
|
||||||
|
|
||||||
if is_global_zone ; then
|
if is_global_zone ; then
|
||||||
@ -635,26 +634,20 @@ function verify_fs_create
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $check_refrev == true ]]; then
|
log_must $ZFS allow $user refreservation $fs
|
||||||
log_must $ZFS allow $user refreservation $fs
|
user_run $user $ZFS create -V 150m $newvol
|
||||||
user_run $user $ZFS create -V 150m $newvol
|
log_must $ZFS unallow $user refreservation $fs
|
||||||
log_must $ZFS unallow $user refreservation $fs
|
if datasetexists $newvol ; then
|
||||||
if datasetexists $newvol ; then
|
return 1
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_must $ZFS allow $user mount $fs
|
log_must $ZFS allow $user mount $fs
|
||||||
log_must $ZFS allow $user reservation $fs
|
log_must $ZFS allow $user reservation $fs
|
||||||
if [[ $check_refrev == true ]]; then
|
log_must $ZFS allow $user refreservation $fs
|
||||||
log_must $ZFS allow $user refreservation $fs
|
|
||||||
fi
|
|
||||||
user_run $user $ZFS create -V 150m $newvol
|
user_run $user $ZFS create -V 150m $newvol
|
||||||
log_must $ZFS unallow $user mount $fs
|
log_must $ZFS unallow $user mount $fs
|
||||||
log_must $ZFS unallow $user reservation $fs
|
log_must $ZFS unallow $user reservation $fs
|
||||||
if [[ $check_refrev == true ]]; then
|
log_must $ZFS unallow $user refreservation $fs
|
||||||
log_must $ZFS unallow $user refreservation $fs
|
|
||||||
fi
|
|
||||||
if ! datasetexists $newvol ; then
|
if ! datasetexists $newvol ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@ -708,13 +701,6 @@ function verify_fs_snapshot
|
|||||||
log_must $ZFS umount $fs
|
log_must $ZFS umount $fs
|
||||||
fi
|
fi
|
||||||
user_run $user $ZFS snapshot $snap
|
user_run $user $ZFS snapshot $snap
|
||||||
if datasetexists $snap ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_must $ZFS allow $user mount $fs
|
|
||||||
user_run $user $ZFS snapshot $snap
|
|
||||||
log_must $ZFS unallow $user mount $fs
|
|
||||||
if ! datasetexists $snap ; then
|
if ! datasetexists $snap ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@ -724,31 +710,20 @@ function verify_fs_snapshot
|
|||||||
log_must $ZFS mount $fs
|
log_must $ZFS mount $fs
|
||||||
fi
|
fi
|
||||||
user_run $user $ZFS snapshot $snap
|
user_run $user $ZFS snapshot $snap
|
||||||
if datasetexists $snap ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_must $ZFS allow $user mount $fs
|
|
||||||
user_run $user $ZFS snapshot $snap
|
|
||||||
log_must $ZFS unallow $user mount $fs
|
|
||||||
if ! datasetexists $snap ; then
|
if ! datasetexists $snap ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
log_must $ZFS destroy $snap
|
log_must $ZFS destroy $snap
|
||||||
|
|
||||||
typeset snapdir=${mntpt}/$(get_snapdir_name)/snap.$stamp
|
# TODO
|
||||||
user_run $user $MKDIR $snapdir
|
# FreeBSD does not yet support creating snapshots with mkdir.
|
||||||
if datasetexists $snap ; then
|
# See tests/sys/cddl/zfs/tests/snapshot/snapshot_015_pos.ksh
|
||||||
return 1
|
# typeset snapdir=${mntpt}/$(get_snapdir_name)/snap.$stamp
|
||||||
fi
|
# user_run $user $MKDIR $snapdir
|
||||||
|
# if ! datasetexists $snap ; then
|
||||||
log_must $ZFS allow $user mount $fs
|
# return 1
|
||||||
user_run $user $MKDIR $snapdir
|
# fi
|
||||||
log_must $ZFS unallow $user mount $fs
|
# log_must $ZFS destroy $snap
|
||||||
if ! datasetexists $snap ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
log_must $ZFS destroy $snap
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@ -773,23 +748,14 @@ function verify_fs_rollback
|
|||||||
log_must $TOUCH $mntpt/testfile.$stamp
|
log_must $TOUCH $mntpt/testfile.$stamp
|
||||||
|
|
||||||
user_run $user $ZFS rollback -R $snap
|
user_run $user $ZFS rollback -R $snap
|
||||||
$SLEEP 10
|
if [[ -e $mntpt/testfile.$stamp ]]; then
|
||||||
if is_global_zone ; then
|
return 1
|
||||||
if [[ $oldval == $(datasetcksum $fs) ]]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# datasetcksum can not be used in local zone
|
|
||||||
if [[ ! -e $mntpt/testfile.$stamp ]]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# rollback on mounted fs has to be with mount permission
|
# rollback on mounted fs has to be with mount permission
|
||||||
log_must $ZFS allow $user mount $fs
|
log_must $ZFS allow $user mount $fs
|
||||||
user_run $user $ZFS rollback -R $snap
|
user_run $user $ZFS rollback -R $snap
|
||||||
log_must $ZFS unallow $user mount $fs
|
log_must $ZFS unallow $user mount $fs
|
||||||
$SLEEP 10
|
|
||||||
if is_global_zone ; then
|
if is_global_zone ; then
|
||||||
if [[ $oldval != $(datasetcksum $fs) ]]; then
|
if [[ $oldval != $(datasetcksum $fs) ]]; then
|
||||||
return 1
|
return 1
|
||||||
@ -1083,7 +1049,7 @@ function verify_fs_mountpoint
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function verify_fs_promote
|
function verify_promote
|
||||||
{
|
{
|
||||||
typeset user=$1
|
typeset user=$1
|
||||||
typeset perm=$2
|
typeset perm=$2
|
||||||
@ -1102,13 +1068,14 @@ function verify_fs_promote
|
|||||||
typeset clone_orig=$(get_prop origin $clone)
|
typeset clone_orig=$(get_prop origin $clone)
|
||||||
|
|
||||||
user_run $user $ZFS promote $fs
|
user_run $user $ZFS promote $fs
|
||||||
# promote should fail if original fs does not have
|
# promote should fail if original fs does not have mount and promote
|
||||||
# promote permission
|
# permissions
|
||||||
if [[ $fs_orig != $(get_prop origin $fs) || \
|
if [[ $fs_orig != $(get_prop origin $fs) || \
|
||||||
$clone_orig != $(get_prop origin $clone) ]]; then
|
$clone_orig != $(get_prop origin $clone) ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# promote should fail if original fs does not have mount permission
|
||||||
log_must $ZFS allow $user promote $clone
|
log_must $ZFS allow $user promote $clone
|
||||||
user_run $user $ZFS promote $fs
|
user_run $user $ZFS promote $fs
|
||||||
log_must $ZFS unallow $user promote $clone
|
log_must $ZFS unallow $user promote $clone
|
||||||
@ -1117,6 +1084,7 @@ function verify_fs_promote
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# promote should fail if original fs does not have promote permission
|
||||||
log_must $ZFS allow $user mount $fs
|
log_must $ZFS allow $user mount $fs
|
||||||
user_run $user $ZFS promote $fs
|
user_run $user $ZFS promote $fs
|
||||||
log_must $ZFS unallow $user mount $fs
|
log_must $ZFS unallow $user mount $fs
|
||||||
@ -1503,16 +1471,10 @@ function verify_vol_snapshot
|
|||||||
typeset snap=$vol@snap.$stamp
|
typeset snap=$vol@snap.$stamp
|
||||||
|
|
||||||
user_run $user $ZFS snapshot $snap
|
user_run $user $ZFS snapshot $snap
|
||||||
if datasetexists $snap ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_must $ZFS allow $user mount $vol
|
|
||||||
user_run $user $ZFS snapshot $snap
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
if ! datasetexists $snap ; then
|
if ! datasetexists $snap ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
log_must $ZFS destroy $snap
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@ -1535,16 +1497,6 @@ function verify_vol_rollback
|
|||||||
bs=512 count=1
|
bs=512 count=1
|
||||||
|
|
||||||
user_run $user $ZFS rollback -R $snap
|
user_run $user $ZFS rollback -R $snap
|
||||||
$SLEEP 10
|
|
||||||
if [[ $oldval == $(datasetcksum $vol) ]]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# rollback on volume has to be with mount permission
|
|
||||||
log_must $ZFS allow $user mount $vol
|
|
||||||
user_run $user $ZFS rollback -R $snap
|
|
||||||
$SLEEP 10
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
if [[ $oldval != $(datasetcksum $vol) ]]; then
|
if [[ $oldval != $(datasetcksum $vol) ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@ -1645,130 +1597,6 @@ function verify_vol_rename
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function verify_vol_promote
|
|
||||||
{
|
|
||||||
typeset user=$1
|
|
||||||
typeset perm=$2
|
|
||||||
typeset vol=$3
|
|
||||||
|
|
||||||
typeset stamp=${perm}.${user}.$($DATE +'%F-%R:%S')
|
|
||||||
typeset basevol=${vol%/*}
|
|
||||||
typeset snap=$vol@snap.$stamp
|
|
||||||
typeset clone=$basevol/cvol.$stamp
|
|
||||||
|
|
||||||
log_must $ZFS snapshot $snap
|
|
||||||
log_must $ZFS clone $snap $clone
|
|
||||||
log_must $ZFS promote $clone
|
|
||||||
|
|
||||||
typeset vol_orig=$(get_prop origin $vol)
|
|
||||||
typeset clone_orig=$(get_prop origin $clone)
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 1
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 2
|
|
||||||
log_must $ZFS allow $user promote $clone
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user promote $clone
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 3
|
|
||||||
log_must $ZFS allow $user mount $vol
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 4
|
|
||||||
log_must $ZFS allow $user mount $clone
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user mount $clone
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 5
|
|
||||||
log_must $ZFS allow $user promote $clone
|
|
||||||
log_must $ZFS allow $user mount $vol
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user promote $clone
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 6
|
|
||||||
log_must $ZFS allow $user promote $clone
|
|
||||||
log_must $ZFS allow $user mount $clone
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user promote $clone
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote should fail if $vol and $clone
|
|
||||||
# miss either mount or promote permission
|
|
||||||
# case 7
|
|
||||||
log_must $ZFS allow $user mount $vol
|
|
||||||
log_must $ZFS allow $user mount $clone
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
log_must $ZFS unallow $user mount $clone
|
|
||||||
if [[ $vol_orig != $(get_prop origin $vol) || \
|
|
||||||
$clone_orig != $(get_prop origin $clone) ]];
|
|
||||||
then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# promote only succeeds when $vol and $clone
|
|
||||||
# have both mount and promote permission
|
|
||||||
# case 8
|
|
||||||
log_must $ZFS allow $user promote $clone
|
|
||||||
log_must $ZFS allow $user mount $vol
|
|
||||||
log_must $ZFS allow $user mount $clone
|
|
||||||
user_run $user $ZFS promote $vol
|
|
||||||
log_must $ZFS unallow $user promote $clone
|
|
||||||
log_must $ZFS unallow $user mount $vol
|
|
||||||
log_must $ZFS unallow $user mount $clone
|
|
||||||
if [[ $snap != $(get_prop origin $clone) || \
|
|
||||||
$clone_orig != $(get_prop origin $vol) ]]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function verify_vol_volsize
|
function verify_vol_volsize
|
||||||
{
|
{
|
||||||
typeset user=$1
|
typeset user=$1
|
||||||
@ -1779,17 +1607,9 @@ function verify_vol_volsize
|
|||||||
oldval=$(get_prop volsize $vol)
|
oldval=$(get_prop volsize $vol)
|
||||||
(( newval = oldval * 2 ))
|
(( newval = oldval * 2 ))
|
||||||
|
|
||||||
typeset check_refrev=false
|
|
||||||
if support_refrev $vol; then
|
|
||||||
check_refrev=true
|
|
||||||
fi
|
|
||||||
typeset reserv_size
|
typeset reserv_size
|
||||||
|
|
||||||
if [[ $check_refrev == true ]]; then
|
reserv_size=$(get_prop refreservation $vol)
|
||||||
reserv_size=$(get_prop refreservation $vol)
|
|
||||||
else
|
|
||||||
reserv_size=$(get_prop reservation $vol)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "0" == $reserv_size ]]; then
|
if [[ "0" == $reserv_size ]]; then
|
||||||
# sparse volume
|
# sparse volume
|
||||||
@ -1803,20 +1623,16 @@ function verify_vol_volsize
|
|||||||
# normal volume, reservation permission
|
# normal volume, reservation permission
|
||||||
# is required
|
# is required
|
||||||
user_run $user $ZFS set volsize=$newval $vol
|
user_run $user $ZFS set volsize=$newval $vol
|
||||||
if [[ $newval == $(get_prop volsize $vol) ]];
|
zfs get -p volsize $vol
|
||||||
|
if [[ $newval != $(get_prop volsize $vol) ]];
|
||||||
then
|
then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_must $ZFS allow $user reservation $vol
|
log_must $ZFS allow $user refreservation $vol
|
||||||
if [[ $check_refrev == true ]]; then
|
|
||||||
log_must $ZFS allow $user refreservation $vol
|
|
||||||
fi
|
|
||||||
user_run $user $ZFS set volsize=$newval $vol
|
user_run $user $ZFS set volsize=$newval $vol
|
||||||
log_must $ZFS unallow $user reservation $vol
|
log_must $ZFS unallow $user reservation $vol
|
||||||
if [[ $check_refrev == true ]]; then
|
log_must $ZFS unallow $user refreservation $vol
|
||||||
log_must $ZFS unallow $user refreservation $vol
|
|
||||||
fi
|
|
||||||
if [[ $oldval == $(get_prop volsize $vol) ]];
|
if [[ $oldval == $(get_prop volsize $vol) ]];
|
||||||
then
|
then
|
||||||
return 1
|
return 1
|
||||||
@ -1888,15 +1704,3 @@ function verify_allow
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function support_refrev
|
|
||||||
{
|
|
||||||
typeset dataset=$1
|
|
||||||
|
|
||||||
$ZFS get refreservation $dataset > /dev/null 2>&1
|
|
||||||
if (( $? != 0 )); then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
@ -67,8 +67,6 @@ function cleanup
|
|||||||
if [[ $group_added == "TRUE" ]] ; then
|
if [[ $group_added == "TRUE" ]] ; then
|
||||||
del_group everyone
|
del_group everyone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
restore_root_datasets
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log_assert "everyone' is interpreted as a keyword even if a user " \
|
log_assert "everyone' is interpreted as a keyword even if a user " \
|
||||||
@ -111,7 +109,6 @@ for dtst in $DATASETS ; do
|
|||||||
log_must $ZFS allow everyone $perms $dtst
|
log_must $ZFS allow everyone $perms $dtst
|
||||||
log_must verify_perm $dtst $perms $EVERYONE
|
log_must verify_perm $dtst $perms $EVERYONE
|
||||||
done
|
done
|
||||||
log_must restore_root_datasets
|
|
||||||
if [[ $group_added == "TRUE" ]]; then
|
if [[ $group_added == "TRUE" ]]; then
|
||||||
log_must $GROUPDEL everyone
|
log_must $GROUPDEL everyone
|
||||||
fi
|
fi
|
||||||
|
@ -65,8 +65,6 @@ function cleanup
|
|||||||
if $ID $STAFF_GROUP > /dev/null 2>&1; then
|
if $ID $STAFF_GROUP > /dev/null 2>&1; then
|
||||||
log_must del_user $STAFF_GROUP
|
log_must del_user $STAFF_GROUP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
restore_root_datasets
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log_assert "<user|group> is interpreted as user if possible, then as group."
|
log_assert "<user|group> is interpreted as user if possible, then as group."
|
||||||
|
@ -60,7 +60,6 @@
|
|||||||
verify_runnable "both"
|
verify_runnable "both"
|
||||||
|
|
||||||
log_assert "Verify option '-l' only allow permission to the dataset itself."
|
log_assert "Verify option '-l' only allow permission to the dataset itself."
|
||||||
log_onexit restore_root_datasets
|
|
||||||
|
|
||||||
childfs=$ROOT_TESTFS/childfs
|
childfs=$ROOT_TESTFS/childfs
|
||||||
|
|
||||||
@ -74,10 +73,6 @@ else
|
|||||||
allow,userprop"
|
allow,userprop"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_version "5.10" ; then
|
|
||||||
perms="${perms},send"
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_must $ZFS create $childfs
|
log_must $ZFS create $childfs
|
||||||
|
|
||||||
for dtst in $DATASETS ; do
|
for dtst in $DATASETS ; do
|
||||||
@ -113,6 +108,4 @@ for dtst in $DATASETS ; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
log_must restore_root_datasets
|
|
||||||
|
|
||||||
log_pass "Verify option '-l' only allow permission to the dataset itself pass."
|
log_pass "Verify option '-l' only allow permission to the dataset itself pass."
|
||||||
|
@ -65,7 +65,6 @@
|
|||||||
verify_runnable "both"
|
verify_runnable "both"
|
||||||
|
|
||||||
log_assert "Verify permission set can be masked on descendent dataset."
|
log_assert "Verify permission set can be masked on descendent dataset."
|
||||||
log_onexit restore_root_datasets
|
|
||||||
|
|
||||||
typeset perms1="snapshot,reservation,compression"
|
typeset perms1="snapshot,reservation,compression"
|
||||||
eval set -A dataset $DATASETS
|
eval set -A dataset $DATASETS
|
||||||
|
@ -60,7 +60,6 @@ verify_runnable "both"
|
|||||||
|
|
||||||
log_assert "Verify privileged user has correct permissions once which was "\
|
log_assert "Verify privileged user has correct permissions once which was "\
|
||||||
"delegated to him in datasets"
|
"delegated to him in datasets"
|
||||||
log_onexit restore_root_datasets
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Results in Results in
|
# Results in Results in
|
||||||
@ -79,7 +78,6 @@ set -A perms create true false \
|
|||||||
compression true true \
|
compression true true \
|
||||||
canmount true false \
|
canmount true false \
|
||||||
atime true false \
|
atime true false \
|
||||||
devices true false \
|
|
||||||
exec true false \
|
exec true false \
|
||||||
volsize false true \
|
volsize false true \
|
||||||
setuid true false \
|
setuid true false \
|
||||||
@ -92,16 +90,14 @@ set -A perms create true false \
|
|||||||
clone true true \
|
clone true true \
|
||||||
rename true true \
|
rename true true \
|
||||||
promote true true \
|
promote true true \
|
||||||
zoned true false \
|
|
||||||
shareiscsi true true \
|
|
||||||
xattr true false \
|
|
||||||
receive true false \
|
receive true false \
|
||||||
destroy true true
|
destroy true true
|
||||||
if is_global_zone; then
|
# TODO: shareiscsi is not yet supported on FreeBSD
|
||||||
typeset -i n=${#perms[@]}
|
# shareiscsi true true
|
||||||
perms[((n))]="sharenfs"; perms[((n+1))]="true"; perms[((n+2))]="false"
|
# the sharenfs test is Solaris-specific. TODO: port it to FreeBSD.
|
||||||
perms[((n+3))]="share"; perms[((n+4))]="true"; perms[((n+5))]="false"
|
#typeset -i n=${#perms[@]}
|
||||||
fi
|
#perms[((n))]="sharenfs"; perms[((n+1))]="true"; perms[((n+2))]="false"
|
||||||
|
#perms[((n+3))]="share"; perms[((n+4))]="true"; perms[((n+5))]="false"
|
||||||
|
|
||||||
for dtst in $DATASETS; do
|
for dtst in $DATASETS; do
|
||||||
typeset -i k=1
|
typeset -i k=1
|
||||||
|
@ -56,24 +56,16 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
verify_runnable "global"
|
|
||||||
|
|
||||||
function cleanup
|
|
||||||
{
|
|
||||||
log_must $ZPOOL set delegation=on $TESTPOOL
|
|
||||||
log_must restore_root_datasets
|
|
||||||
}
|
|
||||||
|
|
||||||
log_assert "Verify privileged user can not use permissions properly when " \
|
log_assert "Verify privileged user can not use permissions properly when " \
|
||||||
"delegation property is set off"
|
"delegation property is set off"
|
||||||
log_onexit cleanup
|
|
||||||
|
|
||||||
|
|
||||||
set -A perms create snapshot mount send allow quota reservation \
|
set -A perms create snapshot mount send allow quota reservation \
|
||||||
recordsize mountpoint checksum compression canmount atime \
|
recordsize mountpoint checksum compression canmount atime \
|
||||||
devices exec volsize setuid readonly snapdir userprop \
|
devices exec volsize setuid readonly snapdir userprop \
|
||||||
aclmode aclinherit rollback clone rename promote \
|
aclmode aclinherit rollback clone rename promote \
|
||||||
zoned shareiscsi xattr receive destroy sharenfs share
|
xattr receive destroy
|
||||||
|
# TODO: add sharenfs and share after the Solarisisms have been removed from
|
||||||
|
# those tests
|
||||||
|
|
||||||
log_must $ZPOOL set delegation=off $TESTPOOL
|
log_must $ZPOOL set delegation=off $TESTPOOL
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ atf_test_case zfs_allow_001_pos cleanup
|
|||||||
zfs_allow_001_pos_head()
|
zfs_allow_001_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "everyone' is interpreted as a keyword even if a useror group named 'everyone' exists."
|
atf_set "descr" "everyone' is interpreted as a keyword even if a useror group named 'everyone' exists."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_001_pos_body()
|
zfs_allow_001_pos_body()
|
||||||
{
|
{
|
||||||
@ -56,7 +56,7 @@ atf_test_case zfs_allow_002_pos cleanup
|
|||||||
zfs_allow_002_pos_head()
|
zfs_allow_002_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "<user|group> is interpreted as user if possible, then as group."
|
atf_set "descr" "<user|group> is interpreted as user if possible, then as group."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_002_pos_body()
|
zfs_allow_002_pos_body()
|
||||||
{
|
{
|
||||||
@ -82,7 +82,7 @@ atf_test_case zfs_allow_003_pos cleanup
|
|||||||
zfs_allow_003_pos_head()
|
zfs_allow_003_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify option '-l' only allow permission to the dataset itself."
|
atf_set "descr" "Verify option '-l' only allow permission to the dataset itself."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_003_pos_body()
|
zfs_allow_003_pos_body()
|
||||||
{
|
{
|
||||||
@ -108,7 +108,7 @@ atf_test_case zfs_allow_004_pos cleanup
|
|||||||
zfs_allow_004_pos_head()
|
zfs_allow_004_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify option '-d' allow permission to the descendent datasets."
|
atf_set "descr" "Verify option '-d' allow permission to the descendent datasets."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_004_pos_body()
|
zfs_allow_004_pos_body()
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ atf_test_case zfs_allow_005_pos cleanup
|
|||||||
zfs_allow_005_pos_head()
|
zfs_allow_005_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify option '-c' will be granted locally to the creator."
|
atf_set "descr" "Verify option '-c' will be granted locally to the creator."
|
||||||
atf_set "require.progs" zfs svcs runwattr
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_005_pos_body()
|
zfs_allow_005_pos_body()
|
||||||
{
|
{
|
||||||
@ -160,7 +160,7 @@ atf_test_case zfs_allow_006_pos cleanup
|
|||||||
zfs_allow_006_pos_head()
|
zfs_allow_006_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Changing permissions in a set will change what is allowedwherever the set is used."
|
atf_set "descr" "Changing permissions in a set will change what is allowedwherever the set is used."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_006_pos_body()
|
zfs_allow_006_pos_body()
|
||||||
{
|
{
|
||||||
@ -186,7 +186,7 @@ atf_test_case zfs_allow_007_pos cleanup
|
|||||||
zfs_allow_007_pos_head()
|
zfs_allow_007_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify permission set can be masked on descendent dataset."
|
atf_set "descr" "Verify permission set can be masked on descendent dataset."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_007_pos_body()
|
zfs_allow_007_pos_body()
|
||||||
{
|
{
|
||||||
@ -212,7 +212,7 @@ atf_test_case zfs_allow_008_pos cleanup
|
|||||||
zfs_allow_008_pos_head()
|
zfs_allow_008_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify non-root user can allow permissions."
|
atf_set "descr" "Verify non-root user can allow permissions."
|
||||||
atf_set "require.progs" zfs svcs runwattr
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_008_pos_body()
|
zfs_allow_008_pos_body()
|
||||||
{
|
{
|
||||||
@ -238,7 +238,7 @@ atf_test_case zfs_allow_009_neg cleanup
|
|||||||
zfs_allow_009_neg_head()
|
zfs_allow_009_neg_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify invalid arguments are handled correctly."
|
atf_set "descr" "Verify invalid arguments are handled correctly."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_009_neg_body()
|
zfs_allow_009_neg_body()
|
||||||
{
|
{
|
||||||
@ -263,8 +263,8 @@ zfs_allow_009_neg_cleanup()
|
|||||||
atf_test_case zfs_allow_010_pos cleanup
|
atf_test_case zfs_allow_010_pos cleanup
|
||||||
zfs_allow_010_pos_head()
|
zfs_allow_010_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify privileged user has correct permissions once which wasdelegated to him in datasets"
|
atf_set "descr" "Verify privileged user has correct permissions once which was delegated to him in datasets"
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_010_pos_body()
|
zfs_allow_010_pos_body()
|
||||||
{
|
{
|
||||||
@ -289,8 +289,8 @@ zfs_allow_010_pos_cleanup()
|
|||||||
atf_test_case zfs_allow_011_neg cleanup
|
atf_test_case zfs_allow_011_neg cleanup
|
||||||
zfs_allow_011_neg_head()
|
zfs_allow_011_neg_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify zpool subcmds and system readonly properties can't bedelegated."
|
atf_set "descr" "Verify zpool subcmds and system readonly properties can't be delegated."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_011_neg_body()
|
zfs_allow_011_neg_body()
|
||||||
{
|
{
|
||||||
@ -315,8 +315,8 @@ zfs_allow_011_neg_cleanup()
|
|||||||
atf_test_case zfs_allow_012_neg cleanup
|
atf_test_case zfs_allow_012_neg cleanup
|
||||||
zfs_allow_012_neg_head()
|
zfs_allow_012_neg_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify privileged user can not use permissions properly whendelegation property is set off"
|
atf_set "descr" "Verify privileged user can not use permissions properly when delegation property is set off"
|
||||||
atf_set "require.progs" zfs zpool svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_allow_012_neg_body()
|
zfs_allow_012_neg_body()
|
||||||
{
|
{
|
||||||
|
@ -62,7 +62,7 @@ log_assert "zfs unallow won't remove those permissions which inherited from " \
|
|||||||
"its parent dataset."
|
"its parent dataset."
|
||||||
log_onexit restore_root_datasets
|
log_onexit restore_root_datasets
|
||||||
|
|
||||||
perm1="atime,devices"; perm2="compression,checksum"
|
perm1="atime"; perm2="compression,checksum"
|
||||||
log_must $ZFS create $SUBFS
|
log_must $ZFS create $SUBFS
|
||||||
log_must $ZFS allow $STAFF1 $perm1 $ROOT_TESTFS
|
log_must $ZFS allow $STAFF1 $perm1 $ROOT_TESTFS
|
||||||
log_must $ZFS allow $STAFF1 $perm2 $SUBFS
|
log_must $ZFS allow $STAFF1 $perm2 $SUBFS
|
||||||
|
@ -30,7 +30,7 @@ atf_test_case zfs_unallow_001_pos cleanup
|
|||||||
zfs_unallow_001_pos_head()
|
zfs_unallow_001_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify '-l' only removed the local permissions."
|
atf_set "descr" "Verify '-l' only removed the local permissions."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_001_pos_body()
|
zfs_unallow_001_pos_body()
|
||||||
{
|
{
|
||||||
@ -56,7 +56,7 @@ atf_test_case zfs_unallow_002_pos cleanup
|
|||||||
zfs_unallow_002_pos_head()
|
zfs_unallow_002_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify '-d' only removed the descendent permissions."
|
atf_set "descr" "Verify '-d' only removed the descendent permissions."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_002_pos_body()
|
zfs_unallow_002_pos_body()
|
||||||
{
|
{
|
||||||
@ -82,7 +82,7 @@ atf_test_case zfs_unallow_003_pos cleanup
|
|||||||
zfs_unallow_003_pos_head()
|
zfs_unallow_003_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify options '-r' and '-l'+'-d' will unallow permission tothis dataset and the descendent datasets."
|
atf_set "descr" "Verify options '-r' and '-l'+'-d' will unallow permission tothis dataset and the descendent datasets."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_003_pos_body()
|
zfs_unallow_003_pos_body()
|
||||||
{
|
{
|
||||||
@ -108,7 +108,7 @@ atf_test_case zfs_unallow_004_pos cleanup
|
|||||||
zfs_unallow_004_pos_head()
|
zfs_unallow_004_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify '-s' will remove permissions from the named set."
|
atf_set "descr" "Verify '-s' will remove permissions from the named set."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_004_pos_body()
|
zfs_unallow_004_pos_body()
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ atf_test_case zfs_unallow_005_pos cleanup
|
|||||||
zfs_unallow_005_pos_head()
|
zfs_unallow_005_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify option '-c' will remove the created permission set."
|
atf_set "descr" "Verify option '-c' will remove the created permission set."
|
||||||
atf_set "require.progs" zfs svcs runwattr
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_005_pos_body()
|
zfs_unallow_005_pos_body()
|
||||||
{
|
{
|
||||||
@ -160,7 +160,7 @@ atf_test_case zfs_unallow_006_pos cleanup
|
|||||||
zfs_unallow_006_pos_head()
|
zfs_unallow_006_pos_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "Verify option '-u', '-g' and '-e' only removed the specified typepermissions set."
|
atf_set "descr" "Verify option '-u', '-g' and '-e' only removed the specified typepermissions set."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_006_pos_body()
|
zfs_unallow_006_pos_body()
|
||||||
{
|
{
|
||||||
@ -186,7 +186,7 @@ atf_test_case zfs_unallow_007_neg cleanup
|
|||||||
zfs_unallow_007_neg_head()
|
zfs_unallow_007_neg_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "zfs unallow won't remove those permissions which inherited fromits parent dataset."
|
atf_set "descr" "zfs unallow won't remove those permissions which inherited fromits parent dataset."
|
||||||
atf_set "require.progs" zfs svcs
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_007_neg_body()
|
zfs_unallow_007_neg_body()
|
||||||
{
|
{
|
||||||
@ -212,7 +212,7 @@ atf_test_case zfs_unallow_008_neg cleanup
|
|||||||
zfs_unallow_008_neg_head()
|
zfs_unallow_008_neg_head()
|
||||||
{
|
{
|
||||||
atf_set "descr" "zfs unallow can handle invalid arguments."
|
atf_set "descr" "zfs unallow can handle invalid arguments."
|
||||||
atf_set "require.progs" zfs svcs runwattr
|
atf_set "require.progs" zfs sudo
|
||||||
}
|
}
|
||||||
zfs_unallow_008_neg_body()
|
zfs_unallow_008_neg_body()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user