Add test for chattr

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
This commit is contained in:
Chunwei Chen 2016-12-16 15:15:48 -08:00
parent a5248129b8
commit b4d8e2be03
8 changed files with 248 additions and 0 deletions

View File

@ -180,6 +180,7 @@ AC_CONFIG_FILES([
tests/zfs-tests/tests/functional/cachefile/Makefile tests/zfs-tests/tests/functional/cachefile/Makefile
tests/zfs-tests/tests/functional/casenorm/Makefile tests/zfs-tests/tests/functional/casenorm/Makefile
tests/zfs-tests/tests/functional/checksum/Makefile tests/zfs-tests/tests/functional/checksum/Makefile
tests/zfs-tests/tests/functional/chattr/Makefile
tests/zfs-tests/tests/functional/clean_mirror/Makefile tests/zfs-tests/tests/functional/clean_mirror/Makefile
tests/zfs-tests/tests/functional/cli_root/Makefile tests/zfs-tests/tests/functional/cli_root/Makefile
tests/zfs-tests/tests/functional/cli_root/zdb/Makefile tests/zfs-tests/tests/functional/cli_root/zdb/Makefile

View File

@ -60,6 +60,9 @@ tests = ['cache_002_pos', 'cache_003_pos', 'cache_004_neg',
[tests/functional/casenorm] [tests/functional/casenorm]
tests = ['case_all_values', 'norm_all_values'] tests = ['case_all_values', 'norm_all_values']
[tests/functional/chattr]
tests = ['chattr_001_pos', 'chattr_002_neg']
[tests/functional/checksum] [tests/functional/checksum]
tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'filetest_001_pos'] tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'filetest_001_pos']

View File

@ -5,6 +5,7 @@ SUBDIRS = \
cache \ cache \
cachefile \ cachefile \
casenorm \ casenorm \
chattr \
checksum \ checksum \
clean_mirror \ clean_mirror \
cli_root \ cli_root \

View File

@ -0,0 +1,6 @@
pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/chattr
dist_pkgdata_SCRIPTS = \
setup.ksh \
cleanup.ksh \
chattr_001_pos.ksh \
chattr_002_neg.ksh

View File

@ -0,0 +1,75 @@
#!/bin/ksh -p
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2013 by Delphix. All rights reserved.
#
. $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/userquota/userquota_common.kshlib
#
#
# DESCRIPTION:
# Check whether chattr works as expected
#
#
# STRATEGY:
# 1. Create 3 files
# 2. Use chattr to make them writable, immutable and appendonly
# 3. Try to write and append to each file
#
set -A files writable immutable append
function cleanup
{
for i in ${files[*]}; do
log_must chattr -ia $TESTDIR/$i
log_must rm -f $TESTDIR/$i
done
}
log_onexit cleanup
log_assert "Check whether chattr works as expected"
log_must touch $TESTDIR/writable
log_must touch $TESTDIR/immutable
log_must touch $TESTDIR/append
log_must chattr -i $TESTDIR/writable
log_must chattr +i $TESTDIR/immutable
log_must chattr +a $TESTDIR/append
log_must echo test > $TESTDIR/writable
log_must echo test >> $TESTDIR/writable
log_mustnot echo test > $TESTDIR/immutable
log_mustnot echo test >> $TESTDIR/immutable
log_mustnot echo test > $TESTDIR/append
log_must echo test >> $TESTDIR/append
log_pass "chattr works as expected"

View File

@ -0,0 +1,81 @@
#!/bin/ksh -p
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2013 by Delphix. All rights reserved.
#
. $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/userquota/userquota_common.kshlib
#
#
# DESCRIPTION:
# Check whether unprivileged user can chattr
#
#
# STRATEGY:
# 1. Create 3 files
# 2. Use chattr to make them writable, immutable and appendonly
# 3. Try to chattr with unprivileged user
#
set -A files writable immutable append
function cleanup
{
for i in ${files[*]}; do
log_must chattr -ia $TESTDIR/$i
log_must rm -f $TESTDIR/$i
done
log_must $CHMOD 0755 $TESTDIR
}
log_onexit cleanup
log_assert "Check whether unprivileged user can chattr"
log_must $CHMOD 0777 $TESTDIR
log_must user_run $QUSER1 touch $TESTDIR/writable
log_must user_run $QUSER1 touch $TESTDIR/immutable
log_must user_run $QUSER1 touch $TESTDIR/append
log_must chattr -i $TESTDIR/writable
log_must chattr +i $TESTDIR/immutable
log_must chattr +a $TESTDIR/append
log_must user_run $QUSER1 chattr -i $TESTDIR/writable
log_must user_run $QUSER1 chattr -a $TESTDIR/writable
log_must user_run $QUSER1 chattr +i $TESTDIR/immutable
log_must user_run $QUSER1 chattr +a $TESTDIR/append
log_mustnot user_run $QUSER1 chattr +i $TESTDIR/writable
log_mustnot user_run $QUSER1 chattr +a $TESTDIR/writable
log_mustnot user_run $QUSER1 chattr -i $TESTDIR/immutable
log_mustnot user_run $QUSER1 chattr -a $TESTDIR/append
log_pass "Unprivileged user cannot chattr as expected"

View File

@ -0,0 +1,37 @@
#!/bin/ksh -p
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2013 by Delphix. All rights reserved.
#
. $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/userquota/userquota_common.kshlib
log_must clean_user_group
default_cleanup

View File

@ -0,0 +1,44 @@
#!/bin/ksh -p
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2013 by Delphix. All rights reserved.
#
. $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/userquota/userquota_common.kshlib
verify_runnable "both"
log_must clean_user_group
log_must add_group $QGROUP
log_must add_user $QGROUP $QUSER1
log_must add_user $QGROUP $QUSER2
DISK=${DISKS%% *}
default_setup $DISK