Até agora, tenho lutado com permissões e postei outra pergunta, mas identifiquei qual era o problema, sem nenhuma maneira de corrigi-lo.
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 que os computadores da minha rede se conectem à pasta / var / www, compartilhada usando o Samba. - EDIT: O objetivo é criar uma espécie de "host local principal" onde todos os computadores da minha rede local possam 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 crio uma nova pasta no /var/www/html
(ex: Criando a pasta / var / www / html / testsite1) usando qualquer computador da rede, essa pasta pertence automaticamente a boris:www-data
("boris" sendo o principal usuário administrador na instalação da minha área de trabalho do ubuntu e mostra de fato boris: www-data ao executar ls -l
na pasta recém-criada), o que está causando problemas na minha configuração atual (usando o Duplicator Plugin para wordpress pela LifeInTheGrid principalmente). No entanto, tanto o meu /var/www
quanto o meu /var/www/html
são de propriedade dewww-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 / var / www e / var / www / html
Verifique se qualquer arquivo ou pasta que criarei com qualquer usuário da minha rede pertencerá automaticamente a www-data: www-data (Isso inclui arquivos criados automaticamente por scripts php, pois é o que o plug-in do Duplicador faz se eu estiver não está errado).
Existe uma maneira de fazer isso?
Nota: Eu sou um super novato com coisas relacionadas ao Linux e linhas de comando, mas atualizo rapidamente.
Nota 2: umask já está definida como 0002
EDITAR:
Tentei isso:
sudo chown -R www-data:www-data /var/www/
E, em seguida, defina os bits setuid e setgid fazendo o seguinte:
sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html
Em seguida, efetue o logoff, 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 como:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
EDIT: Tentei de trás para frente, por exemplo, configurando tudo para pertencer ao boris: www-data e defina meus envvars apache config para boris: www-data. FUNCIONOU!
Aqui está o que eu fiz:
Envvars alterados para
export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data
Correu
sudo chown -R boris:www-data /var/www/
Reiniciei o Apachem, criei uma nova pasta, adicione meus arquivos, executei o plugin, agora diz que é bom !!!
fonte
Respostas:
Resposta à Pergunta 1: Recursiva
chown
Uma recursiva
chown
permitirá definir a propriedade e o grupo para o que você deseja/var/www/...
. Este é o comando que você deve usar:Com isso, todos os arquivos e pastas serão configurados como tal lá dentro, com essas permissões de propriedade.
Meia resposta à pergunta 2:
setgid
bitSe você deseja a propriedade padrão do grupo nos arquivos, defina o
setgid
bit na/var/www/html
pasta. Novos arquivos devem ser criados com esse grupo, conforme indicado na pasta.Você precisará definir permissões de gravação, se houver outro usuário que
www-data
esteja gravando nos diretórios, e isso poderá abrir uma ou duas brechas de segurança, se você não tomar cuidado.Você acaba tendo permissões
$USER:www-data
; Para alterar o proprietário, use umchown
conforme indicado no método nº 1 (que disse que, em uma configuração adequada, 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 do PHP Wordpress Duplicator
O problema com as permissões é que o usuário / grupo PHP executa conforme as necessidades de gravação e leitura e provavelmente
+x
no diretório para editar a estrutura do diretório e tal.O PHP é executado como
www-data
padrão nas instalações do Ubuntu, que usam as configurações padrão. Idealmente, suas etapas acima resolveriam o problema, pois o Duplicator Plugin é um plug-in PHP.Idealmente, você também deve verificar a documentação do Duplicator Plugin para verificar quais permissões ele precisa para executar e funcionar.
fonte
Para garantir que qualquer arquivo ou pasta que você crie
/var/www/html
seja de propriedade automática da www-data, você pode usarinotify
, é como o cron, mas monitora pastas / arquivos em busca de alterações nos atributos, criações, modificações e muito mais.Primeiro instale-o com:
Permita que o root use
incron
, abrindo/etc/incron.allow
com:e adicione
root
ao arquivo, salve e saia.Edite seu incrontab com:
e adicione a seguinte linha a ele:
salvar e sair.
Agora, assim que um arquivo é criado no
/var/www/html
diretório, ele automaticamente define a participação emwww-data:www-data
.Explicação da linha no incrontab:
/var/www/html
é o diretório que será monitorado.IN_CREATE
observará os arquivos criados. É a máscara de alteração de arquivo ./bin/chown -R www-data:www-data /var/www/html/
é o comando / ação a ser executado.fonte
./html
está implícito aqui (como parte de / var / www /)-R
torna-o recursivo (para percorrer todos os diretórios/var/www/
).Defina sua configuração do apache para www-data. Vejo
/etc/apache2/envvars
Você precisa reiniciar o apache após editar este (
sudo service apache restart
).O problema aqui provavelmente não é o plugin, mas o php. O usuário deve ser o mesmo processo em que o PHP é executado. Portanto, você provavelmente precisará definir isso também como www-data, se esse for seu usuário e grupo (
/etc/php5/apache2/php.ini
).fonte
www-data
, assim como o Debian, acredito./var/www/html
também é propriedade do grupo e privs de leitura / gravação. O outro problema é que eles querem que qualquer arquivo criado por um usuário tenhawww-data:www-data
, e meu palpite é que esses são usuários de rede , não os usuários do Wordpress, então você precisa ir atrás das permissões de arquivo do Linux.Eu resolvi isso! Eu ainda acho que foi um problema dos envios do Apache, mas não tenho certeza se é isso que resolveu o problema ... Enfim, aqui está o que eu fiz:
Envvars alterados para
Correu
Agora está funcionando até agora. Vai testar ainda mais ...
fonte