web-dev-qa-db-fra.com

Pratiques recommandées concernant les autorisations et la propriété des fichiers / répertoires Joomla sur les systèmes linux?

Dans le passé, j’ai souvent eu des problèmes d’autorisations et de propriété des fichiers/répertoires Joomla sur les systèmes Linux.

Problèmes inclus

  • Impossible de transférer des fichiers sur le serveur à l'aide de programmes tels que WinSCP.
  • Ne pas être en mesure d'installer des extensions, plugins, etc. Joomla.
  • Fichiers et dossiers non sécurisés en raison d'autorisations dangereuses et de paramètres de propriété.

Quelles sont les meilleures pratiques recommandées pour la définition des autorisations et des droits de propriété dans Joomla sur des systèmes Linux?

25
TryHarder

Il existe quelques causes possibles de problèmes d’autorisation de fichiers et de dossiers sur un hébergement Linux.

1. Autorisations de fichiers et de dossiers

Les autorisations de dossier de vérification sont définies sur 0755 et les autorisations de fichier sur 0644. Notez que les autorisations de fichier et de dossier peuvent être réinitialisées sur ces paramètres sécurisés standard pour l'ensemble du site à l'aide de la version gratuite ou payante d'Akeeba Admin Tools.

2. PHP Paramètres

Vérifiez le paramètre upload_max_filesize dans l'onglet PHP Information dans les informations système est suffisant. Vous pouvez souvent remplacer le paramètre par défaut dans un environnement d'hébergement partagé via les paramètres PHP dans cPanel ou une coutume php.ini fichier.

3. Chemins incorrects dans configuration.php

Vous pouvez avoir des chemins incorrects spécifiés pour les dossiers tmp et logs. Ceux-ci sont spécifiés dans la configuration du système ou peuvent être mis à jour directement dans le fichier configuration.php si vous souhaitez éditer directement les fichiers système. Si vous n'êtes pas sûr du chemin, créez et chargez un fichier whereami.php (ou similaire) au dossier racine de votre site Web avec le contenu suivant:

<?php
  print 'Current folder is ' . dirname(__FILE__);
?>

Accédez à [mywebsite].com/whereami.php pour voir le chemin du dossier racine.

Une fois que vous avez le bon chemin, n'oubliez pas de supprimer le whereami.php fichier.

4. Non approprié PHP Gestionnaire de fichiers

Votre hébergement Web peut être configuré avec le gestionnaire de fichiers par défaut PHP, mais devrait idéalement utiliser suPHP ou FastCGI ou similaire pour que Joomla puisse télécharger et exécuter des fichiers en utilisant des permissions de fichier sécurisées.

Vous pouvez voir quel PHP gestionnaire est utilisé à System -> System Information -> WebServer to PHP Interface.

Il y a un bon article sur les mérites relatifs de PHP gestionnaires de fichiers à: http://boomshadow.net/tech/php-handlers

Dans un environnement d'hébergement partagé, vous n'avez généralement pas accès au gestionnaire de fichiers PHP est activé, mais votre société d'hébergement Web peut peut-être le modifier pour vous.

Parfois, comme solution de contournement, les autorisations de fichiers et de dossiers sont modifiées en 0777, mais cela rend votre site Web vulnérable et les autorisations de fichiers 0777 doivent généralement être évitées.

Si votre société d'hébergement Web ne peut pas activer suPHP ou FastCGI, la seule autre option consiste à rechercher une nouvelle société d'hébergement Web.

5. Espace disque

Vérifiez que vous n'avez pas dépassé votre quota d'espace disque.

LISTE DE VÉRIFICATION DU DÉPANNAGE

Quelles sont les meilleures pratiques recommandées pour la définition des autorisations et des droits de propriété dans Joomla sur des systèmes Linux?

Voir 1 et 4.

Impossible de transférer des fichiers sur le serveur à l'aide de programmes tels que WinSCP.

Voir 1, 2, éventuellement 4 et 5.

Ne pas être en mesure d'installer des extensions, plugins, etc. Joomla.

Voir 1, 2, 3, 4 et 5.

