Não quero permitir que outras pessoas tenham acesso de leitura, então adicionei meu usuário e o apache
usuário a um grupo chamado apachme
e, em seguida, configurei esse grupo para todos os arquivos e pastas aos quais desejo apache
ter acesso, incluindo a raiz da página da web. Em seguida, dei todas as permissões ao grupo e ao proprietário. Depois disso, o apache ainda não consegue acessar os arquivos sem definir a permissão de leitura para permitir todos ( rwxrwxr--(0774)
).
A pasta que contém o arquivo de índice, de propriedade apache
do grupo apachme
e das permissõesrwxrwxr-x(0775)
com isso recebo um erro 500, alterá-lo para 0774
permitirá que funcione bem
Estes eram apenas para confirmar em qual usuário o Apache estava sendo executado e se ele havia sido adicionado ao grupo.
Responder1
Do ponto de vista da segurança, não é uma boa ideia configurar páginas da web com o mesmo usuário do Apache. O usuário do Apache deve ser capaz de ler as páginas da web, mas não escrever nelas.
Como tal, na configuração padrão, é normal que as estruturas web sejam legíveis por todos, e quando há necessidade de escrever, normalmente sejam escritas pelo utilizador Apache, o que é um pesadelo de segurança.
Uma das estratégias para evitar isso é instalar/usar o mod_ruid2.https://github.com/mind04/mod-ruid2
Quanto ao Debian, basta fazer:
apt-get install libapache2-mod-ruid2
Observe que o usuário padrão do Apache varia de acordo com a distribuição. No Debian é www-data, no RH/CentOS é apache e no SuSE é wwwrun. Vou me referir a ele de agora em diante como o usuário padrão do Apache.
Se você não definir nenhuma diretiva em um vhost, ele se comportará da maneira tradicional; caso contrário, o comportamento será alterado.
A ideia é ter um processo rodando no vhost com o usuário que tem direitos sobre o vhost, e como tal, os arquivos terão essa propriedade, e se desejar, outros usuários não poderão lê-los. Normalmente você define um usuário por vhost.
Nas diretivas Virtualhost ou Directory em um vhost, você define o usuário e o grupo que estará ativo para aquele diretório. O user:usergroup são as permissões efetivas que o Apache usará ao acessar o host/diretório virtual e, como tal, qualquer usuário que pertença a esse grupo poderá escrever/ver os diretórios.
<Directory "/vhostdir/">
RMode config
RUidGid user usergroup
....
Assim, ao escrever os diretórios, agora os arquivos podem ser criados como 660 com a propriedade de user:usergroup se forem gerenciados por um grupo de usuários. Da mesma forma, os arquivos também podem ser criados por outro usuário com permissão de leitura para todo o mundo; entretanto, para escrita, não será o usuário padrão do Apache, mas sim esse outro usuário.
As vantagens do mod_ruid2 são então:
- em um ambiente de hospedagem virtual, os usuários não podem ler os arquivos de outros usuários;
- em um único usuário, você ainda pode criar arquivos como outro usuário, e nem o usuário padrão do Apache, nem o usuário ruid2 poderão sobrescrevê-los
- mais importante ainda, os arquivos gravados agora serão feitos com o usuário ruid2, e não mais globalmente com o usuário padrão do Apache.
Na página do github:
SOBRE mod_ruid2 é um módulo suexec para apache 2.0, 2.2 e 2.4, baseado em mod_ruid e mod_suid2
-é executado apenas no Linux porque apenas o kernel do Linux implementou os recursos de processo necessários. -tem melhor desempenho que mod_suid2 porque não precisa matar filhos httpd após uma solicitação. ele faz uso dos recursos do kernel e depois de receber uma nova solicitação é enviado novamente. -existem alguns problemas de segurança, por exemplo, se o invasor explorar com sucesso o processo httpd, ele poderá definir recursos efetivos e setuid para root. eu recomendo usar algum patch de segurança no kernel (grsec), ou algo assim.
-existem dois modos de operação principais: stat e config 1. config é o padrão, você deve definir uid e gid. Se nenhum [ug]id for definido, o usuário e o grupo padrão serão usados.
- stat httpd setuid e setgid para uid e gid do nome do arquivo (script)/diretório solicitado, isso é bom se você usar mod_vhost_alias para hospedagem virtual
INSTALAR 1. baixe e instale o libcap mais recente aqui 2. execute /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c 3. configure httpd.conf 4. reinicie o apache
OPÇÕES DE CONFIGURAÇÃO: RMode config|stat (o padrão é config) RUidGid user|#uid group|#gid - quando RMode é config, defina para este uid e gid
RMinUidGid user|#uid group|#gid - quando uid/gid é < que min uid/gid definido como padrão uid/gid RDefaultUidGid user|#uid group|#gid
RGroups group1 group2 - grupos adicionais definidos via setgroups @none - limpa todos os grupos definidos anteriormente.
RDocumentChrRoot - Defina o diretório chroot e a raiz do documento dentro
EXEMPLO:
<VirtualHost example.com> ServerAdmin [email protected] RDocumentChRoot /home /example.com/public_html ServerName example.com ServerAlias www.example.com RMode config # unnecessary since config is the default RUidGid user1 group1 RGroups apachetmp <Directory /home/example.com/public_html/dir> RMode stat </Directory> <Directory /home/example.com/public_html/dir/test> RMode config RUidGid user2 group2 RGroups groups1 </Directory> <Directory /home/example.com/public_html/dir/test/123> RUidGid user3 group3 </Directory> <Location /yustadir> RMode config RUidGid user4 user4 RGroups groups4 </Location>