各プロジェクトのすべてのサブフォルダ .git/ に対して一括 chmod を実行します。

各プロジェクトのすべてのサブフォルダ .git/ に対して一括 chmod を実行します。

のような単一のフォルダに対してCHMODを実行する方法は知っていますchmod 700 .git/が、私のサーバには複数のプロジェクトがあり、それぞれに.git/フォルダが含まれています。repo-lookout.orgのレポートによると、リポジトリへのアクセスを無効にすることを提案しています。すべてのフォルダ(ただし、サブフォルダは含みません).git/に一括でchmod 700を適用したいと考えています。.git/.git

実行するとfind */.git/ -type d次のようなリストが返されます:

site1/.git/objects/b3
site1/.git/info
site1/.git/refs
site1/.git/refs/heads
site1/.git/refs/remotes
site1/.git/refs/remotes/origin
site1/.git/refs/tags
site1/.git/hooks
site2/.git/
site2/.git/logs
site2/.git/logs/refs
site2/.git/logs/refs/heads
site2/.git/logs/refs/remotes
site2/.git/logs/refs/remotes/origin
site2/.git/branches
site2/.git/objects
site2/.git/objects/93

これらのパターンにのみ CHMOD 700 を適用するにはどうすればよいでしょうかsite1/.git?site2.git

ありがとう、

答え1

これはさまざまな方法で解決できます。たとえば、ここでは正規表現を使用できます。

find -type d -regex '.*/\.git$'

where.*が anything の場合、.gitdir を文字通り一致させて、$それが末尾にあることを確認します。

次に、例えばchmod次のように使用しますxargs:

find -type d -regex '.*/\.git$' | xargs chmod 700

関連情報