You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

堡垒机登录失败:script命令无法打开日志文件提示权限拒绝

堡垒机会话记录脚本权限报错排查与解决

问题描述

堡垒机登录时执行会话记录脚本,近期出现权限拒绝错误,报错信息如下:

script: cannot open /var/log/ssh-bastion/2024-03-29_06-52-11_username_m8hI1GxwGYd5847vhanBcn9Www1Koq8X.data: Permission denied

会话记录脚本代码:

if [[ -z $SSH_ORIGINAL_COMMAND ]]; then

  LOG_FILE="`date --date="today" "+%Y-%m-%d_%H-%M-%S"`_`whoami`"
  LOG_DIR="/var/log/ssh-bastion/"

  echo ""
  echo "NOTE: This SSH session will be recorded"
  echo "AUDIT KEY: $LOG_FILE"
  echo ""

  # suffix the log file name with a random string.
  SUFFIX=`mktemp -u _XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`

  script -qf --timing=$LOG_DIR$LOG_FILE$SUFFIX.time $LOG_DIR$LOG_FILE$SUFFIX.data --command=/bin/bash

else
  echo "This bastion supports interactive sessions only. Do not supply a command"
  exit 1

fi

已知服务此前运行正常,近2天出现问题,且目录和文件权限未发生变更。

排查方向与解决步骤

1. 检查目录磁盘空间

  • 执行命令查看磁盘使用情况:df -h /var/log/ssh-bastion/
  • 如果磁盘空间耗尽,系统会将"无法创建文件"误报为权限拒绝。
  • 解决:清理该目录下的旧日志文件,或对磁盘进行扩容。

2. 检查目录inode使用情况

  • 执行命令查看inode占用:df -i /var/log/ssh-bastion/
  • 若inode耗尽,即使磁盘有剩余空间,也无法创建新文件。
  • 解决:删除目录内大量小文件释放inode;或调整文件系统inode配置(操作前需备份数据,重启挂载生效)。

3. 验证安全模块限制(SELinux/AppArmor)

  • SELinux检查:执行getenforce查看状态,若为Enforcing模式,查看审计日志:grep ssh-bastion /var/log/audit/audit.log,确认是否有SELinux阻止文件创建的记录。
    • 临时测试:执行setenforce 0关闭SELinux,若恢复正常,需添加SELinux规则允许用户在该目录创建文件,或调整目录上下文:chcon -R -t ssh_home_t /var/log/ssh-bastion/(根据实际需求选择合适上下文)。
  • AppArmor检查:查看script命令的AppArmor配置文件,确认是否限制了其写入权限。

4. 确认用户磁盘配额

  • 登录堡垒机后,执行id查看当前用户UID/GID,再执行touch /var/log/ssh-bastion/test_file手动测试创建文件。
  • 若手动创建也失败,执行quota -u $(whoami)检查用户是否超出磁盘配额。
  • 解决:调整用户磁盘配额,或清理用户名下文件释放空间。

5. 修复脚本变量特殊字符问题

  • 执行whoami查看输出是否包含特殊字符,若存在会导致文件名非法,间接引发权限问题。
  • 修改脚本,对LOG_FILE变量过滤特殊字符:
LOG_FILE="`date --date="today" "+%Y-%m-%d_%H-%M-%S"`_`whoami | sed 's/[^a-zA-Z0-9_.-]//g'`"

内容的提问来源于stack exchange,提问作者Vanaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:35:22