Eu tenho um site que eu uso o github (código fechado) para rastrear alterações e atualizar o site. O único problema é que parece que o diretório .git está acessível via web. Como posso parar com isso e ainda poder usar o git?
Devo usar .htaccess? Devo alterar as permissões do .git?
Respostas:
Crie um
.htaccess
arquivo na.git
pasta e coloque o seguinte neste arquivo:Mas observe que isso seria perdido se você clonar novamente o repositório
fonte
.git/
próprio diretório porque ele estaria perdido se você nunca re-clonado no repositório.Coloque isso em um
.htaccess
arquivo na raiz do seu servidor web:Esta solução é robusta e segura : é
.git
diretórios do seu site, mesmo que haja mais de um,.gitignore
e.gitmodules
.git
diretórios adicionados recentemente efonte
.git
pasta, mas eu ainda conseguia obter o.gitignore
arquivo.server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
As
.htaccess
permissões e a.git/
pasta funcionariam. Eu recomendo o primeiro:fonte
<Files>
,<FilesMatch>
).Eu não queria mexer no
.git
diretório e não consegui que a solução de Bennett funcionasse no Apache 2.2, mas adicionar o seguinte à minha<VirtualHost>
configuração funcionou:fonte
Não me sinto confortável em controlar o acesso às minhas pastas .git individualmente e optar por fazê-lo via configuração do apache em vez de .htaccess, para impedir que eu as substitua ou que se esqueça de uma nova instalação, etc.
Aqui estão algumas instruções detalhadas, espero que ajude. Estou usando o Ubuntu 16.10.
fonte
Uma opção mais robusta e simples seria desabilitar as permissões READ e Execution do
.git
diretório.Como o Apache (httpd) é executado principalmente em uma conta de usuário especial, por exemplo, ele é executado como usuário
apache
no CentOS, enquanto o.git
diretório deve ser criado em uma conta de usuário real, para que possamos simplesmente bloquear o acesso alterando a permissão. Além disso, essa abordagem não introduz nenhum novo arquivo, nem afeta os comandos git.O comando pode ser:
fonte
chmod
novamente.mod_rewrite fornecerá o efeito desejado:
fonte
.git
diretório porque retorna um código Proibido em vez de Não Encontrado.Em vez de mexer com
.htaccess
regras, como a maioria das respostas sugere, por que não simplesmente colocar o.git/
diretório acima da raiz da web?Nas minhas configurações, meu
.git
diretório geralmente mora em algo como:/home/web/project_name/.git/
Meu código atual vive em
/home/web/project_name/www_root/
desde que minha raiz da web (conforme definido no Apache ou Nginx .. prefiro o último) é que
/home/web/project_name/www_root/
não há como o.git
diretório ser acessível a partir da web, pois ele vive "mais alto" que o webrootfonte
project_name
diretório possui dois subdiretórios:www_root
onde seriam os arquivos realmente exibidos quando um visitante navega no meu site e.git
onde está o repositório. Puxar das atualizações de repositóriowww_root
e seu conteúdo. O fato é que, como o.git
diretório está hierarquicamente "acima" do meu controlador frontal, é inacessível via web.