Problema de permissões do usuário Linux

3

Toda vez que eu criar um novo arquivo a partir de "eclipse", eu preciso executar essas duas linhas de código para obter a permissão r / w:

chmod -R 775 /var/www/folder/filename.extension

E / ou

sudo chown -R www-data:www-data /var/www

E, se eu copiar alguns arquivos nessa pasta do servidor e acessá-los pelo URL do navegador, como:

localhost/folder/filename.extension

Eu recebo um erro de permissão do Apache Server.

Não tem como eu me livrar desse problema?

* Nota: O erro principal ocorre quando minha função move_uploaded_file() tenta mover o arquivo para o diretório /var/www/MyProject/ .

    
por TheManish 17.06.2014 / 10:04

3 respostas

5

Use o bit SGID.

Faça isso uma vez e esqueça o problema:

chmod g+s /var/www/folder

Você pode querer fazer o mesmo para todas as subpastas:

find /var/www/folder -type d | xargs chmod g+s

e, apenas no caso:

find /var/www/folder -type d | xargs chgrp www-data

Agora, todos os arquivos criados em /var/www/folder/ pertencerão ao grupo que possui a pasta que os contém, não importa o quê. Isso permitirá que você crie arquivos ou pastas sem se preocupar com o fato de não pertencer, por exemplo, ao grupo www-data , que é o que você deseja.

Por favor, note que isto funcionará apenas para arquivos ou pastas criadas dentro do diretório. Se os arquivos forem criados em outro lugar e movidos para a árvore de diretórios, você ainda precisará alterar a propriedade manualmente.

Exemplo:

# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l

drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test

# Create a file, check the ownership
$ touch test/file1
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:16 file1

# Set the SGID bit
$ chmod g+s test
$ ls -l

drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test

# Create a file, check the ownership
$ touch test/file2
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data    0 Jun 17 10:19 file2

Mais informações aqui .

    
por 17.06.2014 / 10:12
2

Você pode usar as ACLs padrão para atribuir permissões de usuários e grupos a novos arquivos e diretórios:

setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension
    
por 17.06.2014 / 10:36
0

Em primeiro lugar, gostaria de salientar que deveria ser mais específico ao fazer perguntas; por exemplo. Qual OS, distribuição Linux você está usando, pois isso pode acelerar o processo de encontrar uma solução muito. Tendo dito isso, você pode começar a solução de problemas alterando a propriedade propriedade e UAC (Controle de Acesso do Usuário) de forma recursiva, assim:

chown domain:www-data /var/www/folder -chR

chmod 775 /var/www/folder -cR

OBSERVAÇÃO : excluindo a barra à direita (/) no final do nome da pasta, suas alterações serão aplicadas à pasta e a todo o seu conteúdo.

Quanto aos erros de permissão ao acessar o arquivo (script?) no navegador, você precisa garantir que o usuário tenha as permissões corretas para veicular arquivos em apache . Isso deve ser feito editando seu arquivo /etc/httpd/*/httpd.conf e adicionando:

User domain
Group www-data
    
por 17.06.2014 / 10:32