Tautan simbolik dan filezilla di atas sftp

15

Saya cukup baru untuk debian, dan saya mencoba mengatur server.

Saya telah membuat pengguna yang hanya dapat mengakses foldernya /home/username(dan subdirektori).

Sekarang saya ingin menggunakan pengguna itu untuk server yang saya atur, dan saya telah memberinya akses /var/wwwtetapi saya tidak dapat melihat /var/wwwmelalui sftp dan saya melakukan tautan simbolis seperti ini:

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

Sekarang, dengan filezilla, saya dapat melihat folder www seperti ini:

Filezilla

Tetapi ketika saya mencoba membukanya, saya mendapatkan ini:

Buka

Apa yang saya lakukan salah?

Dokter
sumber

Jawaban:

22

Kemungkinan SFTP sedang chroot, sehingga direktori / var / www tidak tersedia untuk pengguna di chroot jail.

Cari /etc/ssh/sshd_configdan periksa arahan sftp. Apakah Anda melihat sesuatu seperti:

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

Halaman manual sshd_config ada di sini .

Pada dasarnya, begitu pengguna berada di /home/usernameSFTP, direktori itu menjadi /dan referensi di luar /home/usernametidak tersedia. Bahkan, symlink like ln -s /var/www /home/username/wwwakan terlihat seperti sedang Anda coba jangkau /home/username/var/www(yaitu, /home/usernamesekarang /tautan apa pun yang referensi /var/wwwjuga harus berupa subdirektori /home/usernamedalam konteks chroot).

Sebagai solusi, Anda dapat mematikan chroot (tetapi ini akan memiliki implikasi keamanan lainnya, terutama dengan pengguna SFTP memiliki kendali penuh atas sistem file Anda). Anda dapat melakukan mount loop dari / var / www ke / home / username / www (sesuatu seperti mount --bind /var/www /home/username/www(periksa dokumentasi Anda untuk mount) yang seharusnya berfungsi seperti yang Anda harapkan di bawah chroot). Anda juga dapat membuang kotoran dengan file sshd_config untuk mengecualikan satu pengguna tertentu dari chroot (walaupun, sekali lagi, dengan implikasi keamanan).

Saya akan mencoba bind mount terlebih dahulu.

cjc
sumber
2
+1 untuk trik mount --bind!
Helge Klein
1
Jika Anda menginginkannya terus-menerus di seluruh reboot, edit /etc/fstabdengan garis seperti/home/username/www /var/www none bind 0 0
pzkpfw
0

Saya memutuskan untuk tidak menghubungkan symlink yang saya buat dan dengannya

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

(bahkan jika saya kehilangan semuanya di / var / www, tapi saya tidak peduli)

Terima kasih semuanya!

Dokter
sumber
Anda belum kehilangan apapun. Cukup unmount dan salin file Anda sebelum Anda mengirim ulang.
Zoredache
uuuhhh terima kasih! saya tidak punya apa-apa selain 1 file dengan tautan, tidak ada yang penting, tetapi saya tidak dapat menemukan cara untuk memulihkannya: D
Doc