utilisateur sftp chrooté avec des autorisations d'écriture dans / var / www

10

Je suis confus à propos de cette configuration que j'essaie de déployer. J'espère que quelqu'un parmi vous pourra me donner un coup de main: très apprécié.

Informations de fond

Le serveur est Debian 6.0, ext3, avec Apache2 / SSL et Nginx à l'avant comme proxy inverse. Je dois fournir un accès sftp au répertoire racine Apache (/ var / www), en m'assurant 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

À 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. a créé un nouveau groupe secureftp
  2. a créé un nouvel utilisateur sftp, joint aux groupes secureftp et www-data également avec nologin shell. Homedir est /
  3. sshd_config modifié avec
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

Je peux me connecter avec l'utilisateur sftp, lister les fichiers mais aucune action d'écriture n'est autorisée. L'utilisateur Sftp est dans le groupe www-data mais les autorisations dans / var / www sont lues / lues + x pour le bit de groupe donc ... Cela ne fonctionne pas.

J'ai également essayé avec ACL, mais comme j'applique des autorisations ACL RWX pour l'utilisateur sftp à / var / www (répertoires et fichiers de manière récursive), cela modifiera également les autorisations unix, 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, afin qu'il puisse modifier les fichiers / répertoires que www-data possède dans / var / www. Mais pour une raison quelconque, je pense que ce serait une décision stupide en matière de sécurité.

bashintosh
la source
Je ne pense pas que ce soit possible sans changer l'autorisation.
Unnikrishnan

Réponses:

15

Ce que j'ai fait, c'est chrooter mes utilisateurs dans leurs répertoires personnels, puis mount --bindcréer un lien vers celui-ci dans leurs répertoires personnels.

J'ai ensuite utilisé setfaclpour m'assurer que les www-dataautorisations d'écriture de maintans sur les nouveaux fichiers dans le répertoire. Cet effet va se reproduire /var/www, c'est ce que vous voulez faire.

En définissant g+sle répertoire, tous les nouveaux fichiers et répertoires créés dans celui-ci hériteront de 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.

Rendez vos montures persistantes

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 supports à votre /etc/fstab. Tous les fournisseurs ne vous permettent pas de toucher ce fichier, mais la plupart le font.

Ajoutez simplement des lignes comme celle-ci:

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

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

Steen Schütt
la source
1
Le fait est que lorsque vous chmod g + s / home / someuser / www et chown someuser: www-data / home / someuser / www, il transférera également les mêmes autorisations et propriétaire: group vers / var / www. Cela est dû au montage --bind. Merci beaucoup!
bashintosh
2
Où puis-je vous payer une bière? On dirait que tout va bien, et Apache ne semble pas se plaindre de sftp-user en tant que propriétaire de / var / www. J'étais très proche de votre solution lorsque j'ai choisi l'ACL, mais j'ai laissé de côté la partie suid: vous êtes magique, merci!
bashintosh