mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Add test for chattr
Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
This commit is contained in:
@@ -5,6 +5,7 @@ SUBDIRS = \
|
||||
cache \
|
||||
cachefile \
|
||||
casenorm \
|
||||
chattr \
|
||||
checksum \
|
||||
clean_mirror \
|
||||
cli_root \
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
@@ -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
@@ -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
|
||||
Reference in New Issue
Block a user