Ubuntu 搭建vsftp服務器

jopen 12年前發布 | 36K 次閱讀 Ubuntu FTP服務器

1、安裝vsftpd
  終端輸入sudo apt-get install vsftpd
  安裝之后會在/home/下建立一個ftp目錄,訪問下可以看到一個空白內容的ftp空間。
  默認設置下需要匿名用戶不可以登錄
2、設置 vsftpd.conf文件

  修改之前最好先備份這個文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
    參數意義:
      Anonymous_enable=yes (允許匿名登陸)
      Dirmessage_enable=yes (切換目錄時,顯示目錄下.message的內容)
      Local_umask=022 (FTP上本地的文件權限,默認是077)
      Connect_form_port_20=yes (啟用FTP數據端口的數據連接)*
      Xferlog_enable=yes (激活上傳和下傳的日志)
      Xferlog_std_format=yes (使用標準的日志格式)
      Ftpd_banner=XXXXX (歡迎信息)
      Pam_service_name=vsftpd (驗證方式)*
      Listen=yes (獨立的VSFTPD服務器)*
        功能:只能連接FTP服務器,不能上傳和下傳
        注:其中所有和日志歡迎信息相關連的都是可選項,打了星號的無論什么帳戶都要添加,是屬于FTP的基本選項
    開啟匿名FTP服務器上傳權限:
      Anon_upload_enable=yes (匿名帳號開放上傳權限)
      Anon_mkdir_write_enable=yes (匿名帳號可創建目錄的同時可以在此目錄中上傳文件)
      Write_enable=yes (開放本地用戶寫的權限)
      Anon_other_write_enable=yes (匿名帳號可以有刪除的權限)
      Anon_world_readable_only=no(開啟匿名服務器下傳的權限)
    普通用戶FTP服務器的連接(獨立服務器)配置:
      Local_enble=yes (本地帳戶能夠登陸)
      Write_enable=no (本地帳戶登陸后無權刪除和修改文件)
        功能:可以用本地帳戶登陸vsftpd服務器,有下載上傳的權限
        注:在禁止匿名登陸的信息后匿名服務器照樣可以登陸但不可以上傳下傳
    用戶登陸限制進其它的目錄,只能進它的主目錄:
      設置所有的本地用戶都執行chroot
         Chroot_local_user=yes (本地所有帳戶都只能在自家目錄)
      設置指定用戶執行chroot
         Chroot_list_enable=yes (文件中的名單可以調用)
         Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
      注意:vsftpd.chroot_list 是沒有創建的需要自己添加,要想控制帳號就直接在文件中加帳號即可
    限制本地用戶訪問FTP:
      Userlist_enable=yes (用userlistlai 來限制用戶訪問)
      Userlist_deny=no (名單中的人不允許訪問)
      Userlist_file=/指定文件存放的路徑/ (文件放置的路徑)
      注:開啟userlist_enable=yes匿名帳號不能登陸
    安全選項
      Idle_session_timeout=600(秒) (用戶會話空閑后10分鐘)
      Data_connection_timeout=120(秒) (將數據連接空閑2分鐘斷)
      Accept_timeout=60(秒) (將客戶端空閑1分鐘后斷)
      Connect_timeout=60(秒) (中斷1分鐘后又重新連接)
      Local_max_rate=50000(bite) (本地用戶傳輸率50K)
      Anon_max_rate=30000(bite) (匿名用戶傳輸率30K)
      Pasv_min_port=50000 (將客戶端的數據連接端口改在
      Pasv_max_port=60000 50000—60000之間)
      Max_clients=200 (FTP的最大連接數)
      Max_per_ip=4 (每IP的最大連接數)
      Listen_port=5555 (從5555端口進行數據連接)
    查看誰登陸了FTP,并殺死它的進程
      ps –xf |grep ftp
      kill 進程號

3、配置本地組訪問的FTP
   首先創建用戶組 test和FTP的主目錄
      groupadd test
      mkdir /tmp/test
   然后創建用戶
      useradd -G test –d /tmp/test –M usr1
      注:G:用戶所在的組
          d:表示創建用戶的自己目錄的位置給予指定
          M:不建立默認的自家目錄,也就是說在/home下沒有自己的目錄
      useradd –G test –d /tmp/test –M usr2
   接著改變文件夾的屬主和權限
      chown usr1.test /tmp/test ----這表示把/tmp/test的屬主定為usr1
      chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么權限都沒有
      這個實驗的目的就是usr1有上傳、刪除和下載的權限,而usr2只有下載的權限沒有上傳和刪除的權限
      主配置文件vsftpd.conf要確定local_enable=yes、write_enable=yes、chroot_local_usr=yes這三個選項是有的哦!

4、配置獨立FTP的服務器的非端口標準模式進行數據連接
   在VSFTPD_CONF中添加Listen_port=33333
