Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Use octal file modes in the Redis and Valkey modules

未关闭 适合新手
#1,526 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
79/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
docker, node.js, typescript
领域
databases, testing

调研方向

阅读 packages/modules/redis/src/redis-container.ts 和 packages/modules/valkey/src/valkey-container.ts,重点查看 withCopyFilesToContainer 的 mode 值。检查 FileToCopy.mode 的文档说明或使用方式,然后运行 Redis 和 Valkey 模块相关的测试。两个模块中的数据文件都使用 0o644,导入脚本都使用 0o755 时,任务即完成。

由索引模型根据 Issue 内容生成。

描述

bug patch

What happens

The Redis and Valkey modules pass file modes as decimal numbers where octal was intended:

this.withCopyFilesToContainer([
  { mode: 666, source: this.initialImportScriptFile, target: this.importFilePath },
  { mode: 777, source: path.join(__dirname, "import.sh"), target: "/tmp/import.sh" },
]);

Decimal 666 is octal 1232 and decimal 777 is octal 1411. Copying files with those modes and running stat in the container:

/tmp/mode-decimal-666  1232  --w--wx-wT
/tmp/mode-decimal-777  1411  -r----x--t
/tmp/mode-octal-666     666  -rw-rw-rw-
/tmp/mode-octal-777     777  -rwxrwxrwx

So the import data file is write-only for its owner, and import.sh is read-only for its owner and execute-only for everyone else. withInitialData works today only because exec runs as root (uid 0), which bypasses the permission bits. A non-root exec user could read neither file.

Expected

The modes are written in octal (0o644 for the data file, 0o755 for the script).

Where

  • packages/modules/redis/src/redis-container.ts
  • packages/modules/valkey/src/valkey-container.ts

Notes

  • FileToCopy.mode and ContentToCopy.mode are typed number with no JSDoc. A one-line comment saying the value is an octal permission (0o644) would help prevent this.
  • The stat output was reproduced on main (aa60a746, 12.2.0) with GenericContainer and the same mode values. The non-root case is from reading the permission bits, not run.

Dependencies

  • Nothing blocks this. It can start now.
  • Coordinate with #1525: the exec call in the same two files sits a few lines below the modes. Change both in one pull request.
主要语言
TypeScript
星标
2.6k
派生
274
平均合并
1 天 14 小时
30 天内合并 PR
44

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

testcontainers/testcontainers-node 的其他 Issue

查看 testcontainers/testcontainers-node 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。