mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
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/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
|
||||||
|
@ -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']
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ SUBDIRS = \
|
|||||||
cache \
|
cache \
|
||||||
cachefile \
|
cachefile \
|
||||||
casenorm \
|
casenorm \
|
||||||
|
chattr \
|
||||||
checksum \
|
checksum \
|
||||||
clean_mirror \
|
clean_mirror \
|
||||||
cli_root \
|
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