Como dar permissão de leitura para uma pasta e suas subpastas e arquivos?

8

Alterei a propriedade do meu arquivo localhost em /var/www/ e suas subpastas e concedeu-lhe a permissão 777. No entanto, sempre que eu adiciono uma nova pasta nela, a nova pasta não recebe automaticamente essa permissão. Como posso dar uma permissão à pasta 777 para sempre, de forma que, se eu adicionar uma nova pasta ou arquivo, ela receba a mesma permissão?

    
por kamal 20.01.2011 / 09:42

6 respostas

1

As permissões para arquivos recém-criados são definidas por umask

    
por Vojtech Trefny 20.01.2011 / 09:49
11

Você pode usar a opção recursiva a qualquer momento. sudo chown -R username /var/www

    
por BZ1 20.01.2011 / 10:44
9

Como outros já mencionaram , dar 777 permissões em /var/www é uma péssima ideia, especialmente na produção.

Uma solução melhor seria dar permissões de gravação apenas aos usuários que precisam modificar os arquivos. Uma das maneiras de fazer isso é:

  • crie um novo grupo

  • adicione o (s) usuário (s) que precisa modificar os dados em /var/www para esse grupo

  • altere recursivamente a propriedade de /var/www para esse grupo

  • defina umask on /var/www para que todos os arquivos recém-criados sejam de propriedade do grupo que criamos.

Outra opção seria usar a ACL, novamente, para conceder permissões de gravação apenas aos usuários que precisam delas.

Aqui estão instruções detalhadas sobre serverfault .

Geralmente, o servidor da Web ou outros serviços de rede ou contas de usuário do sistema não devem ter permissões de gravação para os arquivos servidos pelo servidor da Web, pois isso abre uma possibilidade de execução arbitrária de código.

    
por Sergey 17.08.2012 / 07:39
2

Você deve editar /etc/apache/envvars como root com o editor de sua escolha.

Exemplo: ALT + F2
gksudo gedit /etc/apache2/envvars

Vá até o final do arquivo e adicione uma linha umask XXX .

Onde umask é o oposto binário do valor de permissões desejado.
Para 774 isso seria 003. Para 777 idéia ruim seria 000.

Salvar.

Reinicie o apache.

Exemplo: sudo apache2ctl restart

Isso afetará apenas os arquivos / pastas que foram criados recentemente pelo usuário do apache.

Nota adicional, ler e escrever é 6 no usuário, grupo ou qualquer pessoa.

    
por RobotHumans 16.08.2012 / 00:13
0

Além disso, uma solução "out of the box" é configurar o servidor http para usar uma pasta diferente. Se você usa o Apache, simplesmente edite os arquivos de configuração. Desta forma, você não precisa alterar permissões para / var / www, o que pode ser uma má ideia (possíveis problemas de segurança).

E umask é a resposta para a sua pergunta. Ele pode ser usado para restringir privilégios padrão para pastas e arquivos recém-criados. E os desenvolvedores de distribuição tendem a usá-lo para restringir o acesso a algumas pastas do sistema.

    
por przemo_li 20.01.2011 / 17:57
0

Acho que você quer ter acesso de gravação a /var/www para modificar arquivos e diretórios. Acho que a melhor solução é instalar apache2-mpm-itk e no arquivo de configuração do host virtual adicionar /etc/apache2/sites-available/default :

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

e execute chown your-username\: /var/www -Rv desta forma o apache para esse host virtual será executado com seu UID / GID e você poderá editar arquivos. Mesmo arquivos criados pelo PHP terão seu UID / GID

    
por Dawid 16.08.2012 / 00:56