Permissões do usuário apache na pasta public_html [RESOLVIDO]

1. Permissões do usuário apache na pasta public_html [RESOLVIDO]

Brasilio
darsp

(usa Gentoo)

Enviado em 03/10/2012 - 22:32h

Boa {dia,tarde,noite}, eu estou precisando esclarecer uma duvida, tenho um servidor apache2.4.3 compilado na unha rodando em um Arch Linux e executando parcialmente normal.
Eu estou configurando o SuExec para os arquivos em perl, lua e php, ao que tudo indica funciona maravilhosamente bem o problema é que pretendo deixar as pastas home/users/public_html com chmod 750, quer dizer que o usuário e o grupo terão acesso a pasta e arquivos, mas outros usuários não e é exatamente aqui que está o problema.

Quando eu seto as permissões da pasta para 750 recebo o erro 403, agora me vem a duvida: como fazer para que um outro usuário além do dono e o root tenha acesso a leitura nesse diretório?
Preciso que apenas mais um usuário tenha leitura nesse diretório, o usuário apache, já tentei de tudo até adicionei o usuário apache ao grupo root e não resolveu.

Alguém tem alguma solução?

Desde já eu agradeço!


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/10/2012 - 09:45h

Amigo, não tem problema algum em dar 755 para essa pasta.

Em diretórios o X é o que permite ao usuário entrar no diretório,
o R é o que permite ler os dados do diretório (comando ls). Sem o W não há como apagar ou escrever no diretório.

O modo de fazer um sistema de permissões mais apurado (por usuário) é instalar o sistema ACL - Access Control List - acho que aqui no VOL vc encontra artigos ou dicas sobre isso.

Outras opções de segurança de diretórios são implementadas dentro do próprio Apache com <Directory> e outras tags.

Abraço.


3. Re: Permissões do usuário apache na pasta public_html [RESOLVIDO]

Brasilio
darsp

(usa Gentoo)

Enviado em 04/10/2012 - 14:13h

Concordo que não há problema com a permissão 755 ou superior, o único problema é que quando se tem mais de um usuário com site hospedado no servidor essa permissão permite que outros usuários acessem os diretórios uns dos outros, e como existem arquivos em php/perl/lua/jsp etc, que contem informações como nome de usuário e senha para acesso ao seus respectivos bancos de dados, ftp ou email pode ocorrer de um usuário malicioso simplesmente executar um copy (/home/nome_de_usuario/public_html/arquivo_seguro.php, ./);
Agora se eu restringir apenas ao dono seus diretórios não tenho o risco de ocorrer isso, muito obrigado pela dica vou estar lendo a respeito, eu também estou lendo a respeito de executar o httpd como root, já que todos os scripts que tem o potencia para prejudicar o sistema são executados com suexec (usuario comum, grupo comum) não corro o risco de afetarem o sistema, vou estar lendo a respeito da sua dica e se ela se adequar melhor e garantir uma maior segurança que executar httpd como root vou estar implantando.

Muito obrigado pela resposta!

------------------------------------------------------------------

Cara só comecei a ler sobre ACL é já vi que gostei, ao que tudo indica vai cair feito uma luva, muito obrigado amigo, essa sua dica me salvou!


4. Re: Permissões do usuário apache na pasta public_html [RESOLVIDO]

Brasilio
darsp

(usa Gentoo)

Enviado em 04/10/2012 - 14:53h

Pronto, problema resolvido, valeu a dica amigo ela foi perfeita.

Para alguém que esteja com duvida a respeito
permissão 750 nos diretórios do vhost do apache.

extras/httpd-userdir.conf
Userdir public_html

<Directory "/home/*/public_html">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Require all granted
</Directory>

extras/httpd-vhost.conf
<VirtualHost darksp.com:80>
SuexecUSerGroup lilith lilith

ServerAdmin postmaster@darksp.com
DocumentRoot "/home/lilith/public_html"
ServerName darksp.com
ServerAlias www.darksp.com
ErrorLog "/home/lilith/error_log"
CustomLog "/home/lilith/access_log" common

<IfModule suphp_module>
suPHP_ConfigPath /usr/local/etc/php5
suPHP_UserGroup lilith lilith
</IfModule>
</VirtualHost>

<VirtualHost pronto-falei.com:80>
SuexecUSerGroup prontofalei prontofalei

ServerAdmin postmaster@pronto-falei.com
DocumentRoot "/home/prontofalei/public_html"
ServerName pronto-falei.com
ServerAlias www.pronto-falei.com

ErrorLog "/home/prontofalei/error_log"
CustomLog "/home/prontofalei/access_log" common

<IfModule suphp_module>
suPHP_ConfigPath /usr/local/etc/php5
suPHP_UserGroup prontofalei prontofalei
</IfModule>
</VirtualHost>

............. e por ai vai, domínio abaixo de domínio. ..............................



Basta ativar o acl na partição onde está a home, no meu caso meu /etc/fstab ficou assim
/dev/sda7 /home ext4 noatime,acl 0 2

chmod 750 /home/nome_do_usuario/public_html
setfacl -m u:usuario_apache:rx /home/nome_do_usuario/public_html (permissão de leitura e execução, para outras basta adicionar algo como: :rwx)

E adivinha só, o usuário apache tem acesso de leitura no diretório a partir de agora, não dá mais erro 403

Mais uma vez muito obrigado pela resposta!

Só para constar, fiz o teste em um server CentOS com o kernel 2.6.32-279.el6.i686, agora vou aplicar no ArchLinux com o kernel 3.5.5-x86_64






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts