共有フォルダ上の git リポジトリを操作しようとしたらエラーになった話
概要
- git (version 2.37.2.windows.2) を使っていてエラーが出た
- リポジトリフォルダの所有ユーザと git コマンドの実行ユーザが異なるとエラーが出る
- version 2.35.2 からセキュリティ上の仕様変更があった
- リスク考慮の上
git config --global --add safe.directory *
で無効にできる
事象
- NAS として使用している Windows 共有フォルダがある (
\\NAS\share
とする) - Windows PC (
PC1
とする) をユーザmainuser01
で使っている PC1
から\\NAS\share
にユーザnasuser1
でアクセスしている
この状況で PC1
を操作して \\NAS\share
上に git リポジトリを作り,git コマンドを発行したり等すると以下のようなエラーが出る
warning: '//NAS/share/repository' is owned by: 'S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx' but the current user is: 'S-1-5-21-yyyyyyyyyy-yyyyyyyyyy-yyyyyyyyy-yyyy' fatal: detected dubious ownership in repository at '//NAS/share/repository' To add an exception for this directory, call: git config --global --add safe.directory '%(prefix)///NAS/share/repository'
- dubious: 怪しい,不審な
原因
こちらの記事を読んだところ
git利用者が使うディレクトリに .gitフォルダを作りconfigファイルを配置されると、そのconfigファイルの内容によって 最終的に任意のコマンドが自動実行されてしまうおそれがあると。
少しだけ具体的にいえば、複数の人が使うファイルストレージで 悪意を持った誰かがよろしくないファイルを配置すると、それを読み込んだPCが操作できてしまうということね
といった脆弱性が見つかったことで
gitの実装としては 「そのユーザーが所有しているディレクトリ」だけを 「信頼できるリポジトリの場所」 としたようだ。
ただその副作用として、所有していない・書き込み権限があるだけのフォルダ、たとえばNAS/クラウドストレージなどの共有フォルダを git 2.35.2からは 使えないようにしたというわけね。
という仕様に改修されたと.
リポジトリを一人一人がローカルにクローンして操作する分には何も問題ないということね.
対応
共有フォルダ上のリポジトリは自分しか使わないので,記事の通りに git config --global --add safe.directory *
にて対応.
おまけ
これ AD 環境とかだとどうなるんだろね.