1*96c8483aSYuri Pankov#!/bin/ksh -p 2*96c8483aSYuri Pankov# 3*96c8483aSYuri Pankov# CDDL HEADER START 4*96c8483aSYuri Pankov# 5*96c8483aSYuri Pankov# The contents of this file are subject to the terms of the 6*96c8483aSYuri Pankov# Common Development and Distribution License (the "License"). 7*96c8483aSYuri Pankov# You may not use this file except in compliance with the License. 8*96c8483aSYuri Pankov# 9*96c8483aSYuri Pankov# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*96c8483aSYuri Pankov# or http://www.opensolaris.org/os/licensing. 11*96c8483aSYuri Pankov# See the License for the specific language governing permissions 12*96c8483aSYuri Pankov# and limitations under the License. 13*96c8483aSYuri Pankov# 14*96c8483aSYuri Pankov# When distributing Covered Code, include this CDDL HEADER in each 15*96c8483aSYuri Pankov# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*96c8483aSYuri Pankov# If applicable, add the following below this CDDL HEADER, with the 17*96c8483aSYuri Pankov# fields enclosed by brackets "[]" replaced with your own identifying 18*96c8483aSYuri Pankov# information: Portions Copyright [yyyy] [name of copyright owner] 19*96c8483aSYuri Pankov# 20*96c8483aSYuri Pankov# CDDL HEADER END 21*96c8483aSYuri Pankov# 22*96c8483aSYuri Pankov 23*96c8483aSYuri Pankov# 24*96c8483aSYuri Pankov# Copyright 2010 Sun Microsystems, Inc. All rights reserved. 25*96c8483aSYuri Pankov# 26*96c8483aSYuri Pankov 27*96c8483aSYuri Pankov# 28*96c8483aSYuri Pankov# ID: xattr_008 29*96c8483aSYuri Pankov# 30*96c8483aSYuri Pankov# DESCRIPTION: 31*96c8483aSYuri Pankov# Verify basic applications work with xattrs: cpio cp find mv pax tar 32*96c8483aSYuri Pankov# 33*96c8483aSYuri Pankov# STRATEGY: 34*96c8483aSYuri Pankov# 1. For each application 35*96c8483aSYuri Pankov# 2. Create an xattr and archive/move/copy/find files with xattr support 36*96c8483aSYuri Pankov# 3. Also check that when appropriate flag is not used, the xattr 37*96c8483aSYuri Pankov# doesn't get copied 38*96c8483aSYuri Pankov# 39*96c8483aSYuri Pankov 40*96c8483aSYuri Pankov. $STF_SUITE/include/libtest.ksh 41*96c8483aSYuri Pankov 42*96c8483aSYuri Pankovtc_id=xattr_008 43*96c8483aSYuri Pankovtc_desc="Verify basic applications work with xattrs: cpio cp find mv pax tar" 44*96c8483aSYuri Pankovprint_test_case $tc_id - $tc_desc 45*96c8483aSYuri Pankov 46*96c8483aSYuri Pankovif [[ $STC_CIFS_CLIENT_DEBUG == 1 ]] || \ 47*96c8483aSYuri Pankov [[ *:${STC_CIFS_CLIENT_DEBUG}:* == *:$tc_id:* ]]; then 48*96c8483aSYuri Pankov set -x 49*96c8483aSYuri Pankovfi 50*96c8483aSYuri Pankov 51*96c8483aSYuri Pankovserver=$(server_name) || return 52*96c8483aSYuri Pankov 53*96c8483aSYuri PankovCDIR=$(pwd) 54*96c8483aSYuri Pankovtestdir_init $TDIR 55*96c8483aSYuri Pankovsmbmount_clean $TMNT 56*96c8483aSYuri Pankovsmbmount_init $TMNT 57*96c8483aSYuri Pankov 58*96c8483aSYuri Pankovcmd="mount -F smbfs //$TUSER:$TPASS@$server/public $TMNT" 59*96c8483aSYuri Pankovcti_execute -i '' FAIL $cmd 60*96c8483aSYuri Pankovif [[ $? != 0 ]]; then 61*96c8483aSYuri Pankov cti_fail "FAIL: smbmount can't mount the public share unexpectedly" 62*96c8483aSYuri Pankov return 63*96c8483aSYuri Pankovelse 64*96c8483aSYuri Pankov cti_report "PASS: smbmount can mount the public share as expected" 65*96c8483aSYuri Pankovfi 66*96c8483aSYuri Pankov 67*96c8483aSYuri Pankovsmbmount_getmntopts $TMNT |grep /xattr/ >/dev/null 68*96c8483aSYuri Pankovif [[ $? != 0 ]]; then 69*96c8483aSYuri Pankov smbmount_clean $TMNT 70*96c8483aSYuri Pankov cti_unsupported "UNSUPPORTED (no xattr in this mount)" 71*96c8483aSYuri Pankov return 72*96c8483aSYuri Pankovfi 73*96c8483aSYuri Pankov 74*96c8483aSYuri Pankov# Create a file, and set an xattr on it. This file is used in several of the 75*96c8483aSYuri Pankov# test scenarios below. 76*96c8483aSYuri Pankov 77*96c8483aSYuri Pankovcti_execute_cmd "touch $TMNT/test_file" 78*96c8483aSYuri Pankovcreate_xattr $TMNT/test_file passwd /etc/passwd 79*96c8483aSYuri Pankov 80*96c8483aSYuri Pankov# For the archive applications below (tar, cpio, pax) 81*96c8483aSYuri Pankov# we create two archives, one with xattrs, one without 82*96c8483aSYuri Pankov# and try various cpio options extracting the archives 83*96c8483aSYuri Pankov# with and without xattr support, checking for correct behaviour 84*96c8483aSYuri Pankov 85*96c8483aSYuri Pankovcpio_xattr=$CDIR/xattr.cpio 86*96c8483aSYuri Pankovcpio_noxattr=$CDIR/noxattr.cpio 87*96c8483aSYuri Pankov 88*96c8483aSYuri Pankovcti_report "Checking cpio" 89*96c8483aSYuri Pankovcti_execute_cmd "touch $TMNT/cpio_test" 90*96c8483aSYuri Pankovcreate_xattr $TMNT/cpio_test passwd /etc/passwd 91*96c8483aSYuri Pankov 92*96c8483aSYuri Pankovcti_execute_cmd "echo cpio_test| (cd $TMNT; cpio -oc@ -O $cpio_xattr)" 93*96c8483aSYuri Pankovcti_execute_cmd "echo cpio_test| (cd $TMNT; cpio -oc -O $cpio_noxattr)" 94*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/cpio_test" 95*96c8483aSYuri Pankov 96*96c8483aSYuri Pankov# we should have no xattr here 97*96c8483aSYuri Pankov 98*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cpio -iu -I $cpio_xattr)" 99*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/cpio_test cat passwd" 100*96c8483aSYuri Pankovif [[ $? == 0 ]] 101*96c8483aSYuri Pankovthen 102*96c8483aSYuri Pankov cti_fail "Fail: we have xattr here unexpectedly" 103*96c8483aSYuri Pankov return 104*96c8483aSYuri Pankovfi 105*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/cpio_test" 106*96c8483aSYuri Pankov 107*96c8483aSYuri Pankov# we should have an xattr here 108*96c8483aSYuri Pankov 109*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cpio -iu@ -I $cpio_xattr)" 110*96c8483aSYuri Pankovverify_xattr $TMNT/cpio_test passwd /etc/passwd 111*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/cpio_test" 112*96c8483aSYuri Pankov 113*96c8483aSYuri Pankov#do the same for the second time 114*96c8483aSYuri Pankov 115*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cpio -iu@ -I $cpio_xattr)" 116*96c8483aSYuri Pankovverify_xattr $TMNT/cpio_test passwd /etc/passwd 117*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/cpio_test" 118*96c8483aSYuri Pankov 119*96c8483aSYuri Pankov# we should have no xattr here 120*96c8483aSYuri Pankov 121*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cpio -iu -I $cpio_noxattr)" 122*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/cpio_test cat passwd" 123*96c8483aSYuri Pankovif [[ $? == 0 ]] 124*96c8483aSYuri Pankovthen 125*96c8483aSYuri Pankov cti_fail "Fail: we have xattr here unexpectedly" 126*96c8483aSYuri Pankov return 127*96c8483aSYuri Pankovfi 128*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/cpio_test" 129*96c8483aSYuri Pankov 130*96c8483aSYuri Pankov# we should have no xattr here 131*96c8483aSYuri Pankov 132*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cpio -iu@ -I $cpio_noxattr)" 133*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/cpio_test cat passwd" 134*96c8483aSYuri Pankovif [[ $? == 0 ]] 135*96c8483aSYuri Pankovthen 136*96c8483aSYuri Pankov cti_fail "Fail: we have xattr here unexpectedly" 137*96c8483aSYuri Pankov return 138*96c8483aSYuri Pankovfi 139*96c8483aSYuri Pankov 140*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/cpio_test" 141*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $cpio_xattr" 142*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $cpio_noxattr" 143*96c8483aSYuri Pankov 144*96c8483aSYuri Pankovcti_report "Checking cp" 145*96c8483aSYuri Pankov# check that with the right flag, the xattr is preserved 146*96c8483aSYuri Pankov 147*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cp -@ test_file test_file1)" 148*96c8483aSYuri Pankovcompare_xattrs $TMNT/test_file $TMNT/test_file1 passwd 149*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/test_file1" 150*96c8483aSYuri Pankov 151*96c8483aSYuri Pankov# without the right flag, there should be no xattr (ls should fail) 152*96c8483aSYuri Pankov 153*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; cp test_file test_file1)" 154*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/cpio_test ls passwd" 155*96c8483aSYuri Pankovif [[ $? == 0 ]] 156*96c8483aSYuri Pankovthen 157*96c8483aSYuri Pankov cti_fail "Fail: we have xattr here unexpectedly" 158*96c8483aSYuri Pankov return 159*96c8483aSYuri Pankovfi 160*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/test_file1" 161*96c8483aSYuri Pankov 162*96c8483aSYuri Pankov# create a file without xattrs, and check that find -xattr only finds 163*96c8483aSYuri Pankov# our test file that has an xattr. 164*96c8483aSYuri Pankov 165*96c8483aSYuri Pankovcti_report "Checking find" 166*96c8483aSYuri Pankovcti_execute_cmd "mkdir $TMNT/noxattrs" 167*96c8483aSYuri Pankovcti_execute_cmd "touch $TMNT/noxattrs/no-xattr" 168*96c8483aSYuri Pankov 169*96c8483aSYuri Pankovcti_execute_cmd "find $TMNT -xattr | grep test_file" 170*96c8483aSYuri Pankovif [ $? -ne 0 ] 171*96c8483aSYuri Pankovthen 172*96c8483aSYuri Pankov cti_fail "find -xattr didn't find our file that had an xattr unexpectedly" 173*96c8483aSYuri Pankovfi 174*96c8483aSYuri Pankovcti_execute_cmd "find $TMNT -xattr | grep no-xattr" 175*96c8483aSYuri Pankovif [ $? -eq 0 ] 176*96c8483aSYuri Pankovthen 177*96c8483aSYuri Pankov cti_fail "find -xattr found a file that didn't have an xattr unexpectedly" 178*96c8483aSYuri Pankovfi 179*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/noxattrs" 180*96c8483aSYuri Pankov 181*96c8483aSYuri Pankov# mv doesn't have any flags to preserve/ommit xattrs - they're 182*96c8483aSYuri Pankov# always moved. 183*96c8483aSYuri Pankov 184*96c8483aSYuri Pankovcti_report "Checking mv" 185*96c8483aSYuri Pankovcti_execute_cmd "touch $TMNT/mvtest" 186*96c8483aSYuri Pankovcreate_xattr $TMNT/mvtest passwd /etc/passwd 187*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; mv mvtest mvtest2)" 188*96c8483aSYuri Pankovverify_xattr $TMNT/mvtest2 passwd /etc/passwd 189*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/mvtest" 190*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/mvtest2" 191*96c8483aSYuri Pankov 192*96c8483aSYuri Pankovpax_xattr=$CDIR/xattr.pax 193*96c8483aSYuri Pankovpax_noxattr=$CDIR/noxattr.pax 194*96c8483aSYuri Pankov 195*96c8483aSYuri Pankovcti_report "Checking pax" 196*96c8483aSYuri Pankovcti_execute_cmd "touch $TMNT/pax_test" 197*96c8483aSYuri Pankovcreate_xattr $TMNT/pax_test passwd /etc/passwd 198*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; pax -w -f $pax_noxattr pax_test)" 199*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; pax -w@ -f $pax_xattr pax_test)" 200*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/pax_test" 201*96c8483aSYuri Pankov 202*96c8483aSYuri Pankov# we should have no xattr here 203*96c8483aSYuri Pankov 204*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; pax -r -f $pax_noxattr)" 205*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/pax_test cat passwd" 206*96c8483aSYuri Pankovif [[ $? == 0 ]]; then 207*96c8483aSYuri Pankov cti_fail "FAIL: we have xattr here unexpectedly" 208*96c8483aSYuri Pankov return 209*96c8483aSYuri Pankovelse 210*96c8483aSYuri Pankov cti_report "PASS: we should have no xattr here as expected" 211*96c8483aSYuri Pankovfi 212*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/pax_test" 213*96c8483aSYuri Pankov 214*96c8483aSYuri Pankov# we should have no xattr here 215*96c8483aSYuri Pankov 216*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; pax -r@ -f $pax_noxattr)" 217*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/pax_test cat passwd" 218*96c8483aSYuri Pankovif [[ $? == 0 ]]; then 219*96c8483aSYuri Pankov cti_fail "FAIL: we have xattr here unexpectedly" 220*96c8483aSYuri Pankov return 221*96c8483aSYuri Pankovelse 222*96c8483aSYuri Pankov cti_report "PASS: we should have no xattr here as expected" 223*96c8483aSYuri Pankovfi 224*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/pax_test" 225*96c8483aSYuri Pankov 226*96c8483aSYuri Pankov# we should have an xattr here 227*96c8483aSYuri Pankov 228*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; pax -r@ -f $pax_xattr)" 229*96c8483aSYuri Pankovverify_xattr $TMNT/pax_test passwd /etc/passwd 230*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/pax_test" 231*96c8483aSYuri Pankov 232*96c8483aSYuri Pankov# we should have no xattr here 233*96c8483aSYuri Pankov 234*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; pax -r -f $pax_xattr)" 235*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/pax_test cat passwd" 236*96c8483aSYuri Pankovif [[ $? == 0 ]]; then 237*96c8483aSYuri Pankov cti_fail "FAIL: we have xattr here unexpectedly" 238*96c8483aSYuri Pankov return 239*96c8483aSYuri Pankovelse 240*96c8483aSYuri Pankov cti_report "PASS: we should have no xattr here as expected" 241*96c8483aSYuri Pankovfi 242*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/pax_test" 243*96c8483aSYuri Pankovcti_execute_cmd "rm $pax_noxattr" 244*96c8483aSYuri Pankovcti_execute_cmd "rm $pax_xattr" 245*96c8483aSYuri Pankov 246*96c8483aSYuri Pankovtar_xattr=$CDIR/xattr.tar 247*96c8483aSYuri Pankovtar_noxattr=$CDIR/noxattr.tar 248*96c8483aSYuri Pankov 249*96c8483aSYuri Pankovcti_report "Checking tar" 250*96c8483aSYuri Pankovcti_execute_cmd "touch $TMNT/tar_test" 251*96c8483aSYuri Pankovcreate_xattr $TMNT/tar_test passwd /etc/passwd 252*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; tar cf $tar_noxattr tar_test)" 253*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; tar c@f $tar_xattr tar_test)" 254*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/tar_test" 255*96c8483aSYuri Pankov 256*96c8483aSYuri Pankov# we should have no xattr here 257*96c8483aSYuri Pankov 258*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; tar xf $tar_xattr)" 259*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/tar_test cat passwd" 260*96c8483aSYuri Pankovif [[ $? == 0 ]]; then 261*96c8483aSYuri Pankov cti_fail "FAIL: we have xattr here unexpectedly" 262*96c8483aSYuri Pankov return 263*96c8483aSYuri Pankovelse 264*96c8483aSYuri Pankov cti_report "PASS: we should have no xattr here as expected" 265*96c8483aSYuri Pankovfi 266*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/tar_test" 267*96c8483aSYuri Pankov 268*96c8483aSYuri Pankov# we should have an xattr here 269*96c8483aSYuri Pankov 270*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; tar x@f $tar_xattr)" 271*96c8483aSYuri Pankovverify_xattr $TMNT/tar_test passwd /etc/passwd 272*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/tar_test" 273*96c8483aSYuri Pankov 274*96c8483aSYuri Pankov# we should have no xattr here 275*96c8483aSYuri Pankov 276*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; tar xf $tar_noxattr)" 277*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/tar_test cat passwd" 278*96c8483aSYuri Pankovif [[ $? == 0 ]]; then 279*96c8483aSYuri Pankov cti_fail "FAIL: we have xattr here unexpectedly" 280*96c8483aSYuri Pankov return 281*96c8483aSYuri Pankovelse 282*96c8483aSYuri Pankov cti_report "PASS: we should have no xattr here as expected" 283*96c8483aSYuri Pankovfi 284*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/tar_test" 285*96c8483aSYuri Pankov 286*96c8483aSYuri Pankov# we should have no xattr here 287*96c8483aSYuri Pankov 288*96c8483aSYuri Pankovcti_execute_cmd "(cd $TMNT; tar x@f $tar_noxattr)" 289*96c8483aSYuri Pankovcti_execute_cmd "runat $TMNT/tar_test cat passwd" 290*96c8483aSYuri Pankovif [[ $? == 0 ]]; then 291*96c8483aSYuri Pankov cti_fail "FAIL: we have xattr here unexpectedly" 292*96c8483aSYuri Pankov return 293*96c8483aSYuri Pankovelse 294*96c8483aSYuri Pankov cti_report "PASS: we should have no xattr here as expected" 295*96c8483aSYuri Pankovfi 296*96c8483aSYuri Pankovcti_execute_cmd "rm $TMNT/tar_test" 297*96c8483aSYuri Pankovcti_execute_cmd "rm $tar_noxattr" 298*96c8483aSYuri Pankovcti_execute_cmd "rm $tar_xattr" 299*96c8483aSYuri Pankov 300*96c8483aSYuri Pankovcti_execute_cmd "rm -rf $TMNT/*" 301*96c8483aSYuri Pankov 302*96c8483aSYuri Pankovsmbmount_clean $TMNT 303*96c8483aSYuri Pankovcti_pass "$tc_id: PASS" 304