OpenZFS 7290 - ZFS test suite needs to control what utilities it can run

Authored by: John Wren Kennedy <john.kennedy@delphix.com>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Approved by: Gordon Ross <gordon.w.ross@gmail.com>
Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>
Ported-by: George Melikov <mail@gmelikov.ru>

Porting Notes:
- Utilities which aren't available under Linux have been removed.
- Because of sudo's default secure path behavior PATH must be
  explicitly reset at the top of libtest.shlib.  This avoids the
  need for all users to customize secure path on their system.
- Updated ZoL infrastructure to manage constrained path
- Updated all test cases
- Check permissions for usergroup tests
- When testing in-tree create links under bin/
- Update fault cleanup such that missing files during
  cleanup aren't fatal.
- Configure su environment with constrained path

OpenZFS-issue: https://www.illumos.org/issues/7290
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/1d32ba6
Closes #5903
This commit is contained in:
John Wren Kennedy
2017-04-05 20:18:22 -04:00
committed by Brian Behlendorf
parent 7a4500a101
commit c1d9abf905
797 changed files with 8038 additions and 7458 deletions
-185
View File
@@ -1,185 +0,0 @@
dnl #
dnl # Commands common to multiple platforms. They generally behave
dnl # in the same way and take similar options.
dnl #
AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_COMMON], [
AC_PATH_TOOL(AWK, awk, "")
AC_PATH_TOOL(BASENAME, basename, "")
AC_PATH_TOOL(BC, bc, "")
AC_PATH_TOOL(BUNZIP2, bunzip2, "")
AC_PATH_TOOL(BZCAT, bzcat, "")
AC_PATH_TOOL(CAT, cat, "")
AC_PATH_TOOL(CD, cd, "cd") dnl # Builtin in bash
AC_PATH_TOOL(CHGRP, chgrp, "")
AC_PATH_TOOL(CHMOD, chmod, "")
AC_PATH_TOOL(CHOWN, chown, "")
AC_PATH_TOOL(CKSUM, cksum, "")
AC_PATH_TOOL(CMP, cmp, "")
AC_PATH_TOOL(CP, cp, "")
AC_PATH_TOOL(CPIO, cpio, "")
AC_PATH_TOOL(CUT, cut, "")
AC_PATH_TOOL(DATE, date, "")
AC_PATH_TOOL(DD, dd, "")
AC_PATH_TOOL(DF, df, "")
AC_PATH_TOOL(DIFF, diff, "")
AC_PATH_TOOL(DIRNAME, dirname, "")
AC_PATH_TOOL(DU, du, "")
AC_PATH_TOOL(ECHO, echo, "")
AC_PATH_TOOL(EGREP, egrep, "")
AC_PATH_TOOL(FALSE, false, "")
AC_PATH_TOOL(FDISK, fdisk, "")
AC_PATH_TOOL(FGREP, fgrep, "")
AC_PATH_TOOL(FILE, file, "")
AC_PATH_TOOL(FIND, find, "")
AC_PATH_TOOL(FIO, fio, "")
AC_PATH_TOOL(FSCK, fsck, "")
AC_PATH_TOOL(GNUDD, dd, "")
AC_PATH_TOOL(GETCONF, getconf, "")
AC_PATH_TOOL(GETENT, getent, "")
AC_PATH_TOOL(GREP, grep, "")
dnl # Due to permissions unpriviledged users may not detect group*.
AC_PATH_TOOL(GROUPADD, groupadd, "/usr/sbin/groupadd")
AC_PATH_TOOL(GROUPDEL, groupdel, "/usr/sbin/groupdel")
AC_PATH_TOOL(GROUPMOD, groupmod, "/usr/sbin/groupmod")
AC_PATH_TOOL(HEAD, head, "")
AC_PATH_TOOL(HOSTNAME, hostname, "")
AC_PATH_TOOL(ID, id, "")
AC_PATH_TOOL(KILL, kill, "")
AC_PATH_TOOL(KSH, ksh, "")
AC_PATH_TOOL(LOGNAME, logname, "")
AC_PATH_TOOL(LS, ls, "")
AC_PATH_TOOL(MD5SUM, md5sum, "")
AC_PATH_TOOL(MKDIR, mkdir, "")
AC_PATH_TOOL(MKNOD, mknod, "")
AC_PATH_TOOL(MKTEMP, mktemp, "")
AC_PATH_TOOL(MODINFO, modinfo, "")
AC_PATH_TOOL(MOUNT, mount, "")
AC_PATH_TOOL(MV, mv, "")
AC_PATH_TOOL(NAWK, nawk, "")
AC_PATH_TOOL(PGREP, pgrep, "")
AC_PATH_TOOL(PING, ping, "")
AC_PATH_TOOL(PKILL, pkill, "")
AC_PATH_TOOL(PRINTF, printf, "")
AC_PATH_TOOL(PS, ps, "")
AC_PATH_TOOL(PYTHON, python, "")
AC_PATH_TOOL(REBOOT, reboot, "")
AC_PATH_TOOL(RMDIR, rmdir, "")
AC_PATH_TOOL(RSH, rsh, "")
AC_PATH_TOOL(SED, sed, "")
AC_PATH_TOOL(SHUF, shuf, "")
AC_PATH_TOOL(SLEEP, sleep, "")
AC_PATH_TOOL(SORT, sort, "")
AC_PATH_TOOL(STAT, stat, "")
AC_PATH_TOOL(STRINGS, strings, "")
AC_PATH_TOOL(SU, su, "")
AC_PATH_TOOL(SUM, sum, "")
AC_PATH_TOOL(SYNC, sync, "")
AC_PATH_TOOL(TAIL, tail, "")
AC_PATH_TOOL(TAR, tar, "")
AC_PATH_TOOL(TIMEOUT, timeout, "")
AC_PATH_TOOL(TOUCH, touch, "")
AC_PATH_TOOL(TR, tr, "")
AC_PATH_TOOL(TRUNCATE, truncate, "")
AC_PATH_TOOL(TRUE, true, "")
AC_PATH_TOOL(UMASK, umask, "")
AC_PATH_TOOL(UMOUNT, umount, "")
AC_PATH_TOOL(UNAME, uname, "")
AC_PATH_TOOL(UNIQ, uniq, "")
dnl # Due to permissions unpriviledged users may not detect user*.
AC_PATH_TOOL(USERADD, useradd, "/usr/sbin/useradd")
AC_PATH_TOOL(USERDEL, userdel, "/usr/sbin/userdel")
AC_PATH_TOOL(USERMOD, usermod, "/usr/sbin/usermod")
AC_PATH_TOOL(UUIDGEN, uuidgen, "")
AC_PATH_TOOL(WAIT, wait, "wait") dnl # Builtin in bash
AC_PATH_TOOL(WC, wc, "")
])
dnl #
dnl # Linux commands, used within 'is_linux' blocks of test scripts.
dnl # These commands may take different command line arguments.
dnl #
AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_LINUX], [
AC_PATH_TOOL(BLOCKDEV, blockdev, "")
AC_PATH_TOOL(CHACL, chacl, "")
AC_PATH_TOOL(COMPRESS, gzip, "")
AC_PATH_TOOL(FORMAT, parted, "")
AC_PATH_TOOL(FREE, free, "")
AC_PATH_TOOL(GETFACL, getfacl, "")
AC_PATH_TOOL(IOSTAT, iostat, "")
AC_PATH_TOOL(LOCKFS, lsof, "")
AC_PATH_TOOL(LSBLK, lsblk, "")
AC_PATH_TOOL(LSMOD, lsmod, "")
AC_PATH_TOOL(LSSCSI, lsscsi, "")
AC_PATH_TOOL(MODLOAD, modprobe, "")
AC_PATH_TOOL(MODUNLOAD, rmmod, "")
AC_PATH_TOOL(MPSTAT, mpstat, "")
AC_PATH_TOOL(NEWFS, mke2fs, "")
AC_PATH_TOOL(NPROC, nproc, "")
AC_PATH_TOOL(PFEXEC, sudo, "")
AC_PATH_TOOL(READLINK, readlink, "")
AC_PATH_TOOL(SETFACL, setfacl, "")
AC_PATH_TOOL(SHARE, exportfs, "")
AC_PATH_TOOL(NET, net, "")
AC_PATH_TOOL(SWAP, swapon, "")
AC_PATH_TOOL(SWAPADD, swapon, "")
AC_PATH_TOOL(UDEVADM, udevadm, "")
AC_PATH_TOOL(UFSDUMP, dump, "")
AC_PATH_TOOL(UFSRESTORE, restore, "")
AC_PATH_TOOL(UNCOMPRESS, gunzip, "")
AC_PATH_TOOL(UNSHARE, exportfs, "")
AC_PATH_TOOL(VMSTAT, vmstat, "")
PAGESIZE=$($GETCONF PAGESIZE)
AC_SUBST(PAGESIZE)
MNTTAB=/proc/self/mounts
AC_SUBST(MNTTAB)
])
dnl #
dnl # BSD style commands, these have been kept in case at some point
dnl # we want to build these packages on a BSD style systems. Otherwise
dnl # they are unused and should be treated as such.
dnl #
AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_BSD], [
AC_PATH_TOOL(COMPRESS, compress, "")
AC_PATH_TOOL(COREADM, coreadm, "")
AC_PATH_TOOL(DIRCMP, dircmp, "")
AC_PATH_TOOL(DUMPADM, dumpadm, "")
AC_PATH_TOOL(FORMAT, format, "")
AC_PATH_TOOL(GETMAJOR, getmajor, "")
AC_PATH_TOOL(KSTAT, kstat, "")
AC_PATH_TOOL(LOCKFS, lockfs, "")
AC_PATH_TOOL(LOFIADM, lofiadm, "")
AC_PATH_TOOL(MODUNLOAD, modunload, "")
AC_PATH_TOOL(NEWFS, newfs, "")
AC_PATH_TOOL(PAGESIZE, pagesize, "")
AC_PATH_TOOL(PFEXEC, pfexec, "")
AC_PATH_TOOL(PKGINFO, pkginfo, "")
AC_PATH_TOOL(PRTVTOC, prtvtoc, "")
AC_PATH_TOOL(PSRINFO, psrinfo, "")
AC_PATH_TOOL(SHARE, share, "")
AC_PATH_TOOL(SVCADM, svcadm, "")
AC_PATH_TOOL(SVCS, svcs, "")
AC_PATH_TOOL(SWAP, swap, "")
AC_PATH_TOOL(SWAPADD, swapadd, "")
AC_PATH_TOOL(UFSDUMP, ufsdump, "")
AC_PATH_TOOL(UFSRESTORE, ufsrestore, "")
AC_PATH_TOOL(UMOUNTALL, umountall, "")
AC_PATH_TOOL(UNCOMPRESS, uncompress, "")
AC_PATH_TOOL(UNSHARE, unshare, "")
AC_PATH_TOOL(ZONEADM, zoneadm, "")
AC_PATH_TOOL(ZONECFG, zonecfg, "")
AC_PATH_TOOL(ZONENAME, zonename, "")
])
AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS], [
ZFS_AC_CONFIG_USER_COMMANDS_COMMON
OS=$($UNAME -o)
AS_IF([test "$OS" == "GNU/Linux"], [
ZFS_AC_CONFIG_USER_COMMANDS_LINUX
], [
ZFS_AC_CONFIG_USER_COMMANDS_BSD
])
])
-1
View File
@@ -18,7 +18,6 @@ AC_DEFUN([ZFS_AC_CONFIG_USER], [
ZFS_AC_CONFIG_USER_MAKEDEV_IN_SYSMACROS
ZFS_AC_CONFIG_USER_MAKEDEV_IN_MKDEV
ZFS_AC_CONFIG_USER_COMMANDS
ZFS_AC_TEST_FRAMEWORK
AC_CHECK_FUNCS([mlockall])