Fichiers et dossiers non sécurisés en raison d'autorisations dangereuses et de paramètres de propriété.

Voir 1 et 4.

22
Neil Robertson

Veuillez vérifier les niveaux d'autorisation, . Les fichiers et les dossiers doivent être respectivement de 644 et 755.

Souvent, les niveaux d'autorisation sont corrects, même lorsque certains problèmes sont rencontrés. Cela signifie que vous devrez vérifier la propriété et le groupe des fichiers et dossiers spécifiques . Normalement, le groupe et la propriété peuvent être changés en www-data for Apache (utilisé dans les serveurs Web basés sur Ubuntu).

N'hésitez pas à consulter ce document Joomla intéressant basé sur vérification des autorisations de fichier.

12
Shyam

Une solution facile pour moi est de laisser souvent PHP s'exécuter en mode (rapide) CGI) et de définir la propriété du répertoire Joomla sur l'utilisateur FTP. Vous pourrez ainsi télécharger et écraser fichiers via FTP et Joomla pourra également écrire des fichiers.

Une façon de le faire sur un environnement d'hébergement partagé (si cela est autorisé) est d'ajouter quelque chose comme ceci à votre fichier .htaccess:

AddHandler php53-cgi .php

Voir aussi un aperçu sur le différents modes .

8
fruppel

Les autorisations doivent être 644 et 755 comme expliqué par Shyam.

Les problèmes que vous rencontrez sont probablement liés à la manière dont votre serveur est configuré. La plupart du temps, cela se produit sur des hôtes partagés où Apache s'exécute sous un utilisateur différent de votre compte FTP. Comme vous téléchargez habituellement Joomla via FTP, Apache n'est pas le propriétaire du fichier et ne dispose donc pas des autorisations nécessaires pour le modifier.

Il existe un mode FTP dans Joomla qui vous permet de contourner ce problème. Vous pouvez l'activer dans la configuration globale de Joomla. Il effectuera alors tous les accès aux fichiers en utilisant l’utilisateur FTP au lieu de l’utilisateur Apache habituel.

Une meilleure solution consiste toutefois à demander à votre hôte de résoudre le problème. Ils peuvent configurer PHP (Apache) pour s'exécuter sous un utilisateur spécial, qui dans ce cas devrait être votre utilisateur FTP. Tout fonctionnera alors correctement.

7
Bakual

Les autorisations doivent être 644 et 755 comme expliqué par Shyam.

Dans Joomla, vous pouvez éviter tous les problèmes que vous avez mentionnés, avec les méthodes suivantes.

Impossibilité de transférer des fichiers sur le serveur à l'aide de programmes tels que WinSCP.

  • Cela peut arriver avec l’autorisation de (444) comme Joomla configuration.php ont cette permission, sa ne permet pas par défaut (pour la sécurité).
  • Une autre situation pour cette même erreur est lorsque vous transférez un site ou des dossiers d'un serveur à un autre.

Impossible d'installer les extensions, plugins, etc. Joomla

  • Cela se produira à cause de temp/log dossier mauvaise permission. (Il en fallait 755)

  • Ou une autre raison est temp/log chemin est incorrect dans configuration.php

Fichiers et dossiers non sécurisés en raison d'autorisations et de paramètres de propriété dangereux.

  • Joomla recommande toujours de ne pas utiliser 777 pour les fichiers et les dossiers si vous ne connaissez pas this .

J'espère que ça aide ..

7
Jobin Jose

Oui, les autorisations doivent être 644 et 755, comme expliqué par Shyam , mais les autres afficheurs oublient de préciser que le fichier appartient à votre serveur Web et que le groupe auquel vous appartenez appartient.

Par exemple, dans FileZilla, vous verrez des autorisations ressemblant à ceci:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM      www-data myGroup 

Les autorisations drwxr-xr-x sont 755 (ignorez le premier dr, c’est donc wxr-xr-x). Les autorisations de lecture valent 4, les autorisations d'écriture valent 2 et les autorisations d'exécution, 1 .. Le groupe a des autorisations de lecture et d'exécution, mais pas d'écriture, il en a donc 5 et tout le monde en a aussi 5 .. rendant les autorisations 755.

