? 高性能FTP服务器在英创Linux工控主板上的移植--技术天地

高性能FTP服務器在英創Linux工控主板上的移植

 2014/10/22    

  ftp是TCP/IP網絡上兩臺設備傳送文件的協議,用戶在嵌入式Linux系統的開發中,有時候需要搭建一個ftp服務器,以便實現對設備的訪問和文件傳輸等功能。英創工控主板已經自帶了一款busybox中的ftpd服務器,但是不能支持用戶名和密碼的管理,無法完全滿足一些工業應用的需求,針對這一點英創公司移植了一款小巧的ftp服務器stupid-ftpd:

 

  啟動方式 功能區別
  ftpd   開機自動啟動   不支持用戶名和密碼管理
  stupid-ftpd   需要手動啟動   支持用戶名和密碼管理,并且能控制操作權限

 

  可以看出,相對busybox中的ftpd服務器,stupid-ftpd的功能更加全面,接下來就介紹在英創Linux工控主板上移植stupid-ftpd的過程。

 

  stupid-ftpd的下載地址:。

 

  將下載好的stupid-ftpd-1.5beta.tar.gz放到工作目錄下,首先解壓:
  #tar vxzf stupid-ftpd-1.5beta.tar.gz,并進入解壓目錄,修改Makefile,只需要修改兩項,將編譯工具修改為英創公司提供的交叉工具鏈,并在編譯選項中加上靜態編譯:
  CC=arm-none-linux-gnueabi-gcc
  CFLAGS=-O2 -Wall -Wstrict-prototypes -static

 

  修改好后,直接執行make,編譯完成,生成stupid-ftpd.Linux6可執行程序和所需要的配置文件stupid-ftpd.conf。將這兩個文件拷貝至板卡的文件系統中就完成了移植工作,接下來就是如何使用。

 

  ftp服務器運行需要配置文件stupid-ftpd.conf,配置文件可以設置ftp服務器的用戶名和密碼,英創公司已經將一個配置文件的范例放在/etc目錄下,可由用戶自行修改,建議先將英創公司提供的范例stupid-ftpd.conf復制到/mnt/nandflash目錄下再進行修改,這樣就算出錯也能夠改回原來的配置。

 

  可以使用vi打開配置文件:#vi /mnt/nandflash/stupid-ftpd.conf進行編輯:

 

  首先需要修改FTP服務器的根目錄:

 

 

  如圖所示,在配置文件的第34行可以修改ftp服務器的根目錄,由于英創工控主板提供給用戶操作的目錄都在/mnt目錄下,為了避免修改到其他目錄的文件,這里建議用戶將根目錄設置為/mnt目錄。

 

  接下來來配置用戶名和密碼等功能:

 

 

  可以看到配置用戶名和密碼只需要修改第106行的這段話,它的格式為:


  user= 中間以空格區分。
  =用戶名,=密碼,=ftp服務器的目錄,=最大登錄用戶,=標志位,允許以下操作:
  D - download 允許下載文件
  U - upload + making directories 允許上傳文件和創建新目錄
  O - overwrite existing files 允許覆蓋已存在文件
  M - allows multiple logins 允許多用戶登錄
  E - allows erase operations 允許擦除操作
  A - allows EVERYTHING(!) 允許所有功能

 

  在英創公司提供的范例配置中,user=emtronix 123 /nandflash 5 A對照以上說明,就是用戶名為emtronix,密碼為123,ftp服務器目錄為/mnt/nandflash(在前面的介紹中已經將/mnt目錄設置為ftp服務器的根目錄),最大用戶數為5,并且允許所有的功能。用戶只需要根據自己的需求自行修改這一行就能夠達到用戶名和密碼的管理操作。

 

  配置好以后,就能夠啟動ftp服務器了,首先需要關掉之前提到的主板自帶的ftp服務器,使用命令

  #pkill inetd

  即可,然后就能夠開啟stupid-ftpd了,ftp服務器所使用的端口默認為21,所以還需要21端口沒有被占用。

 

  使用命令

  # stupid-ftpd.Linux6 -f /mnt/nandflash/stupid-ftpd.conf,-f后面跟的參數為修改好的配置文件。這樣就啟動了ftp服務器,可以使用開發主機來測試:

 

 

  可以看到,通過設置的用戶名和密碼,已經成功連接到/mnt/nandflash目錄下了,至此就能夠正常使用具有用戶名和密碼管理的ftp服務器了。

 

  如果需要關閉ftp服務器,調用命令

  #pkill stupid-ftpd

  即可。