事象
gitの操作時に以下のメッセージが出て困った。
原因
CVE-2022-24765 の脆弱性への対応としてgit 2.35.2で入った safe.directory
関連の変更によるもの。
共有ディレクトリにリポジトリがある場合、さらに上位のディレクトリに「.git」ディレクトリを作成し、不正に設定を読み込ませることができるといった脆弱性
https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory 「Git 2.35.2」が公開 ~2件の脆弱性を修正【4月14日追記】 - 窓の杜
git clone先のディレクトリのownerが現在のユーザーでない場合にこのエラーが発生する
ちなみに go get
もgit cloneしているのでリポジトリから取得する際にこの事象が発生して、
CIサーバー上で共有ディレクトリに $GOMODCACHE を置いている場合に困ってしまう
対応
ディレクトリのownerをgit操作するユーザーにする。
それができない場合、フォルダ名がわかっているなら、エラーメッセージに出てきたとおりに safe.directory
に追加する。
git config --global --add safe.directory /path/to/repo
go get
する際には $GOMODCACHE/cache/vcs/abcdef12345
のようなハッシュっぽいディレクトリにダウンロードされるので、
これをいちいち追加するのは辛い。
git config --global --add safe.directory *
とすることで、すべてのディレクトリを許可することができ、これで解消はできた。
が、セキュリティ的にはすべてを許可してしまうので良くないと思う。。
bash - How to add directory recursively on git safe.directory? - Stack Overflow
2.36 時点では、recursiveにディレクトリを指定する方法はなく *
で指定するしかないようだった。
なにかしら対応が出るまでは *
指定にする