linux搭建ftp

Centos7 命令使用總結(jié)

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


ftp一些概念了解

Linux安裝vsftpd及配置詳解

  • 1、安裝 yum -y install vsftpd

  • 2、FTP主動(dòng)模式與FTP被動(dòng)模式

  • 3、防火墻開啟21端口

    • 文中是使用iptables開啟的
    • 現(xiàn)在centos7.2版本默認(rèn)是防火墻,開啟方法為:
    永久開啟ftp服務(wù),ftp服務(wù)默認(rèn)端口為21
    firewall-cmd --add-service=ftp --permanent 
    firewall-cmd --reload
    
  • 4.1、匿名登錄(了解)

  • 4.2、本地用戶登錄(了解)

  • 4.3、虛擬用戶登錄(了解)

  • 5、修改selinux

  • 6、設(shè)置開機(jī)啟動(dòng)vsftpd服務(wù)

    systemctl enable vsftpd.service
    

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

ftp服務(wù)安裝完后
以下是一些文件的位置約定: 
/usr/sbin/vsftpd ---- VSFTPD的主程序 
/etc/rc.d/init.d/vsftpd ---- 啟動(dòng)腳本 
/etc/vsftpd/vsftpd.conf ---- 主配置文件 
/etc/pam.d/vsftpd ---- PAM認(rèn)證文件 
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶列表文件 
/etc/vsftpd.user_list ---- 禁止或允許使用VSFTPD的用戶列表文件 
/var/ftp ---- 匿名用戶主目錄 
/var/ftp/pub ---- 匿名用戶的下載目錄

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

1、ftpusers

 #這里設(shè)置黑名單 加入這里的用戶都無法訪問

2、user_list

 #控制配置,這個(gè)既可以是黑名單,也可以是白名單
當(dāng)vsftpd.conf中 userlist_enable=YES 時(shí),為黑名單,加入這里的用戶無法訪問
當(dāng)vsftpd.conf中 userlist_enable=NO 時(shí),為白名單,加入這里的用戶才能訪問

3、vsftpd.conf 配置文件

重要,太多了,自己搜

vsftpd 配置:chroot_local_user與chroot_list_enable詳解

了解

4、chroot_list

為VSFTP用戶指定登錄后的目錄

重要,下面步驟用到

FTP常見命令詳解

當(dāng)搭建完vsftpd服務(wù)后,要進(jìn)行用戶登錄訪問ftp測(cè)試(可在window cmd下測(cè)試,但是注意Windows cmd下ftp只能使用主動(dòng)模式進(jìn)行連接哦)。
如果有錯(cuò)誤,使用cmd命令可以返回詳細(xì)錯(cuò)誤信息
(如我遇到的錯(cuò)誤提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))
用網(wǎng)頁、文件夾登錄不給相關(guān)錯(cuò)誤信息

Linux搭建vsftpd服務(wù)步驟

需求

搭建ftp服務(wù),并分發(fā)用戶。

上傳用戶uploadexample : 可創(chuàng)建文件夾,上傳文件,查看文件,不可刪除文件

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

搭建

方式一:本地用戶

在服務(wù)器B搭建ftp服務(wù),并開通用戶 uploadexample ,并配置只能操作指定文件夾/home/uploadexample,進(jìn)行上傳資源操作。

1、yum安裝好ftp服務(wù)

yum -y install vsftpd
systemctl start vsftpd.service
此時(shí)匿名用戶登錄等應(yīng)該都能登錄
systemctl enable vsftpd.service #在開機(jī)時(shí)啟用服務(wù)

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


anonymous_enable=NO #關(guān)閉匿名登錄

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

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

#開啟被動(dòng)模式及設(shè)置端口段
pasv_enable=YES
pasv_min_port=6990
pasv_max_port=7000

#開啟防火墻對(duì)應(yīng)端口 -- 這一步先不做,視情況而定
cd /usr/lib/firewalld/services/
cp mysql.xml ftp-PassiveMode.xml
vi ftp-PassiveMode.xml #手動(dòng)配置服務(wù)管理端口
    #修改內(nèi)容后如下:
    <?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 #確認(rèn)一下
firewall-cmd --permanent --add-service=ftp-PassiveMode #加載服務(wù),開啟端口

3、添加用戶

為了安全,F(xiàn)TP用戶一般是不能登錄系統(tǒng)的。
在系統(tǒng)中,沒有權(quán)限登錄系統(tǒng)的用戶一般也被稱之為虛擬用戶;虛擬用戶也是要寫進(jìn)/etc
/passwd中;這只是一種虛擬用戶的方法,但說實(shí)在的并不是真正的虛擬用戶,只是把他登錄SHELL的權(quán)限去掉了,所以他沒有能力登錄系統(tǒng);
所以應(yīng)該如下操作
新建用戶:
# adduser -d /home/uploadexample -g ftp -s /sbin/nologin uploadexample //新建用戶 
# passwd uploadexample //給用戶設(shè)置密碼
如果現(xiàn)存用戶不用新建,另外要確定不在黑名單ftpusers(user_list-yes)中,
并且usermod命令設(shè)置這個(gè)用戶不能登錄系統(tǒng)
最后,確認(rèn)一下配置文件vsftpd.conf ,以確保本地虛擬用戶能有讀寫權(quán)限:
      local_enable=YES
      write_enable=YES
      local_umask=022

4、用戶ftp相關(guān)權(quán)限設(shè)置

chroot_list文件內(nèi)容添加上用戶uploadexample,一行一個(gè)用戶,保存
# vi /etc/vsftpd/chroot_list 

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

建立用戶登陸后的目錄,也就是允許用戶操作的目錄 若存在不用創(chuàng)建
# mkdir /home/uploadexample

