SFTP: symlink tập tin trong một thư mục bị bỏ tù (chroote)


22

Tôi đang cố gắng thiết lập sftp để một vài người đáng tin cậy có thể truy cập / chỉnh sửa / tạo một số tệp. Tôi đã bỏ tù một người dùng vào thư mục chính của họ (/ home / name) nhưng đã gặp phải một vấn đề. Tôi muốn họ cũng có thể truy cập các phần khác của VPS vì đây cũng là máy chủ trò chơi, webhost, v.v. và tôi muốn họ có thể kiểm soát hoàn toàn các tệp bên ngoài thư mục bị bỏ tù của họ.

Tôi đã thử tạo một symlink (ln -s) đến thư mục mong muốn nhưng nó không hoạt động, như mong đợi. Tôi đã thử (cp -rl) cho các tệp mà tôi muốn cấp quyền truy cập và nó đã hoạt động - họ có thể chỉnh sửa các tệp trong thư mục của mình và nó thay đổi tệp được lưu trữ bên ngoài tù. NHƯNG họ không thể tạo các tệp mới (họ có thể nhưng nó sẽ không cập nhật bên ngoài trại giam). Tôi biết có lẽ tôi không làm điều này "đúng cách" nhưng tôi có thể làm gì để làm những gì tôi muốn?

Câu trả lời:


40

Các liên kết tượng trưng hoàn toàn là biểu tượng: chúng không chứa gì ngoài một đường dẫn, vì vậy khi bạn mở một liên kết tượng trưng, ​​HĐH sẽ đọc đường dẫn đó và sử dụng thay thế. Trong môi trường chroot, các liên kết (đặc biệt là các liên kết có đường dẫn tuyệt đối) thường không trỏ đến cùng một vị trí mà chúng đã trỏ đến trong môi trường bình thường.

Nếu hệ điều hành máy chủ là Linux, cách tốt nhất của bạn là liên kết gắn kết toàn bộ thư mục ở đâu đó bên trong thư mục chroot. Khi sử dụng, điều quan trọng cần nhớ là đây không phải là bản sao của thư mục, mọi thứ bị xóa ở đây sẽ bị xóa khỏi thư mục khác (quan trọng nếu người dùng có thể gửi mvtệp hoặc rm -rf). Để làm điều này:

mount --bind /some/directory /somewhere/else

Các tập tin trong thư mục nên là tập tin thực sự. Symlinks ở đây có thể sẽ có cùng các vấn đề bạn đã cố gắng liên kết đến các tệp ở nơi đầu tiên.


Cảm ơn câu trả lời của bạn. Bạn có thể vui lòng giải thích hoặc chỉ cho tôi một hướng dẫn về cách tôi có thể làm việc này không? Tôi đã vô hiệu hóa ssh cho khách để họ chỉ có quyền truy cập sftp. Tập tin nào tôi đặt lệnh này?
dukevin

Mặc dù nó không được khuyến khích rộng rãi, bạn cũng có thể tạo các liên kết cứng thư mục, việc này sẽ đơn giản hơn, nhưng chỉ khi tất cả các tệp nằm trên cùng một thiết bị.
Falcon Momot

Lệnh gì cho điều đó
dukevin

@KevinDuke Đây không phải là thứ mà người dùng có thể tự làm, chỉ root mới có thể sử dụng mountcách này. Có thể có một cách để chỉ định nó /etc/fstabđể nó được thực hiện tự động khi khởi động nhưng tôi không chắc bằng cách nào
DerfK

1
Cảm ơn bạn. Tôi đọc một số hướng dẫn và tìm ra nó. Câu trả lời của bạn thực sự đã giúp tôi đi đúng hướng. Cảm ơn! Đối với những người muốn biết, những giúp: aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/... redbottledesign.com/...
dukevin
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.