Link simbólico e filezilla sobre sftp

15

Eu sou muito novo no debian e estou tentando configurar um servidor.

Eu criei um usuário que só pode acessar sua pasta /home/username(e seu subdiretório).

Agora eu quero usar esse usuário para o servidor da Web que eu configurei, e eu lhe dei acesso, /var/wwwmas não consigo ver /var/wwwatravés do sftp e fiz um link simbólico como este:

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

Agora, com o filezilla, posso ver a pasta www assim:

Filezilla

Mas quando tento abri-lo, recebo o seguinte:

Aberto

O que estou fazendo de errado?

Doc
fonte

Respostas:

22

É provável que o SFTP esteja sendo chrootado, para que o diretório / var / www não esteja disponível para o usuário na prisão chroot.

Examine /etc/ssh/sshd_confige examine as diretivas sftp. Você vê algo como:

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

A página do manual sshd_config está aqui .

Basicamente, quando o usuário /home/usernameentra no SFTP, esse diretório se torna /e as referências externas a ele /home/usernamenão estão disponíveis. De fato, um link simbólico parecido com ln -s /var/www /home/username/wwwo que você está tentando acessar /home/username/var/www(ou seja, /home/usernameagora é /um link que as referências /var/wwwtambém devem ser um subdiretório /home/usernameno contexto do chroot).

Como solução, você pode desativar o chroot (mas isso terá outras implicações de segurança, principalmente com os usuários do SFTP controlando totalmente o sistema de arquivos). Você pode fazer uma montagem em loop de / var / www em / home / nome de usuário / www (algo como mount --bind /var/www /home/username/www(verifique sua documentação mount) que deve funcionar como seria de esperar no chroot). Você também pode mexer com o arquivo sshd_config para excluir esse usuário específico do chroot (embora, novamente, com implicações de segurança).

Eu tentaria o mount mount primeiro.

cjc
fonte
2
+1 para o truque mount --bind!
Helge Klein
1
Se você quiser que ele seja persistente durante as reinicializações, edite-o /etc/fstabcom uma linha como/home/username/www /var/www none bind 0 0
pzkpfw
0

Resolvi desvincular o link simbólico que fiz e com

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

(mesmo que eu tenha perdido tudo estava em / var / www, mas não me importo)

obrigado a todos!

Doc
fonte
Você não perdeu nada. Simplesmente desmonte e copie seus arquivos antes de remontar.
Zoredache
uuuhhh obrigado! eu não tinha nada além de um arquivo com um link, nada de importante, mas não consegui recuperá-lo: D
Doc