754 seraient des propriétaires ayant lu, écrit, exécuté. Groupe ayant lu et exécuté, et tout le monde n'ayant que les droits de lecture.

Dans l'exemple ci-dessus, vous pouvez voir que le propriétaire du fichier est www-data (qui est le groupe de serveurs Web par défaut pour de nombreux serveurs Apache) et le groupe est le groupe myGroup, qui est le groupe (administrateurs) auquel j'appartiens.

Le premier nombre correspond aux autorisations du propriétaire, le second aux autorisations des groupes et le troisième aux autorisations de tous. Évidemment, vous devez faire attention à donner au serveur Web les autorisations dont il a besoin ... et à vous assurer que les fichiers devant être verrouillés ne peuvent pas être écrits ou exécutés par n'importe qui (le troisième numéro). Voici ce que signifient les chiffres:

En supposant que le serveur Web possède les fichiers, votre administrateur est dans le groupe et, bien sûr, tout le monde est le troisième numéro.

644: Les fichiers avec des autorisations définies sur 644 sont lisibles par tout le monde et seuls le propriétaire du fichier/dossier peut y écrire.

755: Les fichiers avec des autorisations définies sur 755 sont lisibles et exécutables par tout le monde, mais uniquement par le propriétaire du fichier/dossier.

777: Les fichiers avec des autorisations définies sur 777 sont lisibles, inscriptibles et exécutables par tout le monde. N’utilisez pas cet ensemble d’autorisations, pour des raisons de sécurité, sur votre serveur Web, sauf si cela est absolument nécessaire et de manière temporaire. C'est un désastre imminent, surtout si un répertoire a ces autorisations. Cela signifie que tout le monde peut télécharger des fichiers et les exécuter.

Voici les commandes Linux pour configurer le logiciel Joomla! autorisations recommandées à partir de la ligne de commande. Autorisations de fichier Joomla recommandées

Set ownership:   Sudo chown -R www-data:myName /path/to/your/domain.com
Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 755 {} \;
Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 644 {} \;

NOTE - Beaucoup de gens vont vous montrer ces commandes sans le chemin, mais je préfère TOUJOURS utiliser le chemin complet, car si vous oubliez de changer les répertoires de la racine Joomla! répertoire d’installation et exécutez-les sans le chemin, vous venez de modifier les autorisations pour chaque fichier et répertoire de ce répertoire principal et de créer un désordre énorme.

Après avoir exécuté ces commandes, vous devrez corriger les autorisations pour tous les répertoires nécessitant plus d'autorisations ... par exemple ... les utilisateurs téléchargeant des images, etc.

SI VOUS UTILISEZ UNIQUEMENT LE JOOMLA! Si vous n’avez pas d’accès administrateur ou FTP au serveur, UTILISEZ LES PROPRIÉTÉS ET LES AUTORISATIONS CI-DESSUS.

ARRÊTEZ ICI SI VOUS ÊTES UN NOVICE. Le document ci-dessous est uniquement destiné aux personnes qui comprennent vraiment ce que les autorisations et la propriété font.

Cependant, je trouve très inconfortable de posséder les droits de propriété et les autorisations parce que j'aime utiliser FileZilla et une ligne de commande de session Terminal la plupart du temps, et que je télécharge beaucoup de fichiers manuellement. Mais je ne peux écraser aucun fichier parce que je ne les possède pas et je n'ai pas l'autorisation d'écrire. Je pourrais avoir FileZilla se connecter sous le compte du serveur Web, MAIS ... je veux que FileZilla se connecte sous mon compte, afin que je puisse également parcourir d'autres répertoires, pas seulement les fichiers auxquels le serveur Web a accès ... SO ... Je change la propriété et les permissions en ceci:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM  drwxr-xr-x    myName www-data

Je me fabrique moi-même et mets le serveur Web dans le groupe ... et je modifie les autorisations pour les répertoires en 775, et pour les fichiers en 664. Me simplifie beaucoup la vie ... mais je ne le recommande pas. toutes les personnes.

Si vous le faites à ma façon, voici les commandes:

 Set ownership:   Sudo chown -R myName:www-data /path/to/your/domain.com
 Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 775 {} \;
 Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 664 {} \;  
