2009-10-06 31 views
33

Tôi cần cấp quyền truy cập SFTP vào thư mục trong webroot trên máy chủ của mình. Tôi đã thiết lập ben_files như một người dùng và đã thiết lập thư mục chính của mình đểLinux shell để hạn chế người dùng sftp vào thư mục chính của họ?

/var/www/vhosts/mydomain.com/files

Đó là tất cả tiền phạt nếu ông kết nối với đồng bằng FTP cũ - anh ấy hạn chế chỉ vào thư mục đó, nhưng để kích hoạt SFTP tôi phải thêm anh ta vào thùng rác/bash, đột nhiên mở toàn bộ máy chủ của tôi ...

Có cách nào để truy cập SFTP nhưng không mở tất cả các thư mục của tôi không? Tôi thực sự thích anh ta chỉ giới hạn ở nhà của anh ấy;)

Cảm ơn!

Trả lời

46

OpenSSH ≥ 4.8 hỗ trợ chỉ thị ChrootDirectory.

Thêm vào /etc/sshd_config hoặc /etc/ssh/sshd_config hoặc bất cứ toàn cầu tập tin sshd cấu hình của thiết lập của bạn là:

 
Match user ben_files 
     # The following two directives force ben_files to become chrooted 
     # and only have sftp available. No other chroot setup is required. 
     ChrootDirectory /var/www/vhosts/mydomain.com/files 
     ForceCommand internal-sftp 
     # For additional paranoia, disallow all types of port forwardings. 
     AllowTcpForwarding no 
     GatewayPorts no 
     X11Forwarding no 
+0

Hiya, tôi gặp một số lỗi - Bắt đầu từ sshd:/etc/ssh/sshd_config: dòng 113: Tùy chọn cấu hình không hợp lệ: Match AND/etc/ssh/sshd_config: dòng 115: Tùy chọn cấu hình không hợp lệ: ForceCommand. Cả hai đều dừng sshd trở lại. Bất kỳ ý tưởng? – MrFidge

+0

Có thể bạn không có phiên bản SSH đủ mới. – ephemient

+0

ahh vâng, tôi đã bỏ lỡ một chút trong câu trả lời của bạn - chúng tôi đang ở trạng thái 4.3, tôi sẽ xem xét việc nâng cấp. – MrFidge

3

Bạn có thể thử thiết lập vỏ của mình để /bin/rbash

GIỚI HẠN CỦA SHELL Nếu bash được bắt đầu với tên rbash, hoặc tùy chọn -r là cung cấp tại gọi, vỏ trở nên hạn chế. Vỏ bị hạn chế là được sử dụng để thiết lập môi trường được kiểm soát nhiều hơn vỏ chuẩn. Nó cư xử hệt để bash với ngoại lệ mà các Sau đây là không được phép hoặc không được thực hiện:

·  changing directories with cd 

cộng thêm ...

Hãy chắc chắn rằng bạn hoàn toàn hiểu những gì được phép và không được phép trước bạn dùng cái này

+0

rbash nằm trong bản phân phối, nhưng nó không xuất hiện để cho phép sftp - tôi sẽ phải xem xét cấu hình tôi đoán. Cảm ơn lời khuyên! – MrFidge

3

Hãy xem rssh. Nó có thể đã được đóng gói để phân phối o/s của bạn.

+0

Nó không được đóng gói, nhưng đó là hoàn hảo! Tôi sẽ xem xét việc cài đặt càng sớm càng tốt;) Cảm ơn! – MrFidge

-1

Bạn cũng có thể thiết lập người dùng shell để/bin/false bằng cách sử dụng:

usermod -s/bin username/sai

Hạn chế chúng từ ssh 'ing in and can only sftp (hoặc ftp, nếu nó được thiết lập)

Tôi sử dụng tính năng này cho mục đích sftp, cùng với thiết lập chroot đã đề cập (được bao gồm bởi các câu trả lời khác).

+0

Khi tôi đặt shell của mình thành/bin/false, tôi không còn sftp hoặc scp nữa! – Jeach

+2

'/ bin/false' hạn chế bất kỳ loại đăng nhập nào. Thông tin của bạn là sai. Sử dụng '/ sbin/nologin' để thay thế – hayonj

Các vấn đề liên quan