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é
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é.
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.
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.