From owner-svn-src-all@FreeBSD.ORG Thu Nov 6 19:17:59 2008 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 544B0106567F; Thu, 6 Nov 2008 19:17:59 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 41D768FC27; Thu, 6 Nov 2008 19:17:59 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA6JHxh0063771; Thu, 6 Nov 2008 19:17:59 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA6JHx9i063769; Thu, 6 Nov 2008 19:17:59 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <200811061917.mA6JHx9i063769@svn.freebsd.org> From: Edward Tomasz Napierala Date: Thu, 6 Nov 2008 19:17:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184737 - in head: sys/cddl/contrib/opensolaris/uts/common/fs/zfs tools/regression/fstest/tests/rename X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Nov 2008 19:17:59 -0000 Author: trasz Date: Thu Nov 6 19:17:58 2008 New Revision: 184737 URL: http://svn.freebsd.org/changeset/base/184737 Log: Change ZFS behaviour to match UFS: when moving (rename(2)) a subdirectory from one parent directory to another, in addition to the usual access checks one also needs write access to the subdirectory being moved. Approved by: rwatson (mentor), pjd Added: head/tools/regression/fstest/tests/rename/21.t (contents, props changed) Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Thu Nov 6 17:26:12 2008 (r184736) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Thu Nov 6 19:17:58 2008 (r184737) @@ -1580,7 +1580,14 @@ zfs_zaccess_rename(znode_t *sdzp, znode_ /* * Rename permissions are combination of delete permission + * add file/subdir permission. + * + * BSD operating systems also require write permission + * on the directory being moved. */ + if (ZTOV(szp)->v_type == VDIR) { + if (error = zfs_zaccess(szp, ACE_WRITE_DATA, cr)) + return (error); + } /* * first make sure we do the delete portion. Added: head/tools/regression/fstest/tests/rename/21.t ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/fstest/tests/rename/21.t Thu Nov 6 19:17:58 2008 (r184737) @@ -0,0 +1,38 @@ +#!/bin/sh +# $FreeBSD$ + +desc="write access to subdirectory is required to move it to another directory" + +dir=`dirname $0` +. ${dir}/../misc.sh + +echo "1..12" + +n0=`namegen` +n1=`namegen` +n2=`namegen` +n3=`namegen` + +expect 0 mkdir ${n2} 0777 +expect 0 mkdir ${n3} 0777 +cdir=`pwd` + +# Check that write permission on containing directory (${n2}) is not enough +# to move subdirectory (${n0}) from that directory. +expect 0 mkdir ${n2}/${n0} 0700 +expect EACCES -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n0} + +expect 0 rmdir ${n2}/${n0} +expect ENOENT rmdir ${n2}/${n0} + +# Check that write permission on containing directory (${n2}) is enough +# to move file (${n0}) from that directory. +expect 0 create ${n2}/${n0} 0755 +expect 0 -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n0} + +expect 0 unlink ${n3}/${n0} +expect ENOENT unlink ${n2}/${n0} + +expect 0 rmdir ${n3} +expect 0 rmdir ${n2} +