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

191

Instalei o apache2 no Ubuntu agora e notei que a pasta / var / www está protegida. Eu posso apenas sudotudo, mas prefiro apenas dar acesso de gravação.

Como posso fazer isso?

Eu tentei, sudo chmod 7777 /var/wwwmas não funcionou.

Carson Myers
fonte
É um servidor acessível ao público ou não tem conexão direta com a Internet? Se o primeiro for importante, considere as decisões de segurança - os servidores na Internet estão constantemente sob ataque (consulte seu / var / log / messages ou equivalente).
kwutchak
este é apenas meu laptop, não é acessível pela internet.
Carson Myers

Respostas:

321

Para compartilhar da melhor maneira com vários usuários que devem poder se inscrever /var/www, deve ser atribuído um grupo comum. Por exemplo, o grupo padrão para o conteúdo da web no Ubuntu e Debian é www-data. Verifique se todos os usuários que precisam de acesso de gravação /var/wwwestão nesse 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 os novos arquivos e diretórios criados sob /var/wwwsejam de propriedade do www-datagrupo.

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

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

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

Pode ser necessário sair e fazer login novamente para poder fazer alterações se estiver editando a permissão para sua própria conta.

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

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

sudo chmod -R 757 /var/www

Essencialmente, o chmodcomando altera as permissões e a -Ropção afeta todos os usuários. Então é simplesmente dar as permissões corretas para usar.

Krishna Modi
fonte
3
Você poderia dar uma idéia do que o comando faz para o OP?
n0pe 23/09/11
11
-1 por falta de explicação. Além disso, chmod $permissions -R $filenão é válido ...
Blacklight Shining
11
é opções, em seguida, permissões não o contrário
Moataz Elmasry
2
sudo chmod -R 757 /var/www
Bwyss
alguém experiente sugere uma edição com uma breve explicação sobre isso.
Adi Prasetyo
29

Ler + Escrever:

sudo chmod -R a+rw /var/www

Ler + Escrever + Executar:

sudo chmod -R a+rwx /var/www
paivarico
fonte
7

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

Eles apenas definem as permissões como você faria para o usuário, grupo, outro e máscara usando chmod:

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

E pode ser assim que 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., tudo sem precisar modificar as configurações do seu grupo. E, diferentemente do chmod, se você deseja que alguns groupies tenham acesso a um diretório e outros groupies tenham acesso apenas a outro, é realmente possível com o setfacl. Por fim, para visualizar 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.

Nikhil Chelliah
fonte
2

A resposta rápida e fácil -

uma. Adicione ( -a ) seu usuário ( nome_do_usuário ) ao grupo ( -G ) www-data .

sudo usermod -a -G www-data user_name

b. Conceda ao Grupo ( g ) as mesmas permissões ( = ) que o Usuário proprietário ( u ) de / var / www Recursivamente ( -R ).

sudo chmod -R g=u /var/www

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

user1138
fonte
1

Eu normalmente uso

chmod g+w /folder/ -R

É quase autoexplicativo.

Ele adiciona todos os que estão no group de /folder/ter wacesso rito ( +w), -Ré para recursão para subpastas.

Arda
fonte
-3

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

Uma palavra de aviso: se você permitir que todos acessem esta pasta, isso significa que os hackers podem acessá-la se tiverem acesso ao seu sistema. É por isso que é melhor criar um grupo de usuários permitidos e conceder acesso a esse grupo de gravação.

stalepretzel
fonte
então, por que oferecer isso como uma solução e imediatamente desacreditá-lo? -1 voto
Tisch
-3

Primeiro, insira o caminho da pasta específica e, em seguida, use este comando…

chmod -R 777 foldername
chown username:username foldername 
marimuthu
fonte
7
Uau, isso é ruim! Você não dá um 777 com -R - especialmente se a pessoa que faz a pergunta é iniciante e não entende os riscos.
recluze
@Recluze verdadeiro o suficiente.
vgoff