添加用戶配置文件
注:有很多用戶時(shí),需要建每個(gè)用戶相對(duì)應(yīng)的文件
# vi /etc/vsftpd/userconf/uploadexample
 添加內(nèi)容FTP用戶登陸后指定的目錄:
 local_root=/home/uploadexample 

5、配置成功 重啟ftp服務(wù),并測(cè)試。

  • 553 Could not create file.錯(cuò)誤的解決

      selinux打開的狀態(tài)下,vsftp會(huì)出現(xiàn)本地用戶無法上傳的問題(可能是本地用戶的home目錄,或者是整個(gè)目錄)
      錯(cuò)誤信息為:
      553 Could not create file.
      要解決這個(gè)問題只要:
      1. setsebool -P ftpd_disable_trans 1
      2. systemctl restart vsftpd.service 
      就可以了
    

方式二:虛擬用戶登錄

目的:設(shè)置用戶的上傳、下載、刪除權(quán)限

  • 1 創(chuàng)建虛擬用戶的賬號(hào)及密碼
首先需要建立一個(gè)文本格式的用戶名/密碼列表文件,奇數(shù)行為用戶名,偶數(shù)行為上一行中用戶名所對(duì)應(yīng)的密碼。

#vi /etc/vsftpd/logins.txt
saupload
daka123
sadownload
daka456
saadmin
daka789
生成數(shù)據(jù)庫

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

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

# chmod 600 vsftpd_login.db  #修改數(shù)據(jù)文件訪問權(quán)限

查看vsftp登錄認(rèn)證數(shù)據(jù)庫db文件內(nèi)容的方法
/usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db

另外,如果新增用戶,重新新建包含新用戶數(shù)據(jù)的txt文件,并運(yùn)行db_load命令,就會(huì)將新用戶數(shù)據(jù)加入搭配db文件中。刪除數(shù)據(jù)未試。

  • 2 為虛擬用戶創(chuàng)建PAM認(rèn)證文件
新建pam:

# vi /etc/pam.d/vsftpd_login.pam //為虛擬用戶創(chuàng)建PAM認(rèn)證文件,文件名為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認(rèn)證文件

或在默認(rèn)文件中修改
# 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 創(chuàng)建虛擬賬號(hào)對(duì)應(yīng)的系統(tǒng)用戶
# useradd -d /home/ftpexample -s /sbin/nologin ftpexample 
//添加用戶ftpexample,指定到新建的家目錄,將虛擬用戶對(duì)應(yīng)到這個(gè)系統(tǒng)賬號(hào)上,這個(gè)
賬號(hào)無需設(shè)置密碼及登錄Shell (另外 如果用其他本地用戶,那么該本地用戶不能再用原來的賬號(hào)密碼登錄了)

# chmod 755 /home/ftpexample/  
//調(diào)整權(quán)限以允許瀏覽目錄

//下面的vsftpd.conf中配置:   
//guest_username=ftpexample      //指定映射的系統(tǒng)用戶名稱
  
  • 4.修改主配置文件
# vi /etc/vsftpd/vsftpd.conf

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

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

guest_enable=YES#啟用映射功能
guest_username=ftpexample#指定映射的系統(tǒng)用戶名稱
pam_service_name=vsftpd_login.pam#指定新的PAM認(rèn)證文件
user_config_dir=/etc/vsftpd/userconf#(自建配置)用戶配置文件夾,需要?jiǎng)?chuàng)建 
max_clients=300#(自建配置)設(shè)置FTP服務(wù)器最大接入客戶端數(shù)為300個(gè) 
max_per_ip=10#(自建配置)設(shè)置每個(gè)IP地址最大連接數(shù)為10個(gè) 

pasv_enable=YES#         //(自建配置)允許PASV模式進(jìn)行數(shù)據(jù)傳輸 
pasv_min_port=65341#     //(自建配置)PASV模式下數(shù)據(jù)傳輸所使用port范圍下界 
pasv_max_port=65351#     //(自建配置)PASV模式下數(shù)據(jù)傳輸所使用port范圍上界
...
 
  • 5.建立虛擬賬戶的配置文件
 # mkdir /etc/vsftpd/userconf (option)
 # cd /etc/vsftpd/userconf 
 
 創(chuàng)建相關(guān)用戶配置文件
 # touch saupload
 # touch sadownload
 # touch saadmin
 
 配置文件內(nèi)容,設(shè)置具體的權(quán)限:
 
 
 write_enable=YES 允許寫入
 download_enable=NO 是否能下載
 anon_world_readable_only=NO 允許瀏覽FTP目錄和下載
 anon_upload_enable=YES 允許虛擬用戶上傳文件
 anon_mkdir_write_enable=YES 允許虛擬用戶創(chuàng)建目錄
 anon_other_write_enable=YES 允許虛擬用戶執(zhí)行其他操作(如改名、刪除)
 anon_umask=022 上傳文件的掩碼,如022時(shí),上傳目錄權(quán)限為755,文件權(quán)限為644(例如供http訪問)
 local_root=/ftproot/admin 指定虛擬用戶的虛擬目錄(虛擬用戶登錄后的主目錄)

 # vi saupload  
    //可以:上傳,創(chuàng)建文件夾, 查看下載文件 不能:刪除,重命名
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    
    //可以:上傳,創(chuàng)建文件夾, 查看 不能:刪除,重命名,下載文件
    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
    
    //所有權(quán)限:上傳,創(chuàng)建文件夾 查看下載文件 重命名 刪除
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
  • 重啟服務(wù),登錄相關(guān)虛擬用戶名密碼,進(jìn)行測(cè)試
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容