web-dev-qa-db-fra.com

utilisation de git pour cloner le site et obtention de l'erreur "mkdir () permission denied"

Pour apprendre et pour des raisons pratiques, je crée un dépôt pour un dossier Joomla complet sur un serveur linux distant, puis je le pousse vers github. Ensuite, j'ai essayé deux méthodes pour transférer les fichiers sur mon Mac local.

Tout d'abord, je télécharge le fichier .zip du dépôt de github et le décompresse au répertoire local, puis je modifie le fichier configuration.php pour me connecter à la base de données distante. Le site n'a pas de problème à s'ouvrir.

Deuxièmement, j’utilise "github desktop" pour cloner le référentiel en répertoire local, puis édite le fichier configuration.php. Mais lorsque j'ouvre le site Web, le message d'erreur "Impossible de charger le modèle 'rt_photon': mkdir (): Autorisation refusée" s'affiche. Je sais que cela est lié au propriétaire du fichier/à la permission, mais je ne peux pas identifier ce que c'est exactement. Je fais juste chown -R root:root et chmod -R 0777 et le site Web peut être ouvert maintenant.

J'utilise le modèle "rt_photon" de Rockettheme, mais je pense que ce n'est probablement pas pertinent. Quelqu'un peut-il m'expliquer comment le propriétaire de fichier/l'autorisation affecte le site joomla et pourquoi le référentiel cloné et le dossier décompressé ont un paramètre de propriétaire de fichier/d'autorisation différent (supposons que ce soit la raison de l'erreur)?

1
shenkwen

Pour définir les fichiers et les répertoires sur chmod 777 ou même chmod 770 n'est pas une bonne idée sur un système de production.

Tous les systèmes de serveur Web tels qu'Apache2, nginx peuvent être configurés pour fonctionner avec un utilisateur et un groupe spéciaux. Il est donc important de ne pas obtenir de droits d'utilisateur sur le système. Sur la plupart des systèmes similaires à Debian, l’utilisateur est défini sur www-data avec le groupe www-data, standard est l’ID utilisateur = 33. Sur un système Arch Linux, l’utilisateur standard: groupe est défini sur http:http, mais vous pouvez néanmoins modifier ces paramètres manuellement.

Pour que plusieurs utilisateurs puissent écrire dans le même répertoire, il sera nécessaire d'accorder une autorisation d'écriture à un groupe qu'ils partagent en commun. Vous devez donc obtenir la même autorisation de groupe pour www-data et votre compte utilisateur.

Lorsque vous vous connectez, vous n'obtiendrez pas l'autorisation d'écrire dans le dossier de base des fichiers Joomla. C'est une bonne nouvelle, personne ne devrait pouvoir compromettre votre système Joomla. Il est donc bon de déconnecter le monde en écriture.

Exemple de configuration avec /var/www comme répertoire de base sur un système de production: Pour obtenir une autorisation liée à un groupe:

Tout d'abord, vous devez ajouter le nom d'utilisateur, par exemple userxyz qui devrait avoir accès au groupe www-data:

  • Sudo usermod -a -G www-data userxyz

  • Ensemble umask 002 general pour tous les utilisateurs dans/etc/profile ou dans un répertoire personnel spécifique à ~/.bashrc lors de l’utilisation de bash ou d’une configuration similaire de Shell. Vous pouvez tester les paramètres après une nouvelle connexion avec umask

  • Sudo chown -R www-data:www-data /var/www définir l'utilisateur et le groupe sur www-data

  • Sudo find /var/www -type d -print0 | xargs -0 chmod 2775 définit tous les répertoires, que tout le monde a l'autorisation de lecture et d'exécution, tandis que le propriétaire du fichier et les membres du groupe du fichier ont également l'autorisation d'écriture. Et tous les fichiers ou sous-répertoires créés dans ce répertoire hériteront de l'ID de groupe du répertoire parent (mode setgid).

  • Sudo find /var/www -type f -print0 | xargs -0 chmod 664 définit tous les fichiers avec une permission de lecture, un seul groupe (www-data) et le propriétaire pour écrire/supprimer les autorisations.

2
Tom Kuschel