Câu trả lời:
Các hệ thống Unix cung cấp chrootlệnh cho phép bạn đặt lại /người dùng vào một số thư mục trong hệ thống phân cấp hệ thống tệp, nơi họ không thể truy cập các tệp và thư mục "cao cấp".
Tuy nhiên, trong trường hợp của bạn, nó sẽ thích hợp để cung cấp một chroot ảo được triển khai bởi dịch vụ shell từ xa. sftp có thể được cấu hình dễ dàng để hạn chế người dùng cục bộ trong một tập hợp con cụ thể của hệ thống tập tin.
do đó, trong trường hợp của bạn, bạn muốn chrootgiả sử foongười dùng vào /var/www/vhosts/thư mục.
Bạn có thể đặt thư mục chroot cho người dùng của mình để giới hạn chúng vào thư mục con /var/www/vhosts/như vậy trong /etc/ssh/sshd_config;
Tạo người dùng foobằng mật khẩu
sudo useradd foo
sudo passwd foo
Tạo nhóm chỉ SFTP
$ sudo groupadd sftp_users
Thêm vào một người dùng foocho nhóm chỉ SFTP
$ sudo usermod -G sftp_users foo
Thay đổi chủ sở hữu, vì quyền đọc / ghi
sudo chown root.root /var/www/vhosts/
Thêm quyền
sudo chmod 755 /var/www/vhosts/
Biên tập /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
Nhận xét và thêm một dòng như dưới đây
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Thêm vào cuối cùng
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(LƯU Ý: Matchcác khối cần ở END của sshd_configtệp.)
Khởi động lại sshdịch vụ
sudo service ssh restart
Với cenfiguration này, bạn có thể ssh vào thư mục ubuntuvà nhận tệp. Không thể puthoặcdelete
Để sftp trong thư mục bên phải chỉnh sửa /etc/passwd. Thay đổi dòng để người dùng footrông như thế này
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Điều này sẽ thay đổi foothư mục nhà người dùng thành thư mục máy chủ sftp của bạn.
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftpnhưng có lỗi khi tôi muốn khởi động lại ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Match.....phần ở KẾT THÚC của tệp. Đặt mã đó vào cuối tập tin và khởi động lại nó.
Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding nosshd_config và tạo người dùng và nhóm như bạn đã làm nhưng người dùngfoocó quyền đối với tất cả các thư mục :(