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

31

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

Je veux donner à l'utilisateur www-data un accès en écriture à ce qui précède, tandis que «myuser» continue d'avoir un accès normal (comme c'est le dossier personnel de myuser de toute façon).

Quelles commandes dois-je utiliser?

Remarque: je ne veux www-datapas avoir accès à d'autres dossiers dans /home/myuser/.

Merci d'avance.

nLinked
la source

Réponses:

46

Tout d'abord, ajoutez-vous au groupe www-data

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

Ensuite:

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

Devrait faire l'affaire à moins que les autorisations sur votre /home/myuserne permettent pas aux autres utilisateurs d'accéder.

La première commande change la propriété du groupe du dossier en celle du serveur Web. La deuxième commande donne aux membres du www-datagroupe des droits de lecture, d'écriture, d'entrée dans le répertoire et l' sindicateur de groupe garantira que tous les fichiers créés dans ce répertoire seront considérés www-datacomme le groupe - donc si vous créez un fichier, myuserl' www-datautilisateur y aura accès.

Nb. cela dépend également des umaskparamètres de votre compte utilisateur et du serveur Web: vous devez vous assurer que les fichiers créés dans le dossier A ont un rwaccès de groupe (et les répertoires créés dans le groupe de besoins rwx)

Si votre serveur Web n'a pas de droits d'entrée dans votre /home/myuserrépertoire (tout à fait sensé), il ne va pas y entrer à moins que vous ne fassiez autre chose. Deux solns:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (Il s'agit d'un hack laid et devrait être répété après le redémarrage. Mais une astuce puissante peut également être utilisée pour rendre les dossiers accessibles dans les prisons SSH.)

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

La 2e option est la plus agréable. Disons que le contenu du dossier A est vraiment public et peu importe qui le voit, vous pouvez le configurer comme

sudo mkdir -m777 /home/shared-stuff

Ensuite, vous pouvez mettre à l'intérieur, par exemple, le dossier A avec les autorisations ci-dessus et le dossier B auquel www-data ne devrait pas avoir accès avec des autorisations différentes, par exemple

$ 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
la source
ce qui est sen g+rwxs?
T.Todua
Bit "Groupe collant". Son effet expliqué dans le para qui commence par "Le premier ..." :-)
artfulrobot
6

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

$ sudo vi /etc/apache2/apache2.conf

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

$ sudo service apache2 restart
Shadowbob
la source
Cette solution ne semble pas si sécurisée, quelqu'un sait quel genre de menaces de sécurité ce paramètre entraînera?
Fleuv
Je suis sûr que ce n'est pas sécurisé, c'est pourquoi j'ai donné la précision de Local Machine uniquement.
Shadowbob
Cette solution fournit tous les accès à apache dans votre dossier ...
Loenix