発端
ある日、Cドライブの残り容量が少なくなってきたので一念発起、Windowsをクリーンインストールすることにしました。
主要アプリや作業データなど、必要なデータ類は日頃から別ドライブで保存するようにしているため、特別バックアップの必要なく、さっさとCドライブをフォーマット、Windowsのインストールに進んでいきます。
インストール自体は一時間ほどで終わり、あとはアプリのインストール、作業環境の構築をしていきます。
と、そこでちょっとした違和感に気づきます
あれ?Gitの作業フォルダがリモートリポジトリに接続できない。。
どうもすべての作業フォルダで、ワケのワカランエラーが出て拒否されるようです。
さあたいへんだ
ぐぐる先生の旅へ
git x is not owned by current user でぐぐる先生にお伺いを立ててみます。
その結果、
.gitconfigにコマンドを実行する設定を入れることで任意のコマンドを実行させるという攻撃があるので、ディレクトリーの所有者をチェックするようになったみたいです。
https://mas3lab.net/sasai/git-not-owned-by-current-user.html
ということだそうです。(ヨケイナコトヲ。。)
また、この対処としては、
- リモートリポジトリから必要なリポジトリをCloneしまくる
- エラーメッセージにあるように git config --global --add safe.directory のコマンドでチェック例外ディレクトリに指定する
- takeown コマンドでフォルダの所有者を変更
ってとこらへんが見えてきました。
数十ある作業ディレクトリに対処することを考えると、1.は論外。2.ってのも、あんましやりたくない作業量になりそうです。まあ、こんなことでセキュリティを低下させるってのがけったくそ悪い、ってのもあったりします。
残るは3.ですが、なんかバッチファイルでも作って自動化するかー、とか考えていて、ふとGUIの操作でできるんじゃね?と思いつきます。
試行錯誤
フォルダのプロパティ画面から、セキュリティタブ、詳細設定ボタンで詳細設定画面が開きます。
そこに所有者の表示があります。
おお、ワケワカラン所有者表示になってる。。(作業フォルダは修正済みになってるので、別フォルダです)
では、改めてCloneしたフォルダは、というと
もろにアカウント名になってる、ってことで、他の作業フォルダもみんなこのユーザに変更してしまえばええんや、っておはなしとなります。
解決編
アクセスできなくなった作業フォルダを右クリックしてプロパティを出します。
セキュリティタブ>詳細設定ボタンで、詳細設定画面を出し、所有者名を確認します。
所有者名の横の変更のリンクを押します。
ユーザーまたはグループの選択が開きますんで、オブジェクト名の入力欄にユーザ名を入力。私の場合は
アカウント名のメールアドレスを入れて、名前の確認ボタンで、フルのユーザ名が出てきました。
OKボタンを押したあと、詳細設定画面に、サブコンテナーとオブジェクトの所有者を置き換える、のチェックボックスが出てきますんでこれにチェックを入れます(これ重要)。
で、OKボタンを押せば、めでたく!Gitのリポジトリが復活します。
ばんざーい