tests: verify IRM readback as non-supervisor
All checks were successful
Source release / source-package (push) Successful in 1m15s
All checks were successful
Source release / source-package (push) Successful in 1m15s
This commit is contained in:
@@ -15,6 +15,7 @@ if [ "$#" -lt 4 ]; then
|
||||
echo "Set NWFS_NCPFS_DIR_ATTR_HEX/NWFS_NCPFS_FILE_ATTR_HEX to verify DOS attribute metadata; defaults: dir 0x12, file 0x26. Set empty to skip." >&2
|
||||
echo "Set NWFS_NCPFS_IRM_RIGHTS to verify inherited-rights-mask metadata; default: S. Set empty to skip." >&2
|
||||
echo "Set NWFS_NCPFS_DOSINFO_GRANT_OBJECT/TYPE to grant temporary MA rights for DOS info mutation; default: EVERYONE/2. Set object empty to skip." >&2
|
||||
echo "Set NWFS_NCPFS_DOSINFO_USER/PASSWORD to verify IRM NCP readback as a non-SUPERVISOR user; default: NOPASSUSER with no password. Set user empty to skip." >&2
|
||||
echo "Set NWFS_NCPFS_RESET_TESTDIR=0 to keep an existing test directory. Default is 1 and removes TESTDIR before the smoke." >&2
|
||||
echo "Set NWFS_NCPFS_HOST_RESET_TESTDIR=0 to forbid host-side reset fallback when NCPFS cannot create at the volume root. Default is 1." >&2
|
||||
echo "Set NWFS_NCPFS_DIR_QUOTA_4K to override the directory quota limit; set it empty to skip. Directory quota is off by default for NetWare 3.x/4.x smoke." >&2
|
||||
@@ -48,16 +49,21 @@ USER_QUOTA_UNLIMITED_4K=1073741824
|
||||
DIR_ATTR_HEX=${NWFS_NCPFS_DIR_ATTR_HEX-0x00000012}
|
||||
FILE_ATTR_HEX=${NWFS_NCPFS_FILE_ATTR_HEX-0x00000026}
|
||||
IRM_RIGHTS=${NWFS_NCPFS_IRM_RIGHTS-S}
|
||||
DOSINFO_GRANT_OBJECT=${NWFS_NCPFS_DOSINFO_GRANT_OBJECT-EVERYONE}
|
||||
DOSINFO_GRANT_TYPE=${NWFS_NCPFS_DOSINFO_GRANT_TYPE-2}
|
||||
DOSINFO_GRANT_RIGHTS=${NWFS_NCPFS_DOSINFO_GRANT_RIGHTS-[MA]}
|
||||
DOSINFO_RIGHTS_GRANTED=0
|
||||
RIGHTS_MATRIX=${NWFS_NCPFS_RIGHTS_MATRIX:-R F RF W C E M A RWCEMFA S}
|
||||
RESET_TESTDIR=${NWFS_NCPFS_RESET_TESTDIR:-1}
|
||||
HOST_RESET_TESTDIR=${NWFS_NCPFS_HOST_RESET_TESTDIR:-1}
|
||||
RIGHTS_USER=${NWFS_NCPFS_RIGHTS_USER:-}
|
||||
RIGHTS_PASSWORD=${NWFS_NCPFS_RIGHTS_PASSWORD-}
|
||||
RIGHTS_MOUNTPOINT=${NWFS_NCPFS_RIGHTS_MOUNTPOINT:-}
|
||||
DOSINFO_GRANT_OBJECT=${NWFS_NCPFS_DOSINFO_GRANT_OBJECT-EVERYONE}
|
||||
DOSINFO_GRANT_TYPE=${NWFS_NCPFS_DOSINFO_GRANT_TYPE-2}
|
||||
DOSINFO_GRANT_RIGHTS=${NWFS_NCPFS_DOSINFO_GRANT_RIGHTS-[MA]}
|
||||
DOSINFO_USER=${NWFS_NCPFS_DOSINFO_USER-NOPASSUSER}
|
||||
DOSINFO_PASSWORD=${NWFS_NCPFS_DOSINFO_PASSWORD-}
|
||||
DOSINFO_MOUNTPOINT=${NWFS_NCPFS_DOSINFO_MOUNTPOINT:-}
|
||||
DOSINFO_RIGHTS_GRANTED=0
|
||||
DOSINFO_MOUNTED_BY_SCRIPT=0
|
||||
DOSINFO_CLEAN_MOUNT=0
|
||||
VERIFY_ACL=${NWFS_NCPFS_VERIFY_ACL:-auto}
|
||||
MKDIR_ERR=$(mktemp "${TMPDIR:-/tmp}/nwfs_ncpfs_mkdir.XXXXXX")
|
||||
WRITE_ERR=$(mktemp "${TMPDIR:-/tmp}/nwfs_ncpfs_write.XXXXXX")
|
||||
@@ -114,6 +120,14 @@ cleanup() {
|
||||
umount "$RIGHTS_MOUNTPOINT" || true
|
||||
fi
|
||||
fi
|
||||
if [ "${DOSINFO_MOUNTED_BY_SCRIPT:-0}" = 1 ] && [ -n "${DOSINFO_MOUNTPOINT:-}" ] && mountpoint -q "$DOSINFO_MOUNTPOINT" 2>/dev/null; then
|
||||
if command -v ncpumount >/dev/null 2>&1; then
|
||||
ncpumount "$DOSINFO_MOUNTPOINT" || true
|
||||
else
|
||||
umount "$DOSINFO_MOUNTPOINT" || true
|
||||
fi
|
||||
fi
|
||||
[ "${DOSINFO_CLEAN_MOUNT:-0}" = 1 ] && [ -n "${DOSINFO_MOUNTPOINT:-}" ] && rmdir "$DOSINFO_MOUNTPOINT" 2>/dev/null || true
|
||||
rm -f "$MKDIR_ERR" "$WRITE_ERR" "$GRANT_ERR" "$REVOKE_ERR" "$DIRQUOTA_DUMP" "$USERQUOTA_OUT" "$USERQUOTA_DUMP" "$RIGHTS_DUMP" "$ACL_DUMP" "$DOSINFO_DUMP" "$RESET_ERR"
|
||||
[ "$CLEAN_MOUNT" = 1 ] && rmdir "$MOUNTPOINT" 2>/dev/null || true
|
||||
}
|
||||
@@ -336,6 +350,32 @@ mount_rights_user_if_requested() {
|
||||
RIGHTS_NCP_TEST_PATH=$RIGHTS_MOUNTPOINT/$TESTDIR
|
||||
}
|
||||
|
||||
|
||||
mount_dosinfo_user_if_requested() {
|
||||
if [ -z "$DOSINFO_USER" ]; then
|
||||
return 0
|
||||
fi
|
||||
if [ -z "$DOSINFO_MOUNTPOINT" ]; then
|
||||
DOSINFO_MOUNTPOINT=$(mktemp -d "${TMPDIR:-/tmp}/mars-ncpfs-dosinfo.XXXXXX")
|
||||
DOSINFO_CLEAN_MOUNT=1
|
||||
else
|
||||
mkdir -p "$DOSINFO_MOUNTPOINT"
|
||||
DOSINFO_CLEAN_MOUNT=0
|
||||
fi
|
||||
if mountpoint -q "$DOSINFO_MOUNTPOINT" 2>/dev/null; then
|
||||
DOSINFO_MOUNTED_BY_SCRIPT=0
|
||||
echo "using existing DOSINFO NCP readback mount at $DOSINFO_MOUNTPOINT" >&2
|
||||
else
|
||||
if [ -n "$DOSINFO_PASSWORD" ]; then
|
||||
ncpmount -S "$SERVER" -U "$DOSINFO_USER" -P "$DOSINFO_PASSWORD" "$DOSINFO_MOUNTPOINT"
|
||||
else
|
||||
ncpmount -S "$SERVER" -U "$DOSINFO_USER" -n "$DOSINFO_MOUNTPOINT"
|
||||
fi
|
||||
DOSINFO_MOUNTED_BY_SCRIPT=1
|
||||
fi
|
||||
DOSINFO_NCP_TEST_PATH=$DOSINFO_MOUNTPOINT/$TESTDIR
|
||||
}
|
||||
|
||||
if mountpoint -q "$MOUNTPOINT" 2>/dev/null; then
|
||||
echo "using existing NCP mount at $MOUNTPOINT" >&2
|
||||
else
|
||||
@@ -472,8 +512,15 @@ if [ -n "$DIR_ATTR_HEX$FILE_ATTR_HEX$IRM_RIGHTS" ]; then
|
||||
fi
|
||||
if [ -n "$IRM_RIGHTS" ]; then
|
||||
echo "setting inherited rights mask [$IRM_RIGHTS] on $NW_TEST_PATH" >&2
|
||||
"$DOSINFO_HELPER" --set-irm "$IRM_RIGHTS" --expect-irm "$IRM_RIGHTS" "$NCP_TEST_PATH"
|
||||
"$DOSINFO_HELPER" --set-irm "$IRM_RIGHTS" "$NCP_TEST_PATH"
|
||||
sync
|
||||
if [ -n "$DOSINFO_USER" ]; then
|
||||
mount_dosinfo_user_if_requested
|
||||
echo "verifying inherited rights mask [$IRM_RIGHTS] as $DOSINFO_USER on $NW_TEST_PATH" >&2
|
||||
"$DOSINFO_HELPER" --expect-irm "$IRM_RIGHTS" "$DOSINFO_NCP_TEST_PATH"
|
||||
else
|
||||
echo "NWFS_NCPFS_DOSINFO_USER is empty; skipping NCP IRM readback check to avoid SUPERVISOR expansion" >&2
|
||||
fi
|
||||
printf '\n# after inherited rights mask set\n'
|
||||
verify_dosinfo_dump_irm "$HOST_TEST_PATH" "$IRM_RIGHTS"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user