原文(日本語に翻訳)
Writeツールで作成されたファイルがシステムumaskを尊重せず、ハードコードされた0o600パーミッションを使用する問題を修正しました
原文(英語)
Fixed files created by the Write tool using hardcoded 0o600 permissions instead of respecting the system umask
概要
Claude Code v2.1.0で修正された、ファイルパーミッション設定バグです。以前のバージョンでは、Writeツールで作成されたすべてのファイルが、システムのumask設定を無視して0o600(所有者のみ読み書き可能)パーミッションで作成されていました。この修正により、システムのumask設定が適切に適用され、チーム開発環境や共有サーバーでの使用時に、正しいファイルパーミッションが設定されるようになりました。
修正前の問題
症状
bash
# システムのumask設定を確認
umask
# 0022(ファイル: 0644、ディレクトリ: 0755)
# Claude Codeでファイル作成
claude
> README.md ファイルを作成して
# 修正前: 作成されたファイルのパーミッション
ls -l README.md
# -rw------- 1 user group 1234 Jan 31 10:00 README.md
# 0600(所有者のみアクセス可能)
# 期待: umaskに基づく 0644
# -rw-r--r-- 1 user group 1234 Jan 31 10:00 README.md
# グループとその他のユーザーが読み取り可能影響
- チーム開発で他のメンバーがファイルにアクセスできない
- CI/CDパイプラインでパーミッションエラー
- Webサーバーがファイルを読み取れない
修正後の動作
umaskの尊重
bash
# システムのumask: 0022
umask
# 0022
# Claude Codeでファイル作成
claude
> config.json を作成
# 修正後: umaskが適用される
ls -l config.json
# -rw-r--r-- 1 user group 234 Jan 31 10:00 config.json
# 0644(グループとその他が読み取り可能)
# 実行可能ファイルの場合
> install.sh スクリプトを作成
ls -l install.sh
# -rwxr-xr-x 1 user group 456 Jan 31 10:00 install.sh
# 0755(すべてのユーザーが実行可能)実践例
チーム開発環境での共有
チームメンバーが作成したファイルにアクセスできます。
bash
# 共有開発サーバー
# umask 0002(グループ書き込み可能)
umask
# 0002
claude
> team-docs.md を作成
# 修正後:
ls -l team-docs.md
# -rw-rw-r-- 1 alice devteam 789 Jan 31 10:00 team-docs.md
# グループメンバーが編集可能Webサーバー用ファイルの作成
Webサーバーがアクセスできるファイルを作成します。
bash
# Web公開ディレクトリ
cd /var/www/html
# umask 0022(標準)
claude
> index.html を作成
# 修正後:
ls -l index.html
# -rw-r--r-- 1 www-data www-data 2048 Jan 31 10:00 index.html
# Webサーバーが読み取り可能CI/CD環境での自動生成
CI/CDパイプラインで生成されたファイルが正しく処理されます。
bash
# GitHub Actions
- name: Generate files
run: |
# umask 0022がデフォルト
claude --prompt "ドキュメントを生成"
# 生成されたファイル
# -rw-r--r-- docs/api.md
# CI/CDの次のステップで読み取り可能セキュリティ重視の環境
厳格なumaskでもproper動作します。
bash
# セキュリティ重視のumask
umask 0077 # 所有者のみアクセス可能
claude
> secret-config.json を作成
# 修正後: umaskが適用される
ls -l secret-config.json
# -rw------- 1 user group 123 Jan 31 10:00 secret-config.json
# 所有者のみアクセス可能(意図通り)注意点
- この修正は Claude Code v2.1.0(2026年1月7日リリース)で実装されました
- umask(ユーザーファイル作成マスク):
- ファイル/ディレクトリ作成時のデフォルトパーミッションを制御
- 数値が大きいほど制限が厳しい
umaskコマンドで確認・設定
- 一般的なumask値:
- 0022: 標準(ファイル: 0644、ディレクトリ: 0755)
- 0002: グループ書き込み可(ファイル: 0664、ディレクトリ: 0775)
- 0077: 所有者のみ(ファイル: 0600、ディレクトリ: 0700)
- パーミッション計算:
ファイルのベース: 0666 umask: 0022 結果: 0666 - 0022 = 0644 (-rw-r--r--) ディレクトリのベース: 0777 umask: 0022 結果: 0777 - 0022 = 0755 (drwxr-xr-x) - 修正前の動作(0o600):
- セキュリティを重視した設定
- すべてのファイルが所有者のみアクセス可能
- 共有環境では不便
- 修正後の動作:
- システムのumaskを尊重
- 環境に応じた適切なパーミッション
- ユーザーの意図を反映
- Editツールへの影響:
- Editツールは既存ファイルのパーミッションを保持
- この修正による影響なし
- umaskの設定方法:bash
# 一時的に設定 umask 0002 # 永続的に設定(~/.bashrc または ~/.zshrc) echo "umask 0002" >> ~/.bashrc - セキュリティ考慮事項:
- 機密ファイルを作成する場合、厳格なumask(0077)を設定
- または作成後に手動で
chmod 600を実行
- デバッグ:
--debugフラグでファイル作成のログを確認- ログに「Creating file with umask-based permissions」が表示される
- トラブルシューティング:
- 期待と異なるパーミッションの場合:
umaskでumask値を確認- 必要に応じてumaskを変更
- ファイルを再作成
- 期待と異なるパーミッションの場合:
- 既存ファイルの修正:bash
# 一括でパーミッション修正 find . -type f -perm 600 -exec chmod 644 {} \; - Windowsへの影響:
- Windowsではumaskの概念がない
- この修正による影響なし
- デフォルトのWindowsパーミッションが適用される