《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于vsftp的嵌入式設備受控訪問方法
基于vsftp的嵌入式設備受控訪問方法
來源:電子技術應用2012年第6期
張傳凱,馬少飛
北京萬集科技股份有限公司,北京100085
摘要: 介紹了嵌入式Linux系統上vsftp的搭建和配置方法。給出了一種不使用Linux USB gadget driver API進行復雜的驅動開發仍能方便快捷地訪問嵌入式設備SD卡等多種外設的統一方法,并介紹了利用用戶權限來實現嵌入式設備受控訪問的方法。
中圖分類號: TP399
文獻標識碼: A
文章編號: 0258-7998(2012)06-0018-02
A method of controlled access to embedded devices based on vsftp
Zhang Chuankai,Ma Shaofei
Beijing Wanji Technology Co., Ltd, Beijing 100085,China
Abstract: The paper indroduces the method of how to set up and configure vsftp on Linux system. Gives unified approach of access to the SD cards and other peripherals, avoiding the complex driven development using the Linux USB gadget driver API, and how to use the user permissions to achieve controlled access to embedded devices.
Key words : vsftp;embedded Linux;SD card;controlled access

    嵌入式設備與通用計算機相比,一般不具備像硬盤那樣大容量的存儲介質,大多使用閃存(NAND Flash)作為存儲介質。對于采用Linux操作系統的嵌入式設備,64 MB的NAND Flash可以滿足Bootloader、內核和文件系統的存放,如果使用過程中涉及大容量的數據讀寫,則多采用SD卡作為擴展存儲介質。這里的SD卡是指普通SD卡、MiniSD卡和MicroSD卡三種類型的存儲卡。對SD卡上的數據進行訪問一般有兩種解決方法:(1)將SD卡從嵌入式設備中取出,使用特定的讀卡器連接到PC上進行操作。這種方法需要用戶購買特定的讀卡器,使用不方便,用戶也不愿意接受;(2)在嵌入式設備上增加一個USB從設備接口,為嵌入式設備開發USB從設備驅動(USB gadget driver),將SD卡模擬成U盤設備進行訪問。這種方法涉及到硬件的改動和驅動的開發,開發難度大,耗費時間長。本文提供了一種方便快捷的方法,可以滿足用戶對SD卡上文件的訪問。

    vsftp是一個基于GPL發布的類Unix系統上使用的FTP服務器軟件,具有非常安全且快速穩定的特點,目前已經被許多大型站點所采用。vsftp可以方便地移植到嵌入式Linux操作系統中,如果將嵌入式設備作為FTP服務器,以PC作為客戶端,用戶即可通過FTP客戶端軟件實現PC與嵌入式設備之間的文件傳輸。如果再將SD卡掛載到文件系統的某個目錄下,用戶就可通過FTP服務來訪問SD卡。
1 移植vsftp到ARM-Linux系統
1.1 交叉編譯

    要移植vsftp,首先到vsftpd 官方網站下載程序源碼,本文使用的是vsftpd-2.3.4.tar.gz。解壓vsftpd-2.3.4.tar.gz,然后進入vsftpd-2.3.4目錄,修改Makefile文件,將“CC=gcc”修改為“CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc”,即使用交叉編譯器進行編譯。執行make指令,會出現“/lib/libcap.so.1: could not read symbols: File in wrong format”編譯錯誤,提示找不到libcap.so.1庫文件,修改vsftpd-2.3.4目錄下的vsf_findlibs.sh文件,注釋掉如下語句:
    if locate_library /lib/libcap.so.1; then
       echo "/lib/libcap.so.1";
    elif locate_library /lib/libcap.so.2; then
       echo "/lib/libcap.so.2";
    else
       locate_library /usr/lib/libcap.so && echo "-lcap";
       locate_library /lib/libcap.so && echo "-lcap";
       locate_library /lib64/libcap.so && echo "-lcap";
    fi
    再次執行make指令,編譯成功,生成vsftpd文件,執行file vsftpd指令,則可顯示如下語句:
    vsftpd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked(uses shared libs), for GNU/Linux 2.6.14, stripped
    將vsftpd拷貝到嵌入式設備文件系統的/usr/sbin目錄下。
