A maioria das respostas aqui não é escrita com a segurança em mente. É bom ter a sensação de que correr sudo
cada vez não é muito sábio. Se você digitar um erro de digitação (por exemplo, um único espaço em branco em um local errado: sudo rm -rf / var/www/dir
não execute! ), Poderá eliminar o sistema do lixo.
Nota: A partir do Apache 2.4.7 / Ubuntu 14.04, /var/www
foi movido para /var/www/html
Ajustar os comandos nesta resposta de acordo.
Vejo:
Más idéias:
chmod 777
(sagarchalise) - isso permite que qualquer pessoa com acesso ao seu sistema grave nos diretórios e arquivos e, assim, permita que o invasor execute qualquer código sob o www-data
usuário
chgrp -R www-data $HOME
(cob) - permite www-data
ler ou gravar qualquer arquivo no diretório inicial. Isso não mantém em mente a regra dos privilégios mínimos
chown -R $USER:$USER /var/www
(kv1dr) - a menos que o mundo tenha permissões de leitura /var/www
, o servidor da web em execução www-data
não poderá ler (atender) os arquivos. Se o arquivo for um documento HTML simples acessível ao público, pode não ser um problema se o mundo puder ler o arquivo. Mas se o arquivo é um arquivo PHP contendo senhas, é.
NOTA : nas soluções abaixo, concedi www-data
privilégios de gravação. No entanto, /usr/share/doc/base-passwd/users-and-groups.txt.gz
afirma:
www-data
Alguns servidores web são executados como www-data. O conteúdo da Web não deve pertencer a esse usuário, ou um servidor comprometido poderá reescrever um site. Os dados gravados pelos servidores da Web pertencem à www-data.
Sempre que possível, não conceda permissões de gravação ao www-data
grupo. www-data
só precisa ler os arquivos para que o servidor da web possa atendê-lo. O único caso em que www-data
precisa de permissões de gravação é para diretórios que armazenam uploads e outros locais que precisam ser gravados.
Solução 1
Adicione-se ao www-data
grupo e defina o bit setgid no /var/www
diretório para que todos os arquivos recém-criados também herdam esse grupo.
sudo gpasswd -a "$USER" www-data
Corrija os arquivos criados anteriormente (supondo que você seja o único usuário de /var/www
):
sudo chown -R "$USER":www-data /var/www
find /var/www -type f -exec chmod 0660 {} \;
sudo find /var/www -type d -exec chmod 2770 {} \;
(ainda mais seguro: use 640
ou 2750
e manualmente chmod g+w file-or-dir
que precise ser gravável pelo servidor da web)
Solução 2
Crie um link simbólico para cada projeto no seu diretório pessoal. Digamos que seu projeto esteja localizado em ~/projects/foo
e você deseja localizá-lo em /var/www/foo
, execute:
sudo ln -sT ~/projects/foo /var/www/foo
Se o diretório inicial não tiver o bit de execução (descendente) definido por other
(por razões de segurança), altere o grupo para www-data
, mas defina apenas o bit de execução (sem leitura / gravação). Faça o mesmo com a ~/projects
pasta, pois ela pode conter outros projetos além de www. (Você não precisa sudo
se já adicionou seu usuário ao www-data
grupo.)
sudo chgrp www-data ~ ~/projects
chmod 710 ~ ~/projects
Definir o grupo para www-data
on ~/projects/foo
e permitir que o servidor web para ler e gravar arquivos e arquivos de diretórios + e descer em diretórios:
sudo chgrp www-data ~/projects/foo
find ~/projects/foo -type f -exec chmod 660 {} \;
find ~/projects/foo -type d -exec chmod 2770 {} \;
Ainda mais seguro: use 640 e 2750 por padrão e manualmente arquivos e diretórios chmod que precisam ser graváveis pelo usuário do servidor da web. O bit setgid deve ser adicionado apenas se você quiser que cada arquivo recém-criado ~/projects/foo
seja acessível pelo grupo.
A partir de agora, você poderá acessar o site http://localhost/foo
e editar os arquivos do projeto ~/projects/foo
.
Veja também