開発環境用のサーバーで、git pull したら、
permission denied でエラーになった。
まさしくこのような感じのエラー
$ git pull
error: cannot open ファイル名: Permission denied
エラーの原因としては、自分が使用しているユーザーはそのディレクトリを変更する権限を持っていないからが理由のよう。
試しにファイルの権限を確認
$ ll
-rw-r--r-- 1 hoge hoge 5742 10 26 2018 test1.php
-rw-r--r--@ 1 fuga hoge 6807 10 12 2018 test2.php
-rw-r--r-- 1 hoge hoge 65 10 11 2018 a1.php
-rw-r--r-- 1 fuga hoge 65 10 11 2018 a2.php
本来であれば、hogeユーザーで作業する決まりだが、
fugaユーザーで作業した人がいたみたい。。
なら、ファイルの権限を変更すればOKと思いきや、
修正するファイルは、プロジェクトのいたるところにあり、
おまけに.git配下も修正しなくてはいけず、いちいち該当するファイルのパスを指定して権限を変更していたら日が暮れるという感じ。。
まとめてファイルの権限を変更
ということで、便利なlinuxコマンドもメモしておく
ルートディレクトリで作業
//ファイル
find ./ -user fuga -type f -print | sudo xargs chown hoge:hoge
// ディレクトリ
find ./ -user fuga -type d -print | sudo xargs chown hoge:hoge
//シンボリックリンク
find ./ -user fuga -type l -print | sudo xargs chown hoge:hoge
これでまとめて権限を変更することが可能。
実行する流れとしては、
find ./ -user fuga -type f -print
で該当するファイル一覧を確認し
find ./ -user fuga -type f -print | sudo xargs chown hoge:hoge
で権限をまとめて変更
find ./ -user fuga -type f -print
再び、こちらを実行し、ファイルが表示されないことを確認って感じ。
こういうコマンドをすらすら思いつけるようになりたい。