linux搭建ftp

Centos7 命令使用總結

java完成ftp傳輸(將文件上傳至靜態資源服務器)


ftp一些概念瞭解

Linux安裝vsftpd及配置詳解

  • 一、安裝 yum -y install vsftpdhtml

  • 二、FTP主動模式與FTP被動模式java

  • 三、防火牆開啓21端口mysql

    • 文中是使用iptables開啓的
    • 如今centos7.2版本默認是防火牆,開啓方法爲:
    永久開啓ftp服務,ftp服務默認端口爲21
    firewall-cmd --add-service=ftp --permanent 
    firewall-cmd --reload
    複製代碼
  • 4.一、匿名登陸(瞭解)linux

  • 4.二、本地用戶登陸(瞭解)sql

  • 4.三、虛擬用戶登陸(瞭解)數據庫

  • 五、修改selinuxcentos

  • 六、設置開機啓動vsftpd服務安全

    systemctl enable vsftpd.service
    複製代碼

/etc/vsftpd目錄下配置文件講解

ftp服務安裝完後
如下是一些文件的位置約定: 
/usr/sbin/vsftpd ---- VSFTPD的主程序 
/etc/rc.d/init.d/vsftpd ---- 啓動腳本 
/etc/vsftpd/vsftpd.conf ---- 主配置文件 
/etc/pam.d/vsftpd ---- PAM認證文件 
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶列表文件 
/etc/vsftpd.user_list ---- 禁止或容許使用VSFTPD的用戶列表文件 
/var/ftp ---- 匿名用戶主目錄 
/var/ftp/pub ---- 匿名用戶的下載目錄
複製代碼

/etc/vsftpd目錄下配置文件講解bash

一、ftpusers服務器

#這裏設置黑名單 加入這裏的用戶都沒法訪問
複製代碼

二、user_list

#控制配置,這個既能夠是黑名單,也能夠是白名單
當vsftpd.conf中 userlist_enable=YES 時,爲黑名單,加入這裏的用戶沒法訪問
當vsftpd.conf中 userlist_enable=NO 時,爲白名單,加入這裏的用戶才能訪問
複製代碼

三、vsftpd.conf 配置文件

重要,太多了,本身搜
複製代碼

vsftpd 配置:chroot_local_user與chroot_list_enable詳解

瞭解
複製代碼

四、chroot_list

爲VSFTP用戶指定登陸後的目錄

重要,下面步驟用到
複製代碼

FTP常見命令詳解

當搭建完vsftpd服務後,要進行用戶登陸訪問ftp測試(可在window cmd下測試,可是注意Windows cmd下ftp只能使用主動模式進行鏈接哦)。
若是有錯誤,使用cmd命令能夠返回詳細錯誤信息
(如我遇到的錯誤提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))
用網頁、文件夾登陸不給相關錯誤信息
複製代碼

Linux搭建vsftpd服務步驟

需求

搭建ftp服務,並分發用戶。

上傳用戶uploadexample : 可建立文件夾,上傳文件,查看文件,不可刪除文件

下載用戶downloadexample : 可查看文件,下載文件,不可刪除文件

搭建

方式一:本地用戶

在服務器B搭建ftp服務,並開通用戶 uploadexample ,並配置只能操做指定文件夾/home/uploadexample,進行上傳資源操做。

一、yum安裝好ftp服務

yum -y install vsftpd
systemctl start vsftpd.service
此時匿名用戶登陸等應該都能登陸
systemctl enable vsftpd.service #在開機時啓用服務
複製代碼

二、/etc/vsftpd目錄下修改vsftpd.conf 配置文件

anonymous_enable=NO #關閉匿名登陸

#打開註釋
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list

#添加下面
#https://www.cnblogs.com/zuikeol/p/9647048.html
allow_writeable_chroot=YES
#添加讀取用戶配置目錄(注:本行配置默認沒有須要手動輸入)
user_config_dir=/etc/vsftpd/userconf

#開啓被動模式及設置端口段
pasv_enable=YES
pasv_min_port=6990
pasv_max_port=7000

