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 ChrootDirectory
và không thể được liệt kê bởi người dùng bị hạn chế, nhưng sftponly
ngườ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 /home
mà 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ư ~username
nó sẽ mở rộng đến /username
bây giờ, điều đó không có nghĩa là gì.
Ngoài ra, quản trị viên tạo sftponly
ngườ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/username
trỏ đế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ề sftponly
người dùng là sự tham gia của họ trong sftponly
nhó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
/home
hệ thống phân cấp và theo các liên kết tượng trưng.
chroot
ed người dùng sở hữu của họChrootDirectory
? Họ có thể truy cập nó?