1.2 查看依賴及其相應的配置文件
    執行arm-linux-readelf –d vsftpd指令查看vsftpd需要的動態鏈接庫,則顯示如下語句:
Dynamic section at offset 0x16a9c contains 29 entries:
      Tag        Type            Name/Value
0x00000001 (NEEDED)        Shared library: [libcrypt.so.1]
0x00000001 (NEEDED)        Shared library: [libdl.so.2]
0x00000001 (NEEDED)        Shared library: [libnsl.so.1]
0x00000001 (NEEDED)        Shared library: [libresolv.so.2]
0x00000001 (NEEDED)        Shared library: [libutil.so.1]
0x00000001 (NEEDED)        Shared library: [libc.so.6]
    將以上所列的動態庫從/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib目錄下拷貝到嵌入式設備文件系統的/lib目錄下;將vsftpd-2.3.4目錄下的默認配置文件vsftpd.conf拷貝到嵌入式設備文件系統的/etc目錄下。
1.3 啟動設置
    在嵌入式設備文件系統的/etc/rc.d/init.d目錄下添加名為vsftpd的腳本,內容如下:
    #!/bin/sh
    base=vsftpd
    # See how we were called.
    case "$1" in
        start)
            /usr/sbin/$base
            ;;
       stop)
        pid=`/bin/pidof $base`
        if [ -n "$pid" ]; then
            kill -9 $pid
        fi
            ;;
    esac
    exit 0
    在/etc/init.d/rcS文件中添加/usr/sbin/vsftpd &語句,以便在開機時啟動vsftpd服務器。
2 用戶和目錄設置
    為了使用戶登錄FTP服務器后能夠直接進入SD卡目錄中,需要對用戶及目錄進行設置。vsftpd提供了匿名用戶、本地用戶、虛擬用戶三種訪問方式。
    (1)匿名用戶形式:在默認安裝的情況下,系統只提供匿名用戶訪問。
    (2)本地用戶方式:以/etc/passwd中的用戶名為認證方式。
    (3)虛擬用戶方式:支持將用戶名和口令保存在數據庫文件或數據庫服務器中。
    由于創建用戶較為麻煩,可以采用從host直接拷貝的方式,將/etc目錄下的passwd、passwd-、group、group-、shadow和shadow-文件拷貝到嵌入式設備文件系統的
/etc目錄下。
    執行下面命令為訪問SD的用戶創建一個本地用戶,創建好之后就可以用admin登錄,并且其主目錄為/sdcard。這里使用/sdcard作為SD卡的掛載目錄。
    #adduser admin –h /sdcard -D
    #passwd 123456
    admin用戶存在的問題就是可以對主目錄的上層目錄進行訪問。處于安全的考慮,大多數情況下需要對用戶隱藏掉系統文件以防止用戶的誤操作造成的系統崩潰。這就需要對admin用戶的權限進行限制,使其只可訪問/sdcard主目錄文件,其他文件都對用戶不可見。對vsftpd.conf配置文件做如下修改:
    chroot_local_user=NO
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list
然后把admin用戶名添加到文件vsftpd.chroot_list中即可(一行一個用戶名)。vsftpd.chroot_list是一個用戶名列表,其中存放的是禁止訪問上層目錄的用戶名。
3 訪問SD卡
    使用網線連接嵌入式設備和PC,啟動嵌入式設備,vsftpd服務器會在開機過程中自啟動。將嵌入式設備和PC的IP地址設置在同一網段,在PC端打開FTP客戶端軟件,在服務器欄中輸入嵌入式設備的IP地址,使用用戶名和密碼進行連接登錄。快速連接界面如圖1所示。

    登錄成功后,用戶將會看到如圖2所示的界面,從界面右側的地址欄可以看到/sdcard目錄已被作為用戶的根目錄/,用戶無法看到上層目錄的內容,達到了使用戶受控訪問的目的。

 

 

    實驗測試表明,用戶可以方便地通過FTP客戶端軟件訪問到SD卡,而且通過使用該方法,可以創建不同的用戶,通過為其設定不同的主目錄,使用戶能夠對嵌入式設備的不同目錄進行訪問。如果用戶需要最高的權限,則可允許其他訪問到嵌入式設備的所有目錄和文件,只要不將該用戶名添加到vsftpd.chroot_list中即可。這種靈活性是將嵌入式設備模擬成USB從設備難以做到的。
參考文獻
[1] CORBET J,RUBINI A,HARTMAN G K.Linux Device drivers[M].O’reilly Media,Inc,2005.
[2] 彭潁,王方.基于LINUX的VSFTPD服務的實現[J].信息系統工程,2010(10).
[3] 李傳偉,胡金春.嵌入式Linux下USB Gadget驅動框架研究[J].航天控制,2006(3).
[4] 周余,王自強,都思丹.Linux Gadget系統及其在S3c2410上的海量存儲研究[J].計算機應用,2006(S2).

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品欧美在线| 欧美在线视频一区| 国产亚洲观看| 国产精品成人aaaaa网站| 欧美大片一区二区| 母乳一区在线观看| 久久久久久久欧美精品| 久久九九国产精品| 久久精品免费电影| 久久视频在线看| 久久久亚洲影院你懂的| 久久精品一区四区| 久久久噜噜噜久久人人看| 久久久久国产精品一区二区| 久久久青草青青国产亚洲免观| 久久久久久久久伊人| 久久在线免费视频| 蜜臀91精品一区二区三区| 久久夜色精品国产欧美乱极品| 久久久亚洲午夜电影| 久久综合狠狠综合久久激情| 麻豆精品视频在线观看| 你懂的国产精品| 欧美精品日韩一本| 欧美日韩国产精品| 国产精品xnxxcom| 国产精品自在线| 狠狠干狠狠久久| 亚洲国产精品成人| 亚洲美女电影在线| 亚洲一区二区少妇| 欧美影片第一页| 91久久国产自产拍夜夜嗨| 日韩西西人体444www| 亚洲视频在线视频| 欧美一区二区三区另类| 久久天天综合| 欧美精品一区二区在线观看| 国产精品久久久久久久久久免费| 国产日产欧美一区| 亚洲电影免费在线| 久久国产精品一区二区三区| 久久久久久高潮国产精品视| 免费观看成人| 欧美日韩国产三级| 国产精品资源| 亚洲国产清纯| 亚洲图片欧洲图片日韩av| 欧美伊人久久大香线蕉综合69| 亚洲欧洲日本国产| 亚洲综合日韩在线| 久久久久久综合| 欧美日韩亚洲系列| 国产一区二区三区在线观看精品| 亚洲国产黄色| 亚洲欧美日韩国产综合在线 | 国产精品毛片| 亚洲第一网站| 亚洲一区欧美一区| 亚洲人成人一区二区在线观看| 亚洲一区二区三区久久| 蜜桃av噜噜一区二区三区| 国产精品第一区| 在线精品视频免费观看| 亚洲午夜91| 亚洲精品日韩精品| 久久久999精品| 欧美日韩在线视频观看| 樱花yy私人影院亚洲| 亚洲性图久久| 99国内精品久久久久久久软件| 久久国产一区二区| 欧美日韩视频在线一区二区观看视频| 国产亚洲欧美一区| 在线视频你懂得一区| 亚洲日本一区二区| 久久国产精品久久w女人spa| 欧美色大人视频| 亚洲国产成人高清精品| 欧美一区国产二区| 亚洲欧美日韩一区在线| 欧美日韩成人综合天天影院| 狠狠色伊人亚洲综合成人| 亚洲女性裸体视频| 亚洲亚洲精品在线观看| 欧美精品系列| 亚洲大黄网站| 久久大逼视频| 欧美在线国产| 国产精品女主播在线观看| 亚洲理伦电影| 亚洲精品欧美在线| 老鸭窝毛片一区二区三区| 国产一区二区三区丝袜| 亚洲欧美日韩在线综合| 亚洲欧美精品suv| 欧美日韩伊人| 一区二区免费在线播放| 亚洲成色999久久网站| 欧美一区2区视频在线观看| 午夜精品福利在线观看| 欧美性猛交xxxx乱大交退制版| 亚洲精品免费网站| 亚洲九九爱视频| 老司机午夜精品视频| 国内精品美女在线观看| 欧美在线观看www| 欧美在线免费| 国产欧美一区二区白浆黑人| 亚洲免费在线观看| 欧美一区二区三区四区在线| 国产精品亚洲激情| 午夜精品视频一区| 久久riav二区三区| 国产一区二区成人久久免费影院| 亚洲欧美第一页| 久久精品99| 国产一区二区三区精品久久久| 欧美亚洲午夜视频在线观看| 欧美一区二区三区成人 | 国产精品自拍小视频| 亚洲欧美国产另类| 欧美一区日韩一区| 国产三区精品| 亚洲国产mv| 久久精品91久久香蕉加勒比| 狠狠网亚洲精品| 亚洲人成欧美中文字幕| 欧美韩国日本一区| 亚洲精品午夜| 亚洲欧美久久| 国产日本欧美视频| 久久精品国产精品亚洲精品| 久久综合色婷婷| 亚洲国产成人在线| 一区二区三区四区精品| 国产精品久久久久毛片大屁完整版 | a91a精品视频在线观看| 亚洲综合第一页| 国产日韩一区二区三区在线| 久久激情五月丁香伊人| 欧美好吊妞视频| 中国女人久久久| 久久国产天堂福利天堂| 在线观看国产日韩| 亚洲视频导航| 国产亚洲综合性久久久影院| 亚洲日韩视频| 国产精品乱人伦一区二区| 欧美一区亚洲一区| 欧美激情视频一区二区三区在线播放| 99re6热只有精品免费观看| 欧美夜福利tv在线| 在线观看一区欧美| 亚洲伊人伊色伊影伊综合网| 亚洲人成人一区二区三区| 欧美日精品一区视频| 亚洲一区二区在线免费观看| 久久久噜噜噜久噜久久| 亚洲伦伦在线| 久久精品99国产精品日本| 亚洲人成人一区二区在线观看| 亚洲欧美激情一区| 在线观看91精品国产入口| 亚洲一区二区视频在线观看| 国产在线观看一区| 亚洲无毛电影| 在线看日韩欧美| 午夜精品久久久久久久久 | 亚洲一区二区三区777| 玖玖在线精品| 亚洲一二三区在线观看| 免费中文日韩| 亚洲欧美制服另类日韩| 欧美精品成人一区二区在线观看| 亚洲欧美成人网| 欧美精品一区在线发布| 欧美一级黄色录像| 欧美三级免费| 亚洲精品国产无天堂网2021| 国产精品综合久久久| 日韩视频一区二区三区| 国产一区二区成人| 亚洲一区二区三区乱码aⅴ蜜桃女| 精品成人在线| 欧美在线综合| 一本大道久久精品懂色aⅴ| 欧美第一黄色网| 久久精品视频免费| 国产精品毛片a∨一区二区三区| 亚洲精品你懂的| 国产亚洲欧美日韩精品| 亚洲自拍另类| 亚洲三级影院| 麻豆九一精品爱看视频在线观看免费| 亚洲综合成人婷婷小说| 欧美日韩亚洲一区二| 亚洲精品久久久久久久久久久久| 国产欧美日韩麻豆91| 亚洲免费婷婷|