5、配置單獨的虛擬FTP,使用虛擬FTP用戶,并使建立的四個帳戶中有不同的權限
   (兩個有讀目錄的權限,一個有瀏覽、上傳、下載的權限,一個有瀏覽、下載、刪除和改文件名的權限)
    1>配置網卡
      第一塊網卡地址是10.2.3.4 掩碼是255.255.0.0
         ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
    2>寫入/etc/sysconfig中(為了重起后IP地址不會丟失)
         cd /etc/sysconfig/network-scripts
         cp ifcfg-eth0 ifcfg-eth0:1
         vi ifcfg-eth0:1在其中修改內容如下
         DEVICE=eth0:1
         BROADCAST=211.131.4.255
         HWADDR=該網卡的MAC地址
         IPADDR=211.131.4.253
         NETMASK=255.255.255.0
         NETWORK=211.131.4.0
         ONBOOT=yes
         TYPE=Ethernet
         wq退出
    3>進入vsftpd.conf所在的文件夾cp vsftpd.conf vsftpd2.conf
      修改vsftpd.conf添加以下信息
         Listen_address=10.2.3.4
      修改vsftpd2.conf添加以下信息
         Listen_address=211.131.4.253
         Ftpd_banner=this is a virtual ftp test
      到此虛擬的FTP服務器建立好了
    4>建立logins.txt
         vi /tmp/logins.txt
      添加入下信息:
        longlei------------用戶名
        longlei------------密碼
        zhangweibo
        zhangweibo
        jinhui
        jinhui
        lxp
        lxp
      格式:一個用戶名,一個密碼
    5>建立訪問者的口令庫文件,然后修改其權限
        db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
    6>進如/etc/pam.d/中創建
      在中添加如下信息
        auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
        account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
    7>在/var/ftp/創建目錄并改變其屬性和它的屬主
        useradd -d /var/ftp/test qiang
        chmod 700 /var/ftp/test
      在目錄中添加test_file測試文件
    8>進入vsftpd2.conf修改其中的信息(可以是)
        Listen_yes
        Anonymous_enable=no
        Local_enable=yes
        Write_enable=no
        Anon_upload_enable=no
        Anon_mkdir_write_enable=no
        Anon_other_write_enable=no
        Chroot_local_user=yes
        Guest_enable=yes----------起用虛擬用戶
        Guest_username=qiang------將虛擬用戶映射為本地用戶
        Listen_port=5555
        Max_client=10
        Max_per_ip=1
        Ftpd_banner=this is a virtual server and users
        Pam_service_name=ftp.vu
      注:在主配置文件中給的權限越低,在后面分用戶管理的時候對用戶的權限劃分的空間就越大,因為主配置文件最高的限制服務先讀主配置文件,然后再讀用戶的配置文件
      配置完成時候執行/etc/init.d/vsftpd restart重啟ftp服務器即可
      到此虛擬USER就建好了
    9>在VSFTPD_CONF所在的目錄中創建virtaul文件目錄,并在文件目錄中創建以你用戶名命名的配置文件
        Longlei zhangweibo jinhui lxp
      在longlei中添加:
        Anon_world_readable_only=no
      在lxp中添加
        Anon_world_readable_only=no
      這樣此兩個用戶就有了瀏覽目錄的權限了
      在jinhui中添加
        Anon_world_readable_only=no
        Write_enable=yes
        Anon_upload_enable=yes
      此用戶就有了上傳、下載和瀏覽的權限
      在zhangweibo中添加
        Anon_world_readable_only=no
        Write_enable=yes
        Anon_upload_enable=yes
        Anon_other_write_enable=yes
      此用戶就有了上傳、下載、刪除文件目錄、修改文件名和瀏覽的權限
    10>修改vsftpd2.conf
      加入user_config_dir=/vsftpd.conf所在的目錄/virtual
      重起服務器就搞定了
    VSFTPD_CONF中的所有配置信息
        Anonymous_enable=yes (允許匿名登陸)
        Dirmessage_enable=yes (切換目錄時,顯示目錄下.message的內容)
        Local_umask=022 (FTP上本地的文件權限,默認是077)
        Connect_form_port_20=yes (啟用FTP數據端口的數據連接)*
        Xferlog_enable=yes (激活上傳和下傳的日志)
        Xferlog_std_format=yes (使用標準的日志格式)
        Ftpd_banner=XXXXX (歡迎信息)
        Pam_service_name=vsftpd (驗證方式)*
        Listen=yes (獨立的VSFTPD服務器)*
        Anon_upload_enable=yes (開放上傳權限)
        Anon_mkdir_write_enable=yes (可創建目錄的同時可以在此目錄中上傳文件)
        Write_enable=yes (開放本地用戶寫的權限)
        Anon_other_write_enable=yes (匿名帳號可以有刪除的權限)
        Anon_world_readable_only=no (放開匿名用戶瀏覽權限)
        Ascii_upload_enable=yes (啟用上傳的ASCII傳輸方式)
        Ascii_download_enable=yes (啟用下載的ASCII傳輸方式)
        Banner_file=/var/vsftpd_banner_file (用戶連接后歡迎信息使用的是此文件中的相關信息)
        Idle_session_timeout=600(秒) (用戶會話空閑后10分鐘)
        Data_connection_timeout=120(秒) (將數據連接空閑2分鐘斷)
        Accept_timeout=60(秒) (將客戶端空閑1分鐘后斷)
        Connect_timeout=60(秒) (中斷1分鐘后又重新連接)
        Local_max_rate=50000(bite) (本地用戶傳輸率50K)
        Anon_max_rate=30000(bite) (匿名用戶傳輸率30K)
        Pasv_min_port=50000 (將客戶端的數據連接端口改在
        Pasv_max_port=60000 50000—60000之間)
        Max_clients=200 (FTP的最大連接數)
        Max_per_ip=4 (每IP的最大連接數)
        Listen_port=5555 (從5555端口進行數據連接)
        Local_enble=yes (本地帳戶能夠登陸)
        Write_enable=no (本地帳戶登陸后無權刪除和修改文件)
      這是一組
        Chroot_local_user=yes (本地所有帳戶都只能在自家目錄)
        Chroot_list_enable=yes (文件中的名單可以調用)
        Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list   (前提是chroot_local_user=no)
      這又是一組
        Userlist_enable=yes (在指定的文件中的用戶不可以訪問)
        Userlist_deny=yes
        Userlist_file=/指定的路徑/vsftpd.user_list
      又開始單的了
        Banner_fail=/路徑/文件名 (連接失敗時顯示文件中的內容)
        Ls_recurse_enable=no
        Async_abor_enable=yes
        One_process_model=yes
        Listen_address=10.2.2.2 (將虛擬服務綁定到某端口)
        Guest_enable=yes (虛擬用戶可以登陸)
        Guest_username=所設的用戶名 (將虛擬用戶映射為本地用戶)
        User_config_dir=/任意指定的路徑/為用戶策略自己所建的文件夾   (指定不同虛擬用戶配置文件的路徑)
      又是一組
        Chown_uploads=yes (改變上傳文件的所有者為root)
        Chown_username=root
      又是一組
        Deny_email_enable=yes (是否允許禁止匿名用戶使用某些郵件地址)
        Banned_email_file=//任意指定的路徑/xx/
      又是單的
        Pasv_enable=yes ( 服務器端用被動模式)
        User_config_dir=/任意指定的路徑//任意文件目錄 (指定虛擬用戶存放配置文件的路徑)
      如需要使用本地用戶登陸關閉來賓用戶,必須設置如下命令:
        anonymous_enable=no
        guest_enable=no
        local_enable=yes
        write_enable=yes
        local_umask=022
        chroot_list_enable=yes
        chroot_list_file=/etc/vsftpd.chroot_list (如沒有則自己創建)   (在etc/vsftpd.chroot_list 填入需要登陸的本地用戶名)

6、解決vsftpd的中文亂碼問題
   先安裝源中的vsfpd,然后把所有的功能都配置完后,再解決中文亂碼問題
   因為刪除源的vsftpd后它的/init.d/vsftpd與/vsftpd.conf是不會刪除的,可以為我們打好鋪墊,不然你會發現很無奈的!如果 你是直接編譯安裝,附件給出會給出我的init.d/vsftpd與vsftpd.conf文件,把他們覆蓋到/etc下吧!

   開始做編譯的準備工作,準備編譯環境需要的庫包
       sudo apt-get build-dep vsftpd 
   這里使用先安裝源里的vsftpd,然后卸載
       sudo apt-get install vsftpd
       apt-get remove vsftpd
   下載附件并解壓包
       tar -zxvf vsftpd-2.0.6
       cd vsftpd-2.0.6
       sudo su :使用root用戶開始編譯
       make #編譯命令,如果無錯誤出現,表示成功
       make install #安裝
          如果安裝中出現找不到目錄的話,就建立那個缺的目錄就好了
          基本上都會提示缺少/man8和/man5目錄的,建立后在重新make install
   下邊就來測試下效果修改配置文件,加入
       charset_filter_enable=YES #開啟字符過濾
       charset_client=GB2312 #客戶端字符設置為簡體中文
   好了現在把服務開啟測試下吧
       sudo /etc/init.d/vsftpd restart
    在win下上傳一個中文文件,看看效果吧,然后在把配置文件中關于字符的關掉,重起服務,在看吧

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!