sshfs: chroot tất cả người dùng không root vào thư mục cụ thể


8

Trên máy chủ, tôi cần quyền truy cập ssh không giới hạn đối với root và bị hạn chế đối với tất cả người dùng khác.

Tôi muốn hạn chế tất cả người dùng không root:

  • không đăng nhập ssh
  • chỉ cho phép gắn kết /mnt/data/bằng cách sử dụngsshfs

Tôi thấy sshd_configcho phép sử dụng Match User, tức là:

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

nhưng làm thế nào tôi có thể phù hợp với tất cả người dùng ngoại trừ root?


Tôi đã đăng một câu trả lời, nhưng tôi không hoàn toàn rõ ràng nếu phần "nguồn đáng tin cậy và / hoặc nguồn chính thức" đề cập đến tính khả thi / bảo mật chung của giải pháp của bạn hoặc cho câu hỏi "làm thế nào để chỉ khớp gốc".
fra-san

@ fra-san - Tôi không chắc ý của bạn là gì. Bạn có ngụ ý rằng trong khi giải pháp này hoạt động về mặt kỹ thuật, nó không an toàn?
Martin Vegter

Không, tôi chỉ tự hỏi nếu bạn đang tìm kiếm một số chứng thực của một cấu hình cụ thể của các tác giả ban đầu hoặc những người có thẩm quyền khác. Trên thực tế, những gì bạn đang làm được khuyên trong nhiều nguồn kiến ​​thức ( Arch Wiki là một ví dụ).
fra-san

Câu trả lời:


12

Lệnh khớp trong sshtệp cấu hình của hỗ trợ phủ định. Nhưng có vẻ như điều kiện phủ định sshd_configlà hơi khó: bạn phải viết

Match User="!root,*"

để có các chỉ thị tiếp theo được áp dụng cho tất cả người dùng ngoại trừ root.

Đây là tài liệu liên quan: từ man sshd_config:

Match Giới thiệu một khối có điều kiện.
...
Các mẫu đối sánh có thể bao gồm các mục nhập đơn hoặc danh sách được phân tách bằng dấu phẩy và có thể sử dụng ký tự đại diện và toán tử phủ định được mô tả trong phần MẪU của ssh_config (5).

Và từ man ssh_config:

THỰC TRẠNG
Một mẫu bao gồm 0 hoặc nhiều ký tự không phải khoảng trắng, '*' (ký tự đại diện khớp với 0 hoặc nhiều ký tự) hoặc '?' (một ký tự đại diện khớp chính xác với một ký tự).
...
Lưu ý rằng một trận đấu phủ định sẽ không bao giờ tạo ra kết quả tích cực.
Ví dụ: cố gắng khớp "host3" với danh sách mẫu sau sẽ không thành công:

from="!host1,!host2"

Giải pháp ở đây là bao gồm một thuật ngữ sẽ mang lại kết quả khớp tích cực, chẳng hạn như ký tự đại diện:

from="!host1,!host2,*"

Gợi ý tìm thấy trong bài viết này trên Cổng thông tin khách hàng Red Hat.

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.