Tornar proprietário de arquivos e pastas recém-criados www-data em vez de superusuário / admin

8

Eu tenho lutado com permissões até agora e postei outra pergunta, mas identifiquei qual era o problema, sem qualquer forma de corrigi-lo ainda.

Minha configuração:

  • Ubuntu Desktop com pilha LAMP
  • 5 "usuários" Criei usuários que criei no servidor ubuntu usando sudo useradd -r -s /bin/false USERNAME e que são usados para acessar as pastas compartilhadas da rede local, ou seja, para os computadores da minha rede se conectarem à pasta / var / www , compartilhada usando o Samba.
  • EDIT: O objetivo é criar uma espécie de "host local mestre" onde todos os computadores da minha rede local podem trabalhar no mesmo site, localmente (eu não tenho um endereço IP estático, portanto, o servidor não pode ser acessado de outro lugar).

Meu problema:

Atualmente, quando eu crio uma nova pasta em /var/www/html (ex: Criando a pasta / var / www / html / testsite1) usando qualquer computador da rede, esta pasta pertence automaticamente a boris:www-data ("boris" sendo o principal usuário admin na minha instalação do Ubuntu desktop, e mostra de fato boris: www-data quando executando ls -l na pasta recém-criada), o que está causando problemas com a minha configuração atual (usando Duplicator Plugin for wordpress por LifeInTheGrid principalmente). No entanto, meus /var/www e meus /var/www/html são de propriedade de www-data:www-data

Por isso, gostaria de saber como posso:

  • Altere a propriedade para www-data: www-data de todos os arquivos E diretórios abaixo de / var / www e / var / www / html

  • Certifique-se de que qualquer arquivo ou pasta que eu criar com qualquer um dos usuários da minha rede será automaticamente propriedade de www-data: www-data (Isso inclui arquivos criados automaticamente pelo php scripts como é o que o plugin Duplicator faz se eu não estiver errado).

Existe uma maneira de fazer isso?

Nota: Eu sou um novato super com coisas relacionadas ao Linux e linhas de comando, mas eu pego rápido.

Nota 2: umask já está definido como 0002

EDITAR:

Tentei isto:

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

E, em seguida, defina setuid e setgid bits fazendo isso:

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

Em seguida, desconectado, reiniciei o apache e tentei criar uma nova pasta usando um Mac conectado ao meu servidor através do IP da rede (IP local, não estático).

Eu corri

ls -l on /var/www/html

A saída ainda é:

drwxr-sr-x 2 boris   www-data  testsite1

Nota:

Eu já verifiquei minha configuração do apache antes e envvars, ela já está definida para:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

EDIT: Tentei de trás para frente, por exemplo, configurando tudo para ser de propriedade da boris: www-data e definindo minha configuração do apache do envvars para boris: www-data. FUNCIONOU!

Aqui está o que eu fiz:

Envios alterados para

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Ran

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

Reiniciei o Apachem, criei uma nova pasta, adicionei meus arquivos, executei o plugin, agora ele diz que é bom !!!

    
por Boris Chevreau 02.06.2015 / 13:28

4 respostas

7

Resposta à pergunta nº 1: recursivo chown

Um chown recursivo permite definir a propriedade e agrupar o que você deseja para /var/www/... . Este é o comando que você deve usar:

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

Com isso, todos os arquivos e pastas serão definidos como tal lá dentro com essas permissões de propriedade.

Resposta parcial à pergunta nº 2: setgid bit

Se você quiser a propriedade de grupo padrão nos arquivos, defina o setgid bit na pasta /var/www/html . Novos arquivos devem ser criados com esse grupo, conforme indicado na pasta.

sudo chmod g+s /var/www/html

Você precisará definir permissões de gravação, no entanto, se qualquer usuário diferente de www-data estiver gravando nos diretórios, e isso pode abrir você para uma lacuna de segurança ou dois se você não for cuidadoso.

Você acaba com as permissões sendo $USER:www-data ; para alterar o proprietário, você usa um chown como indicado no método 1 (que, em uma configuração apropriada, você deve confiar nas permissões do grupo, não nas permissões do proprietário do usuário, para acessar os arquivos da web).

Problema com o Duplicador de Wordpress em PHP

O problema com permissões é o usuário / grupo. O PHP roda conforme as necessidades escrevem e leem e provavelmente +x no diretório para editar a estrutura dir e tal.

O PHP é executado como www-data por padrão nas instalações do Ubuntu que usam as configurações padrão. Idealmente, seus passos acima tornariam o problema resolvido, já que você está preso com o Plugin Duplicador sendo um plugin PHP.

O ideal é que você também verifique a documentação do Duplicator Plugin para verificar quais permissões precisa ser executado e funcionar.

    
por Thomas Ward 02.06.2015 / 13:49
4

Para garantir que qualquer arquivo ou pasta que você criar em /var/www/html seja automaticamente propriedade de www-data, use inotify , é como cron, mas monitora pastas / arquivos para alterações em atributos, criações de arquivos, modificações e muito mais .

Primeiro, instale-o com:

$ sudo apt-get install incron

Permitir que o root use incron abrindo /etc/incron.allow com:

$ sudo vim /etc/incron.allow

e adicione root ao arquivo, depois salve e saia.

Edite seu incrontab com:

$ sudo incrontab -u root -e

e adicione a seguinte linha a ele:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

salve e saia.

Agora, assim que um arquivo for criado na /var/www/html direcotry, ele será definido automaticamente como onwership como www-data:www-data .

Explicação da linha em incrontab:

/var/www/html é o diretório que será monitorado.

IN_CREATE assistirá aos arquivos criados. É a máscara de mudança de arquivo .

/bin/chown -R www-data:www-data /var/www/html/ é o comando / ação a ser executado.

    
por krt 02.06.2015 / 13:59
3
  

Altere a propriedade para www-data: www-data de todos os arquivos E diretórios abaixo de / var / www e / var / www / html

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html está implícito aqui (como sendo parte de / var / www /)
  • -R torna recursivo (por isso, ele percorre todos os diretórios em /var/www/ ).
  

Verifique se qualquer arquivo ou pasta que eu criar com qualquer um dos usuários da minha rede será propriedade da www-data: www-data

  • Dentro de / var / www / html / eu suponho?

Defina sua configuração do apache para www-data. Veja /etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Você precisa reiniciar o apache depois de editar isso ( sudo service apache restart ).

  

Isso inclui arquivos criados automaticamente por scripts php, pois é o que o plugin Duplicator faz se eu não estiver errado).

O problema aqui provavelmente não é o plugin, mas o php. O usuário deve ser o mesmo processo em que o PHP é executado. Então você provavelmente precisa configurar isso para www-data também se esse for seu usuário e grupo ( /etc/php5/apache2/php.ini ).

    
por Rinzwind 02.06.2015 / 13:44
1

Eu resolvi isso! Eu ainda acho que foi um problema de envasamento do Apache, mas não tenho certeza se essa é a única coisa que resolveu o problema ... De qualquer forma, aqui está o que eu fiz:

Alterado envvars para

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Ran

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

Agora está funcionando até agora. Vai testar mais ...

    
por Boris Chevreau 02.06.2015 / 16:31