Hướng dẫn cấu hình máy chủ FTP trên hệ điều hành Linux nhúng

Yêu cầu cơ bản cho máy chủ FTP

Để triển khai một máy chủ FTP trên hệ thống Linux nhúng, cần đáp ứng các yêu cầu sau:

  • Phải có cơ chế xác thực tài khoản người dùng.
  • Người dùng chỉ được truy cập trong một thư mục gốc cố định, không được phép di chuyển lên thư mục cấp cao hơn (ví dụ: /data/share).
  • Không cho phép truy cập ẩn danh (anonymous) vì lý do bảo mật.
  • Có thể cần thiết lập quyền chỉ đọc (read-only).

Lựa chọn giải pháp

ftpd tích hợp trong BusyBox

Trước tiên, có thể xem xét sử dụng ftpd có sẵn trong BusyBox. Cấu hình trong file /etc/inetd.conf sẽ trông như sau:

ftp    stream  tcp     nowait  root    /usr/sbin/ftpd    ftpd -w /data/share

Sau đó, khởi động lại thiết bị.

Tuy nhiên, sau khi tìm hiểu về các tùy chọn cấu hình của ftpd, ta thấy rằng nó chỉ hỗ trợ truy cập ẩn danh. Do đó, giải pháp này không đáp ứng được yêu cầu xác thực tài khoản.

vsftpd

vsftpd là một lựa chọn phù hợp hơn vì nó hỗ trợ cả xác thực người dùng và giới hạn quyền truy cập vào thư mục.

Cách chuyển giao (Porting) vsftpd

Tải mã nguồn

Tải mã nguồn từ trang chủ của vsftpd, ví dụ phiên bản vsftpd-3.0.3.tar.gz, và giải nén.

Cấu hình và biên dịch

Cần điều chỉnh file Makefile để sử dụng trình biên dịch chéo (cross-compiler) cho kiến trúc ARM.

# Mở file Makefile
vim Makefile

# Thay đổi biến CC
# CC	=	gcc
CROSS_COMPILE = arm-linux-gnueabihf-
CC	=	$(CROSS_COMPILE)gcc

Sau đó, tiến hành biên dịch:

make

Lưu ý: Trước khi chạy lệnh make, hãy đảm bảo rằng trình biên dịch arm-linux-gnueabihf-gcc đã được thêm vào biến môi trường PATH.

Cài đặt lên thiết bị nhúng

Sau khi biên dịch thành công, sao chép file thực thi vsftpd vào thư mục /usr/sbin trên thiết bị nhúng và cấp quyền thực thi. Đồng thời, sao chép file cấu hình vsftpd.conf vào thư mục /etc.

cp vsftpd /path/to/target/usr/sbin/
chmod +x /path/to/target/usr/sbin/vsftpd
cp vsftpd.conf /path/to/target/etc/
chown root:root /path/to/target/etc/vsftpd.conf

Khởi động dịch vụ:

vsftpd &

Lúc này, máy chủ FTP đã có thể truy cập, nhưng vẫn cần điều chỉnh thêm để đáp ứng các yêu cầu cụ thể.

Cấu hình vsftpd

Các tùy chọn cấu hình chính cần thiết trong file /etc/vsftpd.conf như sau:

# Vô hiệu hóa truy cập ẩn danh
anonymous_enable=NO
# Cho phép người dùng cục bộ đăng nhập
local_enable=YES
# Thay đổi thư mục gốc sau khi đăng nhập, mặc định là thư mục home của người dùng
local_root=/data/ftp_root
# Không cho phép chuyển sang thư mục cấp cao hơn
chroot_local_user=YES
# Kích hoạt danh sách người dùng bị giới hạn trong thư mục của mình
chroot_list_enable=YES
# (mặc định theo sau)
chroot_list_file=/etc/vsftpd/chroot_list

Tạo người dùng mới

Sử dụng các lệnh sau để tạo người dùng FTP mới:

# Tạo người dùng ftp_user, với thư mục home là /data/ftp_user
useradd -d /data/ftp_user ftp_user
# Đặt mật khẩu cho người dùng ftp_user
passwd ftp_user

Cập nhật quyền hạn cho người dùng:

# Hạn chế người dùng ftp_user chỉ có thể sử dụng FTP, không thể telnet
usermod -s /sbin/nologin ftp_user
# Khôi phục quyền truy cập shell cho người dùng ftp_user (nếu cần)
# usermod -s /bin/bash ftp_user
# Thay đổi thư mục home của người dùng ftp_user
usermod -d /data/ftp_user ftp_user

Sau khi hoàn tất các bước trên, khởi động lại dịch vụ vsftpd để áp dụng các thay đổi.

Thẻ: Linux nhúng vsftpd ftp chroot Cấu hình

Đăng vào ngày 30 tháng 5 lúc 08:42