Add test for chattr
Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
This commit is contained in:
parent
a5248129b8
commit
b4d8e2be03
@ -180,6 +180,7 @@ AC_CONFIG_FILES([
|
||||
tests/zfs-tests/tests/functional/cachefile/Makefile
|
||||
tests/zfs-tests/tests/functional/casenorm/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/cli_root/Makefile
|
||||
tests/zfs-tests/tests/functional/cli_root/zdb/Makefile
|
||||
|
@ -60,6 +60,9 @@ tests = ['cache_002_pos', 'cache_003_pos', 'cache_004_neg',
|
||||
[tests/functional/casenorm]
|
||||
tests = ['case_all_values', 'norm_all_values']
|
||||
|
||||
[tests/functional/chattr]
|
||||
tests = ['chattr_001_pos', 'chattr_002_neg']
|
||||
|
||||
[tests/functional/checksum]
|
||||
tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'filetest_001_pos']
|
||||
|
||||
|
@ -5,6 +5,7 @@ SUBDIRS = \
|
||||
cache \
|
||||
cachefile \
|
||||
casenorm \
|
||||
chattr \
|
||||
checksum \
|
||||
clean_mirror \
|
||||
cli_root \
|
||||
|
6
tests/zfs-tests/tests/functional/chattr/Makefile.am
Normal file
6
tests/zfs-tests/tests/functional/chattr/Makefile.am
Normal 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
|
75
tests/zfs-tests/tests/functional/chattr/chattr_001_pos.ksh
Executable file
75
tests/zfs-tests/tests/functional/chattr/chattr_001_pos.ksh
Executable 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"
|
81
tests/zfs-tests/tests/functional/chattr/chattr_002_neg.ksh
Executable file
81
tests/zfs-tests/tests/functional/chattr/chattr_002_neg.ksh
Executable 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"
|
37
tests/zfs-tests/tests/functional/chattr/cleanup.ksh
Executable file
37
tests/zfs-tests/tests/functional/chattr/cleanup.ksh
Executable 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
|
44
tests/zfs-tests/tests/functional/chattr/setup.ksh
Executable file
44
tests/zfs-tests/tests/functional/chattr/setup.ksh
Executable 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
|
Loading…
Reference in New Issue
Block a user