web-dev-qa-db-fra.com

Comment puis-je me donner accès à / var / www pour créer et éditer des fichiers et des dossiers sans «Sudo»?

J'ai un dossier dans mon serveur Web /var/www. Je dois ajouter des fichiers au dossier, mais le système ne me le permettra pas, sauf si j'utilise Sudo.

Est-il possible de me donner un accès pour modifier le dossier et son contenu, de sorte que je n'ai pas besoin de Sudo pour créer des fichiers et que je puisse utiliser un client FTP pour télécharger directement des fichiers sur le serveur Web?

Le serveur Web est Apache2, le cas échéant.

5
Emil Rowland

Le dossier /var/www/ est touché par le système, et pas seulement par les utilisateurs/administrateurs. Vous ne devez donc pas modifier ces paramètres dans le répertoire de base /var/www, à moins de savoir ce que vous faites. Généralement, avec la façon dont je gère les choses, je crée des répertoires spécifiques au site à l'intérieur de /var/www/, puis je m'autorise à y accéder, ce qui résout le problème de l'écrasement du système. des données de site accidentellement (cela ne dérange généralement pas les sous-dossiers de votre propre création).

Par conséquent, vous souhaiterez peut-être plutôt configurer un dossier à l'intérieur de /var/www/ et modifier les paramètres DocumentRoot de votre site Apache pour diriger le site Web vers ce sous-dossier (par exemple, /var/www/mysite/ ), puis exécutez la commande Commandes pour vous donner un accès en écriture, ainsi qu’un accès en lecture au serveur Web, tout en empêchant les autres utilisateurs d’y accéder.

Tout d’abord, pour créer le dossier, remplacez "mysite" par le nom de votre choix:

Sudo mkdir /var/www/mysite

Deuxièmement, permet de vous donner l’accès, ainsi que l’accès au serveur Web. Apache2 s'exécute en tant que www-data par défaut.

Sudo chown $USER:www-data /var/www/mysite

Troisièmement, nous devons nous assurer que tous les fichiers créés dans le dossier reçoivent automatiquement www-data en tant que propriétaire du groupe (afin qu’il puisse réellement lire les fichiers qu’il doit lire); nous avons défini le bit "SetGID" pour cela. Nous pouvons également vouloir empêcher d'autres utilisateurs (excepté le superutilisateur et le serveur Web) d'accéder au dossier également, au cas où des mots de passe stockés dans les données ne devraient pas être exposés (voir mon avertissement au bas de la réponse):

Sudo chmod g+s /var/www/mysite
Sudo chmod o-rwx /var/www/mysite

Quatrièmement, vous devez modifier votre site Apache. Vous utilisez peut-être la configuration de site "par défaut", si vous débutez. Vous devrez exécuter un ensemble de tâches:

  1. Recherchez le fichier de configuration - généralement dans /etc/Apache2/sites-enabled.
  2. Editez les fichiers de configuration - recherchez la ligne DocumentRoot et modifiez-la pour qu'elle se lise comme suit: DocumentRoot /var/www/mysite (en remplaçant "mysite" par le nom de répertoire que vous avez choisi).
  3. Redémarrez Apache - Sudo service Apache2 restart.

Une fois que tout cela est fait, vous devriez pouvoir mettre des documents directement dans /var/www/mysite, sans Sudo (donc FTP/SFTP fonctionnera), et le serveur Web devrait disposer des autorisations d'accès nécessaires pour tout ce qui se trouve dans le répertoire du site.


(Avertissement de sécurité informatique obligatoire, car je suis un responsable de la sécurité informatique)

AVERTISSEMENT!

Les autorisations de site Web sont très mauvaises et, selon ce que vous utilisez sur le site, il est presque impossible de travailler sans beaucoup de travail et d'efforts supplémentaires. Il existe également des fichiers dans certaines applications Web qui ne doivent PAS être accessibles au monde en dehors de ceux auxquels vous devez donner accès.

Il est également important de noter que les applications Web sont vulnérables à de nombreux exploits potentiels. Il est donc essentiel de maintenir votre site à jour avec les mises à jour logicielles pour Apache, mais également pour les logiciels que vous exécutez sur le site (WordPress, par exemple). .

14
Thomas Ward