
Я знаю, как сделать 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$'
где .*
что-то есть, то мы сопоставляем .git
dir буквально и $
убеждаемся, что он находится в конце.
Тогда к chmod
ним можно использовать, например xargs
:
find -type d -regex '.*/\.git$' | xargs chmod 700