4 votes

Permissions Apache pour permettre à l'utilisateur et au serveur web de modifier /var/www

Pour des raisons de sécurité, j'aimerais désactiver l'accès root via ssh.

J'ai créé un nouvel utilisateur (user1) avec des droits d'administration.

adduser user1
usermod -aG sudo user1

et attribué le répertoire /www à cet utilisateur.

sudo chown -R $USER:$USER /var/www/
sudo chmod -R 755 /var/www

(La structure de mes dossiers est www/site1.com, www/site2.com, etc.)

Mes sites ont besoin d'écrire certains fichiers (comme les sitemaps, les flux rss, etc.). J'ai donc défini les autorisations du répertoire www comme suit :

sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www

Maintenant, cependant, l'utilisateur user1 fonctionne parfaitement via Shell avec la commande sudo, mais ne peut plus ajouter/modifier/supprimer des fichiers et des dossiers dans le répertoire /www et ses sous-répertoires via sftp.

J'ai lu de nombreux guides, comment configurer les permissions d'apache pour augmenter la sécurité, pour partager l'administration avec d'autres utilisateurs, etc. etc. etc.

Mais je ne comprenais toujours pas comment résoudre mon problème.

Actuellement, pour pouvoir manipuler des fichiers sur mon serveur via sftp, je dois utiliser l'utilisateur root, en toute tranquillité pour la sécurité.

Ai-je raté quelque chose à propos de la définition des permissions des utilisateurs ou des dossiers ?

7voto

thomasrutter Points 33791

Il est possible de définir différentes groupe y utilisateur pour les fichiers et les répertoires, ce qui permettra à Apache et à l'utilisateur 1 de modifier ce qui se trouve dans les fichiers et les répertoires. /var/www sans avoir besoin de root/sudo et sans rendre quoi que ce soit inscriptible dans le monde.

Donc, mettez la permission "utilisateur" dans /var/www a user1 . Définissez l'autorisation "groupe" sur www-data (mais UNIQUEMENT pour les fichiers ou répertoires spécifiques sur lesquels le serveur web doit écrire).

sudo chown -R user1:user1 /var/www
sudo chgrp www-data /var/www/specific-file

Vous devez éviter de laisser le serveur web écrire sur l'ensemble du disque dur. /var/www et son contenu, au lieu de donner au groupe ci-dessus la permission uniquement pour les fichiers spécifiques où cela est nécessaire. C'est un bon principe de sécurité de limiter l'accès en écriture du serveur web aux seuls fichiers pour lesquels c'est strictement nécessaire - et c'est une bonne idée d'essayer de s'assurer que ces fichiers ne sont pas exécutés directement (ne sont pas des .php ou d'autres scripts exécutables, par exemple).

0voto

s1mmel Points 1794

Si vous changez le répertoire avec un bit setgid, ces problèmes devraient être de l'histoire ancienne.

Essayez ceci

chmod 2775 /var/www

Avec le bit setgid activé, tous les fichiers de ce répertoire appartiennent au groupe www-data (ce devrait être l'utilisateur et le groupe standard du dossier, www-data:www-data) et non à un utilisateur.

Ainsi, tant que user1 fait partie du groupe www-data, l'utilisateur devrait pouvoir modifier, supprimer et ouvrir des fichiers.

Essayez-le.

Commencez par inscrire l'utilisateur dans le groupe approprié. Méthode la plus simple

sudo nano /etc/group

Trouvez www-data et entrez user1 après le " :" à la fin.

LOGOUT/LOGIN à nouveau

Maintenant, créez le dossier, par exemple

sudo mkdir /var/www2

et ensuite mettre le bit setgid dessus

sudo chmod 2775 /var/www2 && sudo chown www-data:www-data /var/www2

maintenant entrer dans le dossier, créer un autre dossier ou fichier. Cela devrait fonctionner et ressembler à ceci (assurez-vous de voir le "s" lorsque vous utilisez ls)

Voir ici, par exemple.

simmel@tron:/var/www2
$ ls -la
total 0
drwxrwsr-x 1 www-data www-data   8 Feb 21 10:28 .
drwxr-xr-x 1 root     root     126 Feb 21 10:26 ..
drwxrwsr-x 1 simmel   www-data   0 Feb 21 10:28 blah

Comme vous pouvez le voir, pour la partie groupe, un RWS est indiqué au lieu d'un RWX.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X