5
bgies

Les autres réponses fournissent une bonne explication de ce qui doit être fait. Je souhaite seulement ajouter un script pour corriger les autorisations si vous avez déjà téléchargé un composant et ne pouvez pas accéder aux fichiers avec ftp.

Dans ce cas, je téléchargerais ce fichier en tant que fix.php sur le serveur FTP et ouvrez-le dans le navigateur: http://example.com/fix.php

<?php
file_fix_directory(dirname(__FILE__));

function file_fix_directory($dir, $nomask = array('.', '..')) {
  if (is_dir($dir)) {
     // Try to make each directory world writable.
     if (@chmod($dir, 0777)) {
       echo "<p>Made writable: " . $dir . "</p>";
     }
  }
  if (is_dir($dir) && $handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
      if (!in_array($file, $nomask) && $file[0] != '.') {
        if (is_dir("$dir/$file")) {
          // Recurse into subdirectories
          file_fix_directory("$dir/$file", $nomask);
        }
        else {
          $filename = "$dir/$file";
            // Try to make each file world writable.
            if (@chmod($filename, 0666)) {
              echo "<p>Made writable: " . $filename . "</p>";
            }
        }
      }
    }

    closedir($handle);
  }

}

Ce script définit toutes les autorisations du fichier sur 666 et tous les répertoires sur 777. Le monde accessible en écriture est non le meilleur ensemble d'autorisations pour un hôte partagé, mais vous pourrez à nouveau accéder à vos fichiers et les définir. aux valeurs correctes avec FTP.

4
Harald Leithner

En retard à la fête. Je suis venu ici à la recherche d’un guide complet sur les dossiers qui doivent être accessibles en écriture pour joomla.

Désolé les gens d'être le précurseur de mauvaises nouvelles.

Le conseil d'utiliser les permissions 755 pour tous les répertoires et 644 pour tous les dossiers est irresponsable à tout le moins.

Rendre tous les dossiers et fichiers accessibles en écriture au propriétaire est correct tant que le propriétaire n’est pas le serveur Web (Apache et al).

Je sais que c'est une pratique recommandée commune mais je peux vous assurer que ce n'est pas une bonne pratique. Le dernier logiciel que vous souhaitez autoriser à écrire dans des dossiers est le serveur Web lui-même. C'est le serveur Web utilisé par les pirates pour tirer parti de cet exploit qui n'a pas encore été corrigé (ou même trouvé).

Pensez-vous que .htaccess sauvera votre Kevin? Oubliez cela parce que vous avez autorisé le serveur Web à écrire, nos chers amis pirates informatiques peuvent créer leurs propres fichiers .htaccess en leur donnant les autorisations qu’ils souhaitent! comme Oh je ne sais pas Umm créer des fichiers .jpg exécutables par le serveur. Et vous pensiez que vous protéger contre une exécution en .php allait couvrir votre A.

Mais assurez-vous que seuls les dossiers nécessitant un accès en écriture l’ont réellement. 755 et 644 pour les dossiers suivants.

public_html/images
public_html/cache
public_html/tmp

Et assurez-vous de désactiver les fichiers .htaccess avec AllowOveride none pour tous les dossiers accessibles en écriture (comme ceux ci-dessus).

Pour ceux d'entre vous sur l'hébergement partagé, bonne chance car il s'agit d'un élément de configuration que vous ne pouvez pas contrôler.

Ne pensez pas que rendre le fichier .htaccess en lecture seule aidera. Si nos amis hackers peuvent créer un nouveau dossier (ils peuvent le faire), ils peuvent créer leur propre fichier .htaccess.

Pour ceux d'entre vous qui exécutent un hébergement partagé pour tout ce qui est sacré, renseignez-vous sur la sécurité.

Si vous ne comprenez pas la sécurité, veuillez vous retirer du secteur de l'hébergement, ce qui rend la tâche difficile pour le reste d'entre nous.

Revenons maintenant à ma recherche du guide définitif sur les dossiers nécessitant un accès en écriture ...

1
DeveloperChris