web-dev-qa-db-fra.com

Utilisateur chrooté SFTP avec autorisations d'écriture à / var / www

Je suis confus à propos de cette configuration que j'essaie de déployer. J'espère que quelqu'un de vous peut me prêter une main: beaucoup apprécié.

informations de fond

Le serveur est Debian 6.0, EXT3, avec Apache2/SSL et NGinx à l'avant en tant que proxy inverse. Je dois fournir un accès SFTP au répertoire racine Apache (/ var/www), en veillant à ce que l'utilisateur SFTP est chrooté sur ce chemin avec des autorisations RWX.

Tout cela sans modifier aucune autorisation par défaut dans/var/www.

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

A l'intérieur/var/www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

ce que j'ai essayé

  1. créé un nouveau groupe Securittp
  2. créé un nouvel utilisateur SFTP, joint à SecuritTP et Les groupes www-Data également avec nologin Coquille. HomeDir est /
  3. édité sshd_config avec
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

Je peux vous connecter avec l'utilisateur SFTP, les fichiers de liste, mais aucune action écriture n'est autorisée. L'utilisateur SFTP est dans le groupe de données WWW mais les autorisations dans/var/www sont lues/lues + x pour le groupe de groupe afin de ne pas fonctionner.

J'ai également essayé avec ACL, mais j'appliquais des autorisations ACL RWX pour l'utilisateur SFTP à/var/www (DIRS et fichiers de manière récursive), il modifiera les autorisations UNIX ainsi que ce que je ne veux pas.

Que puis-je faire ici?

Je pensais que je pouvais permettre à l'utilisateur www-Data de se connecter en tant que SFTP, de sorte qu'il serait en mesure de modifier les fichiers/DIRS que www-Data possède In/Var/www. Mais pour une raison quelconque, je pense que ce serait un mouvement stupide dans le sens de la sécurité.

10
bashintosh

Ce que j'ai fait, c'est chroot mes utilisateurs à leurs annuaires à domicile, puis utilisé mount --bind Pour créer un lien avec ses répertoires de maison.

J'ai ensuite utilisé setfacl pour vous assurer que www-data maintans Ecrire des autorisations sur de nouveaux fichiers dans le répertoire. Cet effet se recueille dans /var/www, ce que vous voulez faire.

En définissant g+s Sur le répertoire, tous les nouveaux fichiers et répertoires créés dans ce hériteront la propriété du groupe de son parent.

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

Cela devrait faire l'affaire.

Faites vos supports persistants

De toute évidence, vous voulez que vos montures soient toujours là lorsque vous redémarrez le serveur. C'est aussi simple que d'ajouter les montures à votre /etc/fstab. Tous les fournisseurs vous permettent pas de toucher ce fichier, mais le plus.

Il suffit d'ajouter des lignes comme ceci:

/var/www        /home/someuser/www        none        bind        0        0

Vous voudrez peut-être redémarrer pour vous assurer que cela fonctionne.

15
Steen Schütt