Liên kết tượng trưng và filezilla trên sftp


15

Tôi khá mới với debian và tôi đang cố gắng thiết lập một máy chủ.

Tôi đã tạo một người dùng chỉ có thể truy cập thư mục của mình /home/username(và thư mục con của nó).

Bây giờ tôi muốn sử dụng người dùng đó cho máy chủ web mà tôi đã thiết lập và tôi đã cấp cho anh ta quyền truy cập /var/wwwnhưng tôi không thể xem /var/wwwqua sftp và tôi đã thực hiện một liên kết tượng trưng như thế này:

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

Bây giờ, với filezilla, tôi có thể thấy thư mục www như thế này:

Filezilla

Nhưng khi tôi cố gắng mở nó, tôi nhận được điều này:

Mở

Tôi đang làm gì sai?

Câu trả lời:


21

Có khả năng SFTP đang bị chroot, do đó thư mục / var / www không có sẵn cho người dùng trong nhà tù chroot.

Nhìn vào /etc/ssh/sshd_configvà kiểm tra các chỉ thị sftp. Bạn có thấy một cái gì đó như:

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

Trang người đàn ông sshd_config ở đây .

Về cơ bản, một khi người dùng ở /home/usernametrong SFTP, thư mục đó sẽ trở thành /và các tham chiếu bên ngoài /home/usernamekhông có sẵn. Trên thực tế, một liên kết tượng trưng ln -s /var/www /home/username/wwwsẽ trông giống như bạn đang cố gắng tiếp cận /home/username/var/www(nghĩa /home/usernamelà bây giờ, /vì vậy bất kỳ liên kết nào tham chiếu /var/wwwcũng phải là thư mục con /home/usernametrong ngữ cảnh của chroot).

Là một giải pháp, bạn có thể tắt chroot (nhưng điều này sẽ có ý nghĩa bảo mật khác, chủ yếu là với người dùng SFTP có toàn bộ hệ thống tập tin của bạn). Bạn có thể thực hiện gắn kết vòng / var / www vào / home / username / www (đại loại như mount --bind /var/www /home/username/www(kiểm tra tài liệu của bạn mount) để hoạt động như bạn mong đợi trong chroot). Bạn cũng có thể muck với tệp sshd_config để loại trừ một người dùng cụ thể đó khỏi chroot (mặc dù, một lần nữa, với ý nghĩa bảo mật).

Tôi sẽ thử gắn kết đầu tiên.


2
+1 cho trò lừa - gắn kết!
Helge Klein

1
Nếu bạn muốn nó được bền bỉ trong suốt quá trình khởi động lại, hãy chỉnh sửa /etc/fstabdòng của bạn bằng một dòng như/home/username/www /var/www none bind 0 0
pzkpfw 23/12/14

0

Tôi đã giải quyết hủy liên kết symlink mà tôi đã tạo và với

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

(ngay cả khi tôi mất tất cả mọi thứ trong / var / www, nhưng tôi không quan tâm)

cảm ơn tất cả!


Bạn chưa mất gì cả. Đơn giản chỉ cần ngắt kết nối và sao chép các tập tin của bạn trước khi bạn kể lại.
Zoredache

uuuhhh cảm ơn bạn! tôi không có gì ngoài 1 tập tin với một liên kết, không có gì quan trọng, nhưng tôi không thể tìm ra để khôi phục nó: D
Doc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.