Lien symbolique et filezilla sur sftp

15

Je suis assez nouveau sur Debian et j'essaie de configurer un serveur.

J'ai créé un utilisateur qui ne peut accéder qu'à son dossier /home/username(et à son sous-répertoire).

Maintenant, je veux utiliser cet utilisateur pour le serveur Web que j'ai configuré, et je lui ai donné accès /var/wwwmais je ne peux pas voir à /var/wwwtravers sftp et j'ai fait un lien symbolique comme celui-ci:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

Maintenant, avec filezilla, je peux voir le dossier www comme ceci:

Filezilla

Mais quand j'essaye de l'ouvrir, j'obtiens ceci:

Ouvert

Qu'est-ce que je fais mal?

Doc
la source

Réponses:

22

Il est probable que le SFTP soit chrooté, de sorte que le répertoire / var / www ne soit pas disponible pour l'utilisateur dans la prison chroot.

Regardez /etc/ssh/sshd_configet examinez les directives sftp. Voyez-vous quelque chose comme:

Match group sftp
  ChrootDirectory /home/%u
  AllowTcpForwarding no
  ForceCommand internal-sftp

La page de manuel sshd_config est ici .

Fondamentalement, une fois que l'utilisateur est dans /home/usernameSFTP, ce répertoire devient /et les références externes /home/usernamene sont pas disponibles. En fait, un lien symbolique ln -s /var/www /home/username/wwwressemblera à ce que vous essayez d'atteindre /home/username/var/www(c'est-à-dire que tout lien dont les références doivent également être un sous-répertoire dans le contexte du chroot) /home/usernameest maintenant .//var/www/home/username

En tant que solution, vous pouvez désactiver le chroot (mais cela aura d'autres implications de sécurité, principalement avec les utilisateurs SFTP ayant le contrôle total sur votre système de fichiers). Vous pouvez faire un montage en boucle de / var / www dans / home / username / www (quelque chose comme mount --bind /var/www /home/username/www(consultez votre documentation pour mount) qui devrait fonctionner comme vous vous attendez sous chroot). Vous pouvez également fouiller avec le fichier sshd_config pour exclure un utilisateur particulier de chroot (bien que, encore une fois, avec des implications de sécurité).

J'essaierais d'abord le montage de liaison.

cjc
la source
2
+1 pour la monture - astuce de liaison!
Helge Klein
1
Si vous voulez qu'il soit persistant à travers les redémarrages, modifiez votre /etc/fstabavec une ligne comme/home/username/www /var/www none bind 0 0
pzkpfw
0

J'ai résolu de dissocier le lien symbolique que j'ai créé et avec

root@server:/home/username# mkdir www
root@server:/home/username# mount --bind /home/username/www /var/www

(même si j'ai perdu tout était dans / var / www, mais je m'en fiche)

Merci a tous!

Doc
la source
Tu n'as rien perdu. Démontez et copiez simplement vos fichiers avant de les remonter.
Zoredache
uuuhhh merci! je n'avais qu'un fichier avec un lien, rien d'important, mais je n'ai pas pu le récupérer: D
Doc