Tôi có cùng một vấn đề như trong chủ đề này
https://serverfault.com/questions/576143/how-to-hide-folders-for-ftp-user-jailed-to-user-home
nhưng giải pháp này không hiệu quả với tôi.
Các bước của tôi:
người dùng đã thêm
useradd someftpuser
Đã thêm mật khẩu cho người dùng
passwd someftpuser
người dùng đã sửa đổi
sudo usermod -d /var/www/html/someftpuser -m -s /bin/bash someftpuser
đã cài đặt vsftpd và sửa đổi cấu hình như đã đề cập ở trên:
# Tệp cấu hình ví dụ /etc/vsftpd.conf
#
# Mặc định được biên dịch trong cài đặt khá hoang tưởng. tập tin mẫu này
# nới lỏng mọi thứ một chút để làm cho daemon ftp dễ sử dụng hơn.
# Vui lòng xem vsftpd.conf.5 để biết tất cả được biên dịch ở chế độ mặc định.
#
# ĐỌC NÀY: Tệp ví dụ này KHÔNG phải là danh sách đầy đủ các tùy chọn vsftpd.
# Vui lòng đọc trang hướng dẫn vsftpd.conf.5 để biết đầy đủ về vsftpd's
# khả năng.
#
#
# Chạy độc lập? vsftpd có thể chạy từ inetd hoặc độc lập
# daemon bắt đầu từ một initscript.
lắng nghe = KHÔNG
#
# Lệnh này cho phép nghe trên ổ cắm IPv6. Theo mặc định, lắng nghe
# trên địa chỉ "bất kỳ" của IPv6 (::) sẽ chấp nhận kết nối từ cả IPv6
# và máy khách IPv4. Không cần thiết phải nghe trên *cả* IPv4 và IPv6
# ổ cắm. Nếu bạn muốn điều đó (có lẽ vì bạn muốn nghe cụ thể
# địa chỉ) thì bạn phải chạy hai bản vsftpd với hai cấu hình
# các tập tin.
nghe_ipv6=CÓ
#
# Cho phép FTP ẩn danh? (Tắt theo mặc định).
nặc danh_enable=KHÔNG
#
# Bỏ ghi chú này để cho phép người dùng cục bộ đăng nhập.
local_enable=CÓ
#
# Bỏ ghi chú này để kích hoạt bất kỳ dạng lệnh ghi FTP nào.
write_enable=CÓ
#
# Ô mặc định cho người dùng cục bộ là 077. Bạn có thể thay đổi giá trị này thành 022,
# nếu người dùng của bạn mong đợi điều đó (022 được sử dụng bởi hầu hết các ftpd khác)
local_umask=022
#
# Bỏ ghi chú này để cho phép người dùng FTP ẩn danh tải tệp lên. cái này thôi
# có tác dụng nếu tính năng ghi chung ở trên được kích hoạt. Ngoài ra, bạn sẽ
# rõ ràng là cần tạo một thư mục mà người dùng FTP có thể ghi.
#anon_upload_enable=CÓ
#
# Bỏ ghi chú này nếu bạn muốn người dùng FTP ẩn danh có thể tạo
# thư mục mới.
#anon_mkdir_write_enable=CÓ
#
# Kích hoạt tin nhắn thư mục - tin nhắn được cung cấp cho người dùng từ xa khi họ
# đi vào một thư mục nhất định.
dirmessage_enable=CÓ
#
# Nếu được bật, vsftpd sẽ hiển thị danh sách thư mục theo thời gian
# trong múi giờ địa phương của bạn. Mặc định là hiển thị GMT. Các
# lần được trả về bởi lệnh MDTM FTP cũng bị ảnh hưởng bởi điều này
# Tùy chọn.
use_localtime=YES
#
# Kích hoạt ghi nhật ký tải lên/tải xuống.
xferlog_enable=CÓ
#
# Đảm bảo kết nối truyền PORT bắt nguồn từ cổng 20 (ftp-data).
connect_from_port_20=CÓ
#
# Nếu muốn, bạn có thể sắp xếp để các tệp ẩn danh được tải lên thuộc quyền sở hữu của
# một người dùng khác. Ghi chú! Không sử dụng "root" cho các tệp đã tải lên
# khuyến khích!
#chown_uploads=CÓ
#chown_username=bất cứ ai
#
# Bạn có thể ghi đè vị trí của tệp nhật ký nếu muốn. Mặc định được hiển thị
# phía dưới.
#xferlog_file=/var/log/vsftpd.log
#
# Nếu muốn, bạn có thể đặt tệp nhật ký của mình ở định dạng ftpd xferlog tiêu chuẩn.
# Lưu ý rằng vị trí tệp nhật ký mặc định là /var/log/xferlog trong trường hợp này.
#xferlog_std_format=CÓ
#
# Bạn có thể thay đổi giá trị mặc định để hết thời gian cho một phiên không hoạt động.
#idle_session_timeout=600
#
# Bạn có thể thay đổi giá trị mặc định để hết thời gian kết nối dữ liệu.
#data_connection_timeout=120
#
# Bạn nên xác định trên hệ thống của mình một người dùng duy nhất mà
# máy chủ ftp có thể sử dụng như một người dùng hoàn toàn bị cô lập và không có đặc quyền.
#nopriv_user=ftpsecure
#
# Kích hoạt tính năng này và máy chủ sẽ nhận ra các yêu cầu ABOR không đồng bộ. Không
# được khuyến nghị để bảo mật (mã không tầm thường). Không kích hoạt nó,
# tuy nhiên, có thể gây nhầm lẫn cho các máy khách FTP cũ hơn.
#async_abor_enable=CÓ
#
# Theo mặc định, máy chủ sẽ giả vờ cho phép chế độ ASCII nhưng thực tế là bỏ qua
# yêu cầu. Bật các tùy chọn bên dưới để máy chủ thực sự làm ASCII
# xáo trộn các tệp khi ở chế độ ASCII.
# Lưu ý rằng trên một số máy chủ FTP, hỗ trợ ASCII cho phép từ chối dịch vụ
# tấn công (DoS) thông qua lệnh "SIZE /big/file" ở chế độ ASCII. vsftpd
# đã dự đoán cuộc tấn công này và luôn an toàn, báo cáo quy mô của cuộc tấn công
# file thô.
# Xáo trộn ASCII là một tính năng khủng khiếp của giao thức.
#ascii_upload_enable=CÓ
#ascii_download_enable=CÓ
#
# Bạn hoàn toàn có thể tùy chỉnh chuỗi biểu ngữ đăng nhập:
#ftpd_banner=Chào mừng đến với dịch vụ FTP blah.
#
# Bạn có thể chỉ định một tệp địa chỉ e-mail ẩn danh không được phép. Rõ ràng
# hữu ích để chống lại các cuộc tấn công DoS nhất định.
#deny_email_enable=CÓ
# (mặc định sau)
#banned_email_file=/etc/vsftpd.banned_emails
#
# Bạn có thể hạn chế người dùng cục bộ vào thư mục chính của họ. Xem Câu hỏi thường gặp để biết
# những rủi ro có thể xảy ra trong việc này trước khi sử dụng chroot_local_user hoặc
# chroot_list_enable bên dưới.
chroot_local_user=KHÔNG
#
# Bạn có thể chỉ định một danh sách rõ ràng những người dùng cục bộ để chroot() đến nhà của họ
# danh mục. Nếu chroot_local_user là CÓ, thì danh sách này sẽ trở thành danh sách
# người dùng KHÔNG chroot().
# (Cảnh báo! chroot'ing có thể rất nguy hiểm. Nếu sử dụng chroot, hãy đảm bảo rằng
# người dùng không có quyền ghi vào thư mục cấp cao nhất trong thư mục
chroot_list_file=/etc/vsftpd.chroot_list
#
# Bạn có thể kích hoạt tùy chọn "-R" cho ls dựng sẵn. Điều này bị vô hiệu hóa bởi
# mặc định để tránh người dùng từ xa có thể gây ra I/O quá mức trên quy mô lớn
# trang web. Tuy nhiên, một số máy khách FTP bị hỏng như "ncftp" và "mirror" giả sử
# sự hiện diện của tùy chọn "-R", vì vậy rất có thể bạn nên bật tùy chọn này.
#ls_recurse_enable=CÓ
#
# Tùy chỉnh
#
# Một số cài đặt của vsftpd không phù hợp với bố cục hệ thống tệp bởi
# mặc định.
#
# Tùy chọn này phải là tên của một thư mục trống. Ngoài ra, các
# thư mục không được ghi bởi người dùng ftp. Thư mục này được sử dụng
# như một nhà tù chroot() an toàn đôi khi vsftpd không yêu cầu hệ thống tập tin
# quyền.
safe_chroot_dir=/var/run/vsftpd/empty
#
# Chuỗi này là tên của dịch vụ PAM vsftpd sẽ sử dụng.
pam_service_name=vsftpd
#
# Tùy chọn này chỉ định vị trí của chứng chỉ RSA sẽ sử dụng cho SSL
# kết nối được mã hóa.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=KHÔNG
#
# Bỏ ghi chú này để chỉ ra rằng vsftpd sử dụng hệ thống tệp utf8.
#utf8_filesystem=CÓ
Đã tạo một tệp với người dùng đã được chroot:
nano /etc/vsftpd.chroot_list
chỉ với nội dung tên người dùng
softpuser
Đã khởi động lại vsftpd
sudo /etc/init.d/vsftpd khởi động lại
Đăng nhập với tên someftpuser trên máy khách ftp (filezilla)
effect -> người dùng someftpuser có thể xem các tệp trong các thư mục khác và tải chúng xuống.
Làm cách nào để chặn người dùng đi lên trên trong cấu trúc thư mục và ngăn không cho nhìn thấy bất kỳ thứ gì khác ngoài thư mục nhà của anh ta?
/var/www/html/someftpuser
Máy chủ: Debian 11, apache2