A maioria das respostas aqui não é escrita com a segurança em mente. É bom ter a sensação de que correr sudocada 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/wwwfoi movido para /var/www/htmlAjustar 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-datausuário
chgrp -R www-data $HOME(cob) - permite www-dataler 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-datanã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-dataprivilégios de gravação. No entanto, /usr/share/doc/base-passwd/users-and-groups.txt.gzafirma:
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-datagrupo. www-datasó precisa ler os arquivos para que o servidor da web possa atendê-lo. O único caso em que www-dataprecisa 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-datagrupo e defina o bit setgid no /var/wwwdiretó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 640ou 2750e manualmente chmod g+w file-or-dirque 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/fooe 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 ~/projectspasta, pois ela pode conter outros projetos além de www. (Você não precisa sudose já adicionou seu usuário ao www-datagrupo.)
sudo chgrp www-data ~ ~/projects
chmod 710 ~ ~/projects
Definir o grupo para www-dataon ~/projects/fooe 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/fooseja acessível pelo grupo.
A partir de agora, você poderá acessar o site http://localhost/fooe editar os arquivos do projeto ~/projects/foo.
Veja também