Comment attribuer un utilisateur www-data à un dossier de mon dossier personnel?

30

J'ai un dossier: / home / myuser / folderA

Je veux donner à l'utilisateur de www-data un accès en écriture à ce qui précède, alors que "myuser" continue à avoir un accès normal (car c'est le dossier personnel de myuser quand même).

Quelles commandes dois-je utiliser?

Remarque: Je ne souhaite pas que www-data ait accès à d’autres dossiers dans / home / myuser /.

Merci d'avance.

    
posée nLinked 17.01.2013 - 22:18
la source

2 réponses

36

D'abord, ajoutez-vous au groupe www-data

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

Alors:

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

Devrait faire l'affaire, à moins que les autorisations sur votre /home/myuser n'autorisent pas l'accès des autres utilisateurs.

La première commande modifie la propriété du groupe du dossier par celle du serveur Web. La deuxième commande donne aux membres du groupe www-data les droits de lecture, d’écriture, de répertoire d’entrée et l’indicateur de groupe s garantira que tous les fichiers créés dans ce répertoire prennent www-data comme groupe - donc si vous créez un fichier sous la forme myuser que l'utilisateur www-data aura accès.

Nb. cela dépend aussi des paramètres umask de votre compte d'utilisateur et du serveur Web: vous devez vous assurer que les fichiers créés dans folderA ont le groupe rw access (et les répertoires créés dans le groupe rwx )

Si votre serveur Web n’a pas de droits d’entrée dans votre répertoire /home/myuser (tout à fait raisonnable), il ne va pas y entrer sauf si vous faites autre chose. Deux solns:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (c'est un hack moche et il faudrait le répéter après le redémarrage. Mais un truc puissant peut aussi être utilisé pour rendre les dossiers accessibles dans les jails SSH.)

  2. Déplacez simplement le dossier partagé ailleurs, par ex. /home/shared-stuff/folderA .

La 2ème option est la plus belle. Disons que le contenu de folderA est vraiment public et que vous ne vous souciez pas de savoir qui le voit, vous pouvez le configurer comme

sudo mkdir -m777 /home/shared-stuff

Ensuite, vous pouvez mettre à l'intérieur de cela, disons folderA avec les autorisations ci-dessus, et folderB auquel www-data ne devrait pas avoir accès avec différentes autorisations, par ex.

$ 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
    
réponse donnée artfulrobot 17.01.2013 - 22:39
la source
5

Une autre façon est de changer le nom d'utilisateur directement dans la configuration d'Apache, c'est s'il s'agit de votre ordinateur local et que vous enregistrez des images ailleurs qui écraseraient toutes les autorisations faites sur le dossier. Aussi à faire si vous n’avez qu’un utilisateur et que vous ne vous souciez pas de www-data!

$ sudo vi /etc/apache2/apache2.conf

Recherchez un utilisateur et un groupe et mettez le vôtre dans User <Your User>
Group <Your Group>

$ sudo service apache2 restart
    
réponse donnée Shadowbob 19.12.2014 - 20:26
la source

Lire d'autres questions sur les étiquettes