Câu trả lời:
Các hệ thống Unix cung cấp chroot
lệ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 chroot
giả sử foo
ngườ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 foo
bằ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 foo
cho 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 Ý: Match
các khối cần ở END của sshd_config
tệp.)
Khởi động lại ssh
dịch vụ
sudo service ssh restart
Với cenfiguration này, bạn có thể ssh vào thư mục ubuntu
và nhận tệp. Không thể put
hoặcdelete
Để sftp trong thư mục bên phải chỉnh sửa /etc/passwd
. Thay đổi dòng để người dùng foo
trông như thế này
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Điều này sẽ thay đổi foo
thư 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-sftp
như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 no
sshd_config và tạo người dùng và nhóm như bạn đã làm nhưng người dùngfoo
có quyền đối với tất cả các thư mục :(