はじめに
Gitを操作していると、ある日突然 fatal: detected dubious ownership in repository
という見慣れないエラーメッセージが表示されることがあります。これはGitのセキュリティ機能によるもので、決して怖いものではありません。
この記事では、このエラーが発生する原因と、誰でも簡単にできる解決策を分かりやすく解説します。
エラーの意味と原因
このエラーメッセージを直訳すると「リポジトリに疑わしい所有権を検出しました」となります。
これは、Gitリポジトリのフォルダを所有しているユーザーと、今Gitコマンドを実行しているユーザーが異なっているために発生します。Gitは、悪意のある第三者が作成したリポジトリとは知らずに操作してしまい、意図しないプログラムが実行されるといったセキュリティリスクを防ぐために、このチェックを行っています。
特に、以下のようなケースでこのエラーに遭遇しやすくなります。
- 管理者権限で
git init
やgit clone
を実行し、その後一般ユーザーで操作しようとした。- 別のPCや他のユーザーアカウントからプロジェクトフォルダをコピーしてきた。
- WSL (Windows Subsystem for Linux) とWindowsのPowerShell/コマンドプロンプトを併用している。
- DockerコンテナとホストOSで同じファイルを操作している。
'C:/project/foo' is owned by:
(inconvertible) (S-1-5-21-....) <-- ファイルの所有者
but the current user is:
foo/user (S-1-5-21-....) <-- 現在の操作ユーザー
エラーメッセージをよく見ると、ファイルの所有者と現在のユーザーが異なっていることが示されています。
解決策:Gitに「この場所は安全」と教える
解決策は非常にシンプルで、エラーメッセージが親切にも教えてくれています。
1. 一番かんたんな解決策
ターミナル(Git Bash, PowerShell, コマンドプロンプトなど)で、エラーメッセージに表示された以下のコマンドを実行するだけです。
git config --global --add safe.directory C:/project/foo
- このコマンドは、Gitの全体設定(
--global
)に、「このディレクトリ(safe.directory
)は安全な場所なので、所有者が異なっていても操作を許可します」という例外ルールを追加(--add
)するものです。- これを実行したあと、改めて
git remote add
など、先ほど失敗したコマンドを再実行してみてください。今度は正常に完了するはずです。
2. 根本的な解決策(上級者向け)
もう一つの方法は、フォルダの所有権そのものを現在のユーザーに変更してしまうことです。
- Windowsの場合:
1. エクスプローラーで該当フォルダを右クリックし、「プロパティ」を選択します。
2. 「セキュリティ」タブ → 「詳細設定」と進みます。
3. ウィンドウ上部の「所有者:」の横にある「変更」をクリックし、所有者を現在ログオンしている自分のユーザーに変更します。
- macOS / Linuxの場合:
ターミナルでchown
コマンドを使い、フォルダの所有者を変更します。
# ディレクトリの所有者を現在のユーザーに再帰的に変更
sudo chown -R $(whoami) /path/to/your/repository
この方法は問題の根本を解決しますが、少し手順が複雑なため、よくわからない場合は最初のsafe.directory
を追加する方法が簡単でおすすめです。
まとめ
detected dubious ownership
エラーは、Gitがユーザーを保護するための重要なセキュリティ機能です。エラーに遭遇しても慌てず、原因を理解してgit config --global --add safe.directory
コマンドで対処しましょう。これで、安心して開発を続けられますね!