Questão Como posso dar acesso de gravação de uma pasta para todos os usuários no linux?


Eu instalei o apache2 no Ubuntu agora e notei que a pasta / var / www está protegida. Eu posso apenas sudo tudo, mas eu prefiro apenas dar acesso de escrita.

Como posso fazer isso?

eu tentei sudo chmod 7777 /var/www mas não funcionou.


162


origem


Este é um servidor publicamente acessível ou não tem conexão direta com a Internet? Se o primeiro é importante que você considere as decisões de segurança - os servidores na internet estão constantemente sob ataque (dê uma olhada em seu / var / log / messages ou equivalente). - kwutchak
Este é apenas o meu laptop, não é acessível a partir da Internet. - Carson Myers


Respostas:


Para compartilhar melhor com vários usuários que devem poder escrever /var/www, deve ser atribuído um grupo comum. Por exemplo, o grupo padrão para conteúdo da web no Ubuntu e Debian é www-data. Certifique-se de que todos os usuários que precisam de acesso de gravação /var/www estão neste grupo.

sudo usermod -a -G www-data <some_user>

Em seguida, defina as permissões corretas em / var / www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Além disso, você deve tornar o diretório e todos os diretórios abaixo dele "set GID", para que todos Novo arquivos e diretórios criados sob /var/www são de propriedade da www-data grupo.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Encontre todos os arquivos em /var/www e adicionar permissão de leitura e gravação para proprietário e grupo:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Você pode ter que fazer logout e fazer login novamente para poder fazer alterações se estiver editando a permissão para sua própria conta.


285



isso é muito tedioso ... Eu não posso apenas dar aos usuários acesso a ele, como se fosse qualquer outra pasta? - Carson Myers
que é como você dá acesso a ele. É mais rápido copiar e colar os comandos do que tentar navegar pelos diálogos de um gerenciador de arquivos da GUI para fazer a mesma coisa. A longo prazo, ajuda se você ler as páginas de manual para chmod e chgrp, pelo menos ("man chmod"). - jtimberman
talvez eu não tenha entendido os comandos na primeira vez que o li, e sua edição deixa muito mais claro. - Carson Myers
+1 para guid forçar as permissões do apache. funciona bem com umask de 027. Se algo precisa de escrita, é tão fácil quanto chmod g + w dir / - LiraNuna
Por que seu comando de permissão de grupo sudo chmod -R g+w e não g+rw ou g+rwX? - detly


Existe uma maneira mais simples de fazer isso, tente fazer este comando.

sudo chmod -R 757 /var/www

Essencialmente, o chmod comando altera permissões e o -R switch afeta todos os usuários. Então é simplesmente dando as permissões corretas para usar.


25



Você poderia dar algumas dicas sobre o que o comando faz para o OP? - n0pe
-1 por falta de explicação. Além disso, chmod $permissions -R $file não é válido ... - Blacklight Shining
é opções, em seguida, as permissões não o contrário - Moataz Elmasry
sudo chmod -R 757 /var/www - Bwyss
por favor alguém experiente sugerir uma edição com uma breve explicação sobre isso. - Adi Prasetyo


Leitura + gravação:

sudo chmod -R a+rw /var/www

Ler + Escrever + Executar:

sudo chmod -R a+rwx /var/www

23





Você também pode replicar o que o jtimberman sugeriu usando listas de controle de acesso. o setfacl o comando aceita -s para substituir uma ACL ou -m existente para modificá-lo; -R para tornar o diretório ACLs recursivo; e -d para tornar as configurações especificadas como padrão, o que é útil se você está antecipando contas de usuário futuras.

Estes apenas definir as permissões como você faria para o usuário, grupo, outro e mascarar usando chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

E isso pode ser como você faria isso para um usuário especificado ou seu grupo:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

E, claro, a força é que você pode designar qualquer usuário específico, vários usuários, etc., sem ter que modificar suas configurações de grupo. E ao contrário do chmod, se você quer que alguns groupies tenham acesso a um diretório e outros groupies para ter acesso apenas a outro, é realmente possível com o setfacl. Finalmente, para ver as ACLs de um diretório, execute getfacl:

getfacl DIRECTORY

E você pode especificar -R para ver as ACLs dos subdiretórios ou -d para ver os padrões.


5



Esta é a melhor resposta! Queria poder votar mais de uma vez. - Tim Duncklee


A resposta rápida e fácil -

uma. Adicionar (-uma) seu usuário (user_name) para o grupo (-G) www-data.

sudo usermod -a -G www-data user_name

b. Dê o grupo (g) o mesmo (=) permissões como o usuário proprietário (você) do / var / www Recursivamente (-R).

sudo chmod -R g=u /var/www

Explicação: O Apache 2 no Debian / Ubuntu define o User & Group www-data como o proprietário de / var / www. As permissões padrão para o usuário são "Visualizar e modificar o conteúdo", mas o grupo só pode "Exibir conteúdo". Então, adicionar-se ao Grupo www-data e conceder-lhe as mesmas permissões que o Usuário wwww-data, é uma maneira rápida e fácil de desenvolver. Eu faço isso para todos os meus ambientes de desenvolvimento Web localhost (PC / Laptop).


2





Eu uso typicall

chmod g+w /folder/ -R

É quase auto-explicativo.

Ele adiciona todos no gconjunto de /folder/ Ter wacesso rito (+w) -R é para recursão de subpastas.


1





Você pode apenas tentar chmod 0777 /var/www ?

Uma palavra de aviso: se você permitir que todos acessem essa pasta, isso significa que os hackers podem acessar essa pasta se tiverem acesso ao seu sistema. É por isso que é melhor criar um grupo de usuários permitidos e dar acesso a esse grupo.


-3



Então, por que oferecer isso como uma solução e, em seguida, imediatamente desacreditá-lo? -1 voto - Tisch