#開啓防火牆對應端口 -- 這一步先不作,視狀況而定
cd /usr/lib/firewalld/services/
cp mysql.xml ftp-PassiveMode.xml
vi ftp-PassiveMode.xml #手動配置服務管理端口
    #修改內容後以下:
    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>ftp Passive Mode</short>
      <description>ftp Server Passive Mode </description>
      <port protocol="tcp" port="6990"/>
      <port protocol="tcp" port="6991"/>
      <port protocol="tcp" port="6992"/>
      <port protocol="tcp" port="6993"/>
      <port protocol="tcp" port="6994"/>
      <port protocol="tcp" port="6995"/>
      <port protocol="tcp" port="6996"/>
      <port protocol="tcp" port="6997"/>
      <port protocol="tcp" port="6998"/>
      <port protocol="tcp" port="6999"/>
      <port protocol="tcp" port="7000"/>
    </service>
firewall-cmd --reload #刷新
firewall-cmd --get-services | grep ftp-PassiveMode #確認一下
firewall-cmd --permanent --add-service=ftp-PassiveMode #加載服務,開啓端口

複製代碼

三、添加用戶

爲了安全,FTP用戶通常是不能登陸系統的。
在系統中,沒有權限登陸系統的用戶通常也被稱之爲虛擬用戶;虛擬用戶也是要寫進/etc
/passwd中;這只是一種虛擬用戶的方法,但說實在的並非真正的虛擬用戶,只是把他登陸SHELL的權限去掉了,因此他沒有能力登陸系統;
因此應該以下操做
新建用戶:
# adduser -d /home/uploadexample -g ftp -s /sbin/nologin uploadexample //新建用戶 
# passwd uploadexample //給用戶設置密碼
若是現存用戶不用新建,另外要肯定不在黑名單ftpusers(user_list-yes)中,
而且usermod命令設置這個用戶不能登陸系統
最後,確認一下配置文件vsftpd.conf ,以確保本地虛擬用戶能有讀寫權限:
      local_enable=YES
      write_enable=YES
      local_umask=022

複製代碼

四、用戶ftp相關權限設置

chroot_list文件內容添加上用戶uploadexample,一行一個用戶,保存
# vi /etc/vsftpd/chroot_list 

創建用戶配置目錄
# mkdir /etc/vsftpd/userconf

創建用戶登錄後的目錄,也就是容許用戶操做的目錄 若存在不用建立
# mkdir /home/uploadexample

添加用戶配置文件
注:有不少用戶時,須要建每一個用戶相對應的文件
# vi /etc/vsftpd/userconf/uploadexample
 添加內容FTP用戶登錄後指定的目錄:
 local_root=/home/uploadexample 

複製代碼

五、配置成功 重啓ftp服務,並測試。

  • 553 Could not create file.錯誤的解決

    selinux打開的狀態下,vsftp會出現本地用戶沒法上傳的問題(多是本地用戶的home目錄,或者是整個目錄)
      錯誤信息爲:
      553 Could not create file.
      要解決這個問題只要:
      1. setsebool -P ftpd_disable_trans 1
      2. systemctl restart vsftpd.service 
      就能夠了
    複製代碼

方式二:虛擬用戶登陸

目的:設置用戶的上傳、下載、刪除權限

  • 1 建立虛擬用戶的帳號及密碼
首先須要創建一個文本格式的用戶名/密碼列表文件,奇數行爲用戶名,偶數行爲上一行中用戶名所對應的密碼。

#vi /etc/vsftpd/logins.txt
saupload
daka123
sadownload
daka456
saadmin
daka789
複製代碼
生成數據庫

# cd /etc/vsftpd (option)
# yum -y install db4* (option)
# db_load -T -t hash -f logins.txt vsftpd_login.db 

# file vsftpd_login.db #查看轉換後的文件類型
vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)

# chmod 600 vsftpd_login.db #修改數據文件訪問權限

複製代碼

查看vsftp登陸認證數據庫db文件內容的方法 /usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db

另外,若是新增用戶,從新新建包含新用戶數據的txt文件,並運行db_load命令,就會將新用戶數據加入搭配db文件中。刪除數據未試。

  • 2 爲虛擬用戶建立PAM認證文件
新建pam:

# vi /etc/pam.d/vsftpd_login.pam //爲虛擬用戶建立PAM認證文件,文件名爲vsftpd_login.pam
    auth    required    pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login

//下面的vsftpd.conf中配置:
//pam_service_name=vsftpd_login.pam  //指定新的PAM認證文件

或在默認文件中修改
# vi /etc/pam.d/vsftpd
    //將裏面其餘的都註釋掉,添加下面這兩行:
    auth    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
  
//下面的vsftpd.conf中配置:
//pam_service_name=vsftpd(指定PAM配置文件爲在/etc/pam.d/下的vsftpd)

複製代碼
  • 3 建立虛擬帳號對應的系統用戶
# useradd -d /home/ftpexample -s /sbin/nologin ftpexample 
//添加用戶ftpexample,指定到新建的家目錄,將虛擬用戶對應到這個系統帳號上,這個
帳號無需設置密碼及登陸Shell (另外 若是用其餘本地用戶,那麼該本地用戶不能再用原來的帳號密碼登陸了)

# chmod 755 /home/ftpexample/ 
//調整權限以容許瀏覽目錄

//下面的vsftpd.conf中配置:   
//guest_username=ftpexample      //指定映射的系統用戶名稱
  
複製代碼
  • 4.修改主配置文件
# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=no#禁用匿名用戶登陸
(anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022   //指定上傳權限掩碼)(option)

allow_writeable_chroot=YES#https://www.cnblogs.com/zuikeol/p/9647048.html
local_enable=YES#需映射本地用戶,因此啓用些項
write_enable=YES#啓用上傳寫入支持
chroot_local_user=YES     
#將全部本地用戶限制在家目錄中,新建的用戶必須設置家目錄,example:adduser -d /home/uploadexample... 
#(或按照方式一種第二步設置相關用戶限制目錄:)

guest_enable=YES#啓用映射功能
guest_username=ftpexample#指定映射的系統用戶名稱
pam_service_name=vsftpd_login.pam#指定新的PAM認證文件
user_config_dir=/etc/vsftpd/userconf#(自建配置)用戶配置文件夾,須要建立 
max_clients=300#(自建配置)設置FTP服務器最大接入客戶端數爲300個 
max_per_ip=10#(自建配置)設置每一個IP地址最大鏈接數爲10個 

pasv_enable=YES# //(自建配置)容許PASV模式進行數據傳輸 
pasv_min_port=65341# //(自建配置)PASV模式下數據傳輸所使用port範圍下界 
pasv_max_port=65351# //(自建配置)PASV模式下數據傳輸所使用port範圍上界
...
 
複製代碼
  • 5.創建虛擬帳戶的配置文件
# mkdir /etc/vsftpd/userconf (option)
 # cd /etc/vsftpd/userconf 
 
 建立相關用戶配置文件
 # touch saupload
 # touch sadownload
 # touch saadmin
 
 配置文件內容,設置具體的權限:
 
 
 write_enable=YES 容許寫入
 download_enable=NO 是否能下載
 anon_world_readable_only=NO 容許瀏覽FTP目錄和下載
 anon_upload_enable=YES 容許虛擬用戶上傳文件
 anon_mkdir_write_enable=YES 容許虛擬用戶建立目錄
 anon_other_write_enable=YES 容許虛擬用戶執行其餘操做(如更名、刪除)
 anon_umask=022 上傳文件的掩碼,如022時,上傳目錄權限爲755,文件權限爲644(例如供http訪問)
 local_root=/ftproot/admin 指定虛擬用戶的虛擬目錄(虛擬用戶登陸後的主目錄)

 # vi saupload 
    //能夠:上傳,建立文件夾, 查看下載文件 不能:刪除,重命名
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    
    //能夠:上傳,建立文件夾, 查看 不能:刪除,重命名,下載文件
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    download_enable=NO  
    
 # vi sadownload
    
    //只能查看下載文件
    anon_world_readable_only=NO
    
# vi saadmin
    
    //全部權限:上傳,建立文件夾 查看下載文件 重命名 刪除
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
複製代碼
  • 重啓服務,登陸相關虛擬用戶名密碼,進行測試
相關文章
相關標籤/搜索