tests: verify IRM readback as non-supervisor
All checks were successful
Source release / source-package (push) Successful in 1m15s

This commit is contained in:
OpenAI
2026-06-10 20:48:24 +00:00
committed by Mario Fetka
parent 8011737988
commit 9d27ee4eb3

View File

@@ -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