Skip to content

fix: 安全加固与修复 lib/__init__.py 错误导入#5

Open
FMVPJet wants to merge 1 commit intobadseal:mainfrom
FMVPJet:fix/security-and-import-fixes
Open

fix: 安全加固与修复 lib/__init__.py 错误导入#5
FMVPJet wants to merge 1 commit intobadseal:mainfrom
FMVPJet:fix/security-and-import-fixes

Conversation

@FMVPJet
Copy link
Copy Markdown

@FMVPJet FMVPJet commented Apr 22, 2026

Summary

  • 守护进程/隧道信息文件权限加固(ssh_daemon.py, ssh_tunnel.py):目录 0o700,文件 0o600,防止同机其他用户读取
  • 临时密码脚本异常清理(paramiko_client.py):_create_password_script() 加 try/except,异常时自动关闭 fd 并删除含密码的临时文件
  • 修复 lib/__init__.py:移除对不存在的 client.pyconfig.py 的引用,替换为实际存在的模块

Details

1. 信息文件权限加固

ssh_daemon.pyssh_tunnel.py/tmp/ 下创建的信息文件(含端口、PID)之前使用默认权限(0o644),同机其他用户可读取并连接守护进程。

修复:

  • os.makedirs()mode=0o700 + os.chmod(dir, 0o700)
  • 信息文件写入后 os.chmod(path, 0o600)

2. 临时密码脚本异常清理

paramiko_client.py_create_password_script() 在写入密码到临时文件时,如果发生异常会残留含密码的文件。

修复:

  • 加 try/except 包裹整个流程
  • 异常时关闭未被 os.fdopen 接管的 fd
  • 异常时删除临时文件
  • fd = -1 标记 fd 已被接管,避免 double close

3. 修复 lib/init.py

__init__.py 引用了不存在的 client.pyconfig.py,导致 import lib 时触发 ModuleNotFoundError

修复:更新为实际存在的模块(config_v3, native_ssh_client, paramiko_client, cluster, sftp_transfer, utils)。

Test plan

  • 70 个单元测试全部通过
  • import lib 验证通过
  • 无功能性回归

1. 守护进程/隧道信息文件权限加固:目录设置 0o700,信息文件设置 0o600,
   防止同机其他用户读取端口和 PID 信息
2. 临时密码脚本异常清理:_create_password_script() 加 try/except,
   异常时自动关闭 fd 并删除含密码的临时文件
3. 修复 lib/__init__.py:移除对不存在的 client.py 和 config.py 的引用,
   替换为实际存在的模块(config_v3, native_ssh_client, paramiko_client 等)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant