Como dou o usuário www-data a uma pasta na minha pasta pessoal?

31

Eu tenho uma pasta: /home/myuser/folderA

Quero dar ao usuário www-data acesso de gravação ao acima, enquanto 'myuser' continua a ter acesso normal (pois, de qualquer maneira, é a pasta pessoal do myuser).

Quais comandos eu preciso usar?

Nota: não quero www-datater acesso a nenhuma outra pasta no /home/myuser/.

Desde já, obrigado.

nLinked
fonte

Respostas:

46

Primeiro, adicione-se ao grupo www-data

usermod -a -G www-data (your username)

Então:

chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA

Deve fazer o truque, a menos que as permissões do seu /home/myusercomputador não permitam o acesso de outros usuários.

O primeiro comando altera a propriedade do grupo da pasta para a do servidor da web. O segundo comando fornece aos membros do www-datagrupo direitos de leitura, gravação, entrada no diretório e o ssinalizador do grupo garantirá que todos os arquivos criados dentro desse diretório www-datasejam do grupo - portanto, se você criar um arquivo, myusero www-datausuário terá acesso.

Nb. isso também depende das umaskconfigurações da sua conta de usuário e do servidor da web: você precisa garantir que os arquivos criados na pasta A tenham rwacesso ao grupo (e diretórios criados no grupo de necessidade rwx)

Se o seu servidor da Web não tiver direitos de entrada no seu /home/myuserdiretório (bastante sensato), ele não será acessado, a menos que você faça outra coisa. Dois solns:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (esse é um truque feio e teria que ser repetido após a reinicialização. Mas um truque poderoso também pode ser usado para tornar as pastas acessíveis dentro das cadeias SSH.)

  2. Simplesmente mova a pasta compartilhada para outro lugar, por exemplo /home/shared-stuff/folderA.

A segunda opção é mais agradável. Digamos que o conteúdo da pasta A é realmente público e você não se importa com quem o vê, pode configurá-lo como

sudo mkdir -m777 /home/shared-stuff

Em seguida, você pode colocar dentro, digamos, da pasta A com as permissões acima, e da pasta B que os dados da www não devem ter acesso com permissões diferentes, por exemplo

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB
artfulrobot
fonte
o que está sdentro g+rwxs?
T.Todua 8/01
Bit "Grupo pegajoso". É efeito explicado no parágrafo que começa com "O primeiro ..." :-)
artfulrobot
6

Outra maneira é alterar o nome de usuário diretamente na configuração do apache, isto é, se for a sua máquina local e você salvar imagens de algum outro lugar que esmagaria as permissões feitas na pasta. Também deve ser feito se você tiver apenas 1 usuário e não se importar com www-data!

$ sudo vi /etc/apache2/apache2.conf

Encontre Usuário e Grupo e coloque o seu
User <Your User>
Group <Your Group>

$ sudo service apache2 restart
Shadowbob
fonte
Essa solução não parece tão segura, alguém sabe que tipo de ameaças à segurança essa configuração causará?
Fleuv
Tenho certeza de que não é seguro, foi por isso que dei apenas a precisão do Local Machine.
Shadowbob
Esta solução fornece todo o acesso ao apache para sua pasta ...
Loenix 12/01