Problèmes d'autorisation FTP et Apache

10

Im ayant des problèmes quant à quel utilisateur doit posséder mon répertoire www - ftp ou apache? Lorsqu'il est défini sur l'utilisateur ftp, l'utilisateur peut ajouter, supprimer et modifier facilement des fichiers, mais les actions du système de fichiers php génèrent des erreurs d'autorisation refusée (bien sûr, car elles nécessitent que l'utilisateur soit apache). Si toutefois, le répertoire www est affiché sur apache, ftpuser ne pourra pas effectuer certaines actions comme la modification et la suppression de fichiers. Quelqu'un a-t-il déjà rencontré un problème similaire? Quelle est la solution? Merci

rayon
la source

Réponses:

12

C'est à cela que servent les groupes.

Vous pouvez ajouter l' ftputilisateur au apachegroupe et vice-versa. Ou, mieux encore, vous pouvez les ajouter à un troisième groupe que vous créez spécifiquement à cet effet.

par exemple

# groupadd mygroup
# useradd -G mygroup ftp
# useradd -G mygroup apache
# chown -R: mygroup / var / www
# chmod -R g + rw / var / www

Ces commandes procèdent comme suit:

  1. Crée un nouveau groupe «mon groupe»
  2. Ajoute un utilisateur ftp à mon groupe
  3. Ajoute un utilisateur apache à mon groupe
  4. Accorde récursivement la propriété du groupe au contenu de / var / www / à mygroup
  5. Accorde récursivement les autorisations de lecture et d'écriture de groupe au contenu de / var / www /

Vous avez juste besoin de vous assurer que les fichiers ajoutés à l'avenir appartiennent au groupe «mon groupe» et disposent des autorisations appropriées pour apache et ftp pour les lire / écrire.

Hobodave
la source
3
La combinaison de " find /var/www -type d -print0 | xargs -0 chmod g+s /var/www" avec un umask de 002 garantira que les nouveaux fichiers et répertoires dans / var / www hériteront du groupe et des autorisations appropriés pour que le groupe ait un accès r / w. De nombreuses distributions Linux utilisent désormais par défaut un umask de 002 (les mêmes que celles par défaut pour créer un nouveau groupe pour chaque nouvel utilisateur)
freiheit
Cette réponse fonctionne parfaitement! Mais j'ai un problème où l'utilisateur peut toujours voir tous les autres répertoires en dehors de var/wwwexiste-t-il une méthode pour restreindre cela?
maxisme
3
Les lignes 2 et 3 ne fonctionneront pas si les utilisateurs existent déjà (sur CentOS 7). Dans ce cas, utilisez usermodpar exempleusermod -G mygroup ftp
Nick
Simple, explicite, compréhensible! Parfait! Merci, @hobodave!
GTodorov
4

La plupart de votre contenu devrait appartenir à un utilisateur autre qu'apache. En supposant que vous utilisez FTP pour mettre à jour votre contenu, vous pouvez définir tous les fichiers appartenant à ftp: apache. Je suggère d'utiliser SCP pour SFTP au lieu de ftp. Les fichiers doivent avoir les autorisations 644 ou 640 et les autorisations de répertoires 755 ou 750.

Pour les fichiers et les répertoires, l'application doit écrire pour ajouter un accès en écriture au groupe.

BillThor
la source
0

J'ai eu un problème similaire avec une page PHP construite qui copierait un dossier sur le serveur avec un nom différent. Je l'ai corrigé en désactivant le mode sans échec php.

karl
la source
2
Le mode sans échec PHP est là pour une raison. La désactiver n'est pas du tout une bonne idée.
user9517