Chúng tôi đã tìm thấy một cách giải quyết gần đây như sau:
/ etc / ssh / sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
quyền thư mục:
root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*
Bây giờ /homeđáp ứng các yêu cầu cho ChrootDirectoryvà không thể được liệt kê bởi người dùng bị hạn chế, nhưng sftponlyngười dùng sẽ không thể đăng nhập nếu thư mục chính của họ được thiết lập như bình thường ( /home/$LOGNAME): trong môi trường chroot thư mục nhà của họ không ở bên trong /homemà trực tiếp bên dưới gốc ( /).
cách giải quyết 1
Đặt nhà của người dùng bị hạn chế theo cách họ xuất hiện dưới chroot:
root@server:~ # usermod -d /username username
báo trước 1
Nếu bất kỳ người dùng không bị hạn chế hoặc một số tập lệnh quản trị nào sử dụng mở rộng dấu ngã của bash như ~usernamenó sẽ mở rộng đến /usernamebây giờ, điều đó không có nghĩa là gì.
Ngoài ra, quản trị viên tạo sftponlyngười dùng phải nhớ sử dụng nhà không mặc định. Có thể giải quyết với một kịch bản. Mà quản trị viên phải nhớ để sử dụng.
cách giải quyết 2
Đây là một thay thế cho cái trước mà chúng tôi đã sử dụng:
root@server:~ # ln -s . /home/home
Đó là tạo một liên kết tượng trưng bên trong /homeđến tên riêng của nó. Bây giờ dưới chroot /home/usernametrỏ đến cùng thư mục như không có chroot. Đối với người dùng bị hạn chế đăng nhập bằng sftp, nó sẽ xuất hiện dưới dạng /username. Thư mục này có thể ghi cho chủ sở hữu của nó (người dùng bị hạn chế). Người dùng bị hạn chế không thể liệt kê thư mục gốc hoặc thư mục gốc của bất kỳ anh chị em nào theo tên.
Điều duy nhất đặc biệt về sftponlyngười dùng là sự tham gia của họ trong sftponlynhóm. Chúng tôi thấy việc giải quyết dễ dàng hơn so với cách giải quyết 1.
báo trước 2
- Bạn không thể có người dùng có tên 'nhà' với một thư mục nhà
/home/home
- Bạn phải cẩn thận với các tập lệnh đi qua
/homehệ thống phân cấp và theo các liên kết tượng trưng.
chrooted người dùng sở hữu của họChrootDirectory? Họ có thể truy cập nó?