Como eu dou um usuário www-data para uma pasta na minha pasta pessoal?

30

Eu tenho uma pasta: / home / myuser / folderA

Eu quero dar ao usuário www-data acesso de gravação para o acima, enquanto 'myuser' continua a ter acesso normal (já que é a pasta pessoal do myuser).

Quais comandos eu preciso usar?

Observação: não quero que o www-data tenha acesso a nenhuma outra pasta em / home / myuser /.

Obrigado antecipadamente.

    
por nLinked 17.01.2013 / 22:18

2 respostas

36

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 no seu /home/myuser 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 grupo www-data direitos de leitura, gravação, inserção de diretórios e o grupo s flag garantirá que todos os arquivos criados dentro desse diretório tomem www-data como o grupo - portanto, se você criar um arquivo como myuser o usuário www-data terá acesso.

Nb. isso também depende das configurações de umask de sua conta de usuário e do servidor da Web: é necessário garantir que os arquivos criados na pastaA tenham o grupo rw access (e diretórios criados dentro do grupo de necessidade rwx )

Se o seu servidor web não tiver inserido os direitos no seu /home/myuser dir (bastante sensato), ele não entrará lá a menos que você faça outra coisa. Dois solns:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (esse é um hack 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 de cadeias de SSH.)

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

A segunda opção é mais bonita. Digamos que o material na pasta A seja realmente público e você não se importa com quem vê, você pode configurá-lo como

sudo mkdir -m777 /home/shared-stuff

Em seguida, você pode inserir, digamos, folderA com permissões como acima e folderB que www-data não deve 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
    
por artfulrobot 17.01.2013 / 22:39
5

Outra maneira é alterar o nome de usuário diretamente na configuração do apache, isto é, se é a sua máquina local e você salva imagens de algum outro lugar que iria esmagar as permissões feitas na pasta. Também para fazer 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
    
por Shadowbob 19.12.2014 / 20:26