国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

ubuntu1804搭建FTP服務器的詳細教程

瀏覽:151日期:2023-03-25 09:40:44

搭建FTP服務器

FTP的工作原理:

FTP:File Transfer Protocol ,文件傳輸協議。屬于NAS存儲的一種協議,基于CS結構。

ftp采用的是雙端口模式,分為命令端口和數據端口,命令端口對應命令通道,數據端口對應數據通道。

命令端口:FTP服務器的命令端口默認是tcp/21

數據端口:隨機

兩種工作模式:主動模式和被動模式

主動模式:FTP服務器主動連接客戶端,這個時候FTP服務器的數據端口使用的是20端口。

被動模式:客戶端主動連接FTP服務器,這時候FTP服務器的數據端口是隨機的。

FTP的工作過程:

1.服務端開啟對21端口的監聽。
2.客戶端發起對服務端的連接請求,通過服務器的21端口連接到服務器。此時建立起了命令通道,命令通道用于傳輸和通信相關的一些指令。
3.建立數據通道
  如果是主動模式:服務端會使用20端口主動連客戶端的一個隨機端口。
  如果是被動模式:客戶端使用一個隨機端口連接服務端的一個隨機端口
4.使用數據通道進行數據的傳輸。

探測端口是否打開的方法:

telnet工具:

例如:查看22端口是否開啟

#格式:telnet host port #如果能響應則端口就是打開的

#如果telnet能響應則端口就是打開的
[root@CentOS8 ~]# telnet 10.0.0.12 22
Trying 10.0.0.12...
Connected to 10.0.0.12.
Escape character is "^]".
SSH-2.0-OpenSSH_8.0

nmap工具:

[root@HAproxy ~]# nmap 10.0.0.66 -p 21
Starting Nmap 7.70 ( https://nmap.org ) at 2022-12-08 13:37 CST
Nmap scan report for 10.0.0.66
Host is up (0.00033s latency).

PORT   STATE SERVICE
21/tcp open  ftp
MAC Address: 00:0C:29:29:03:AF (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds

實現FTP的相關軟件:

windows中的相關軟件:Filezilla、IIS

Filezilla官網: https://filezilla-project.org/index.php

linux中的相關軟件:

服務端:vsftpd、Wu-ftpd等

vsftpd官網: https://security.appspot.com/vsftpd.html

客戶端:ftp、wget、curl等

VSFTP

性能好、下載速度快、單機可支持15k并發量

VSFTP的安裝和配置:

ubuntu安裝vsftpd:

[root@HAproxy vsftpd]# apt install vsftpd -y

# 說明:vsftpd搭建的ftp服務器默認只允許匿名用戶連接 匿名用戶包括:ftp、anonmous。

# ubuntu1804 默認不允許匿名

訪問ftp服務器的三種方式:

1. 匿名賬號訪問:ftp或anonymous 
2. FTP服務器的本地賬號訪問:例如linux里面的root等用戶賬號
3. 虛擬賬號訪問:
    虛擬賬號:操作系統中不存在的賬號,專用于對應服務的賬號。
    例如登錄mysql使用的賬號也是虛擬賬號

VSFTPD的相關配置

FTP服務器的基礎配置:

配置文件格式:option=value   # 注意:= 前后不要有空格

端口修改:

局域網內使用,端口一般不用修改

FTP服務器默認端口修改:

# 默認客戶端發起對服務端的連接請求,通過服務器的21端口連接到服務器
listen_port=2121   # 指定ftp服務器的端口是2121

FTP服務器主動模式數據通道端口修改:

# 更改數據通道主動模式服務端的端口:一般不用修改
connect_from_port_20=YES
ftp_data_port=20 (默認)  # 指定主動模式的端口

FTP服務器被動模式的端口范圍:

# 設置服務端被動模式的端口范圍:  被動模式:客戶端主動連服務端 服務器端的數據通道端口隨機
# 服務端被動模式的端口范圍一般不用修改
pasv_min_port=6000   # 0為隨機分配,端口范圍會影響客戶端的并發數
pasv_max_port=6010   # 表示被動模式端口范圍是6000-6010 一共11個端口可用

注意:

# 使用linux的客戶端工具連接ftp服務端時:客戶端默認使用被動模式  例如:ftp

# 使用windows的客戶端工具連接ftp服務端時:客戶端默認使用主動模式 例如:Filezilla

FTP服務器的時間設置:

# 設置ftp服務器的時間為本地時間:(一般不用修改。有些客戶端能自動校準時間)

use_localtime=YES   # 使用當地時間(默認為NO,使用GMT)

FTP服務器匿名用戶的相關設置

FTP服務器默認只允許匿名用戶登錄,匿名用戶包括ftp或anonymous。

匿名用戶:在客戶機上不存在的用戶叫做匿名用戶,匿名用戶是單獨為特定服務效力的用戶。例如FTP服務器的ftp用戶,mysql的root用戶等都是匿名用戶。

# 設置允許匿名用戶登錄 centos7默認就允許匿名用戶登錄
anonymous_enable=YES     # 支持匿名用戶,默認不允許匿名

# 設置允許匿名用戶使用空密碼登錄。
no_anon_password=YES     # 匿名用戶略過口令檢查 , 默認NO,表示不輸入匿名用戶的密碼進行登錄

匿名用戶權限設置

# 設置匿名用戶能上傳文件到FTP服務器
anon_upload_enable=YES     # 允許匿名上傳,注意:文件系統權限

# 設置匿名用戶能在FTP服務器上創建目錄文件
anon_mkdir_write_enable=YES  #允許匿名創建文件夾

說明:

# 跨網絡傳輸數據需要注意的問題:
# (1)服務自身:服務本身是否允許
# (2)文件系統的權限:是否具備文件系統的寫權限

例如:雖然開啟了允許匿名用戶上傳文件,但是文件對這個用戶沒有寫權限,照樣上傳不上去

說明:設置文件權限的時候,不能給用戶的根目錄寫權限,只能給子目錄寫權限,否則連接的時候報如下錯誤

500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection

匿名用戶上傳的文件屬性設置

# 設置匿名用戶的上傳文件的默認的所有者和權限
chown_uploads=YES  # 默認NO YES表示允許修改上傳文件的權限和所有者

chown_username=wang# 指定匿名用戶上傳文件的文件所有者(如果不指定,文件的屬主就是這個匿名用戶)

chown_upload_mode=0644     # 指定上傳文件的文件權限

例如:不設置匿名用戶上傳的文件屬性

#文件的屬主就是這個匿名用戶
root@ubuntu1804:/srv/ftp/tmp# ll
-rw------- 1 ftp  ftp    1659 Dec  7 21:37  anaconda-ks.cfg 
-rw------- 1 ftp  ftp  258449 Dec  7 21:20 ""$"\265\347\327""?"$"\317""?.pdf"
-rw------- 1 ftp  ftp   77703 Dec  7 21:20  ZKZ_4224961_20201023210611127.pdf
-rw------- 1 ftp  ftp  247706 Dec  7 21:30 xxxxxx.pdf"

下載

默認下載FTP服務器上的文件,只有所有人都具有讀權限的文件才能下載。

# 方法一:
anon_world_readable_only=NO # 只能下載全部讀的文件, 默認YES,表示只有所有人都具有讀權限的文件才能下載

# 方法二:設置上傳文件的默認權限
anon_umask=0333       # 指定匿名上傳文件的umask,默認077,注意:0333中的0不能省略   (777-333=444)

刪除和修改

# 默認情況是傳上去了就不能刪除了
anon_other_write_enable=YES   # 可刪除和修改上傳的文件,默認NO ,改為yes

使用FTP服務器的系統用戶登錄FTP服務器相關設置

使用FTP服務器上面的系統用戶進行登錄。

# 設置允許系統用戶登錄ftp服務器并上傳文件:
local_enable=YES   # 是否允許本地用戶登錄,YES表示允許

write_enable=YES   # 是否允許本地用戶上傳文件,YES表示允許

local_umask=022    # 指定系統用戶上傳文件的默認權限對應umask

系統用戶的相關權限設置

local_enable=YES   # 是否允許本地用戶登錄,YES表示允許

write_enable=YES   # 是否允許本地用戶上傳文件,YES表示允許

local_umask=022    # 指定系統用戶上傳文件的默認權限對應umask

FTP服務器的虛擬用戶設置

使用系統用戶登錄FTP服務器的時候,統一將所有系統用戶都映射成某一個guest用戶。

可以映射為任何一個用戶,但這個用戶必須要在FTP服務器上面存在才行。不一定是ftp這個用戶,可以映射成任何一個系統賬號。

guest_enable=YES     # 所有系統用戶都映射成某一個guest用戶

guest_username=ftp   # 配合上面選項才生效,指定guest用戶 

local_root=/ftproot  # 指定guest賬號登錄進來映射的目錄 所有的操作系統用戶登錄進來都是這個目錄(如果不指定就在guest_username這個用戶的家目錄里面)

#設置每個用戶都擁有獨立的配置
user_config_dir=/etc/vsftpd/conf.d/  # 每個用戶獨立的配置文件目錄  這里可以針對不同的用戶放不同的配置

禁錮設置

禁錮所有系統用戶在家目錄中,不能cd到其它目錄。因為使用系統用戶登錄以后,默認能隨便切換到其它目錄里面去。

#不允許用戶隨便切換目錄,只能在家目錄中
chroot_local_user=YES #禁錮系統用戶,默認NO,即不禁錮
# 此時ftp會把對應用戶的家目錄作為根目錄,如果這個家目錄存在寫權限則登錄的時候會提示錯誤相關錯誤信息。

其它設置

設置ftp服務器的日志:

# vsftpd默認使用的就是wu-ftp的日志格式,vsftpd日志:默認不啟用。可以手動啟用
# wu-ftp 日志:默認啟用
xferlog_enable=YES     # 啟用記錄上傳下載日志,此為默認值
xferlog_std_format=YES # 使用wu-ftp日志格式,此為默認值
xferlog_file=/var/log/xferlog  #可自動生成, 此為默認值
# vsftpd日志:默認不啟用
dual_log_enable=YES   # 使用vsftpd日志格式,默認不啟用
vsftpd_log_file=/var/log/vsftpd.log   # 可自動生成, 此為默認值

設置用戶使用客戶端連接ftp服務器后的提示信息:

# 方法一:
ftpd_banner="welcome to mage ftp server"
# 方法二:將提示信息存放到一個文件中
banner_file=/etc/vsftpd/ftpbanner.txt

范例:ubuntu1804 配置匿名用戶訪問FTP服務器

#1. 創建對應的目錄
root@ubuntu1804:~# mkdir /data
root@ubuntu1804:~# mkdir /data/data
root@ubuntu1804:~# chmod 777 /data/data  #簡單粗暴的方法
# root@ubuntu1804:~# setfacl -m u:ftp:rwx /data/data  # 給ftp用戶權限

#2. 修改配置文件
root@ubuntu1804:~# vim /etc/vsftpd.conf
anonymous_enable=YES
no_anon_password=YES

anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=NO
write_enable=yes
# allow_writeable_chroot=YES  #對根目錄的寫權限,匿名用戶不生效
chroot_local_user=YES
anon_root=/data  #指定匿名用戶登錄進來后的根目錄,如果不加就在該用戶的家目錄

#3. 重啟服務
root@ubuntu1804:~# systemctl status vsftpd.service

#4. 測試
[root@HAproxy ~]# ftp 10.0.0.66  #連接到FTP服務器
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): ftp
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd  
257 "/" is the current directory
ftp> ls
227 Entering Passive Mode (10,0,0,66,235,199).
150 Here comes the directory listing.
-rw-r--r--    1 00       0 Dec 08 10:33 12345
drwxr-xr-x    2 111      115  4096 Dec 08 10:38 data
226 Directory send OK.
ftp> cd data  #進入數據目錄
250 Directory successfully changed.
ftp> !ls
12345  abc  anaconda-ks.cfg
ftp> put 12345  #上傳文件
local: 12345 remote: 12345
227 Entering Passive Mode (10,0,0,66,158,145).
150 Ok to send data.
226 Transfer complete.
ftp> ls
227 Entering Passive Mode (10,0,0,66,157,235).
150 Here comes the directory listing.
-rw-------    1 111      115     4 Dec 08 10:37 123
-rw-------    1 111      115     0 Dec 08 10:42 12345
226 Directory send OK.
ftp> get 123  #下載文件
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,67,112).
150 Opening BINARY mode data connection for 123 (4 bytes).
226 Transfer complete.
4 bytes received in 2.1e-05 secs (190.48 Kbytes/sec)
ftp>

范例:設置允許FTP服務器的系統用戶來登錄ftp服務器

# 創建測試目錄
root@ubuntu1804:~# mkdir /ftproot
root@ubuntu1804:~# chmod 777 /ftproot
root@ubuntu1804:~# setfacl -m u:ftp:rwx /ftproot

#更改配置文件
local_enable=YES
write_enable=YES
local_umask=022
local_root=/ftproot
allow_writeable_chroot=YES  #允許對
chroot_local_user=YES

#測試
[root@HAproxy ~]# ftp 10.0.0.66
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): tom  #如果這個用戶在FTP服務器上不存在,需要使用useradd -m xx創建
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,0,0,66,60,121).
150 Here comes the directory listing.
-rw-r--r--    1 00       0 Dec 08 10:56 12345
-rw-r--r--    1 1000     1000 1659 Dec 08 10:59 anaconda-ks.cfg
drwxrwxrwx    2 00    4096 Dec 08 10:58 data
-rw-r--r--    1 1000     1000 1198 Dec 08 10:59 notepad++.exe - ??·??.lnk
226 Directory send OK.
ftp> !ls
123  12345  abc  anaconda-ks.cfg
ftp> put 123  #上傳文件
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,57,52).
150 Ok to send data.
226 Transfer complete.
4 bytes sent in 7.4e-05 secs (54.05 Kbytes/sec)
ftp> get anaconda-ks.cfg  #下載文件
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (10,0,0,66,28,156).
150 Opening BINARY mode data connection for anaconda-ks.cfg (1659 bytes).
226 Transfer complete.
1659 bytes received in 9.1e-05 secs (18230.77 Kbytes/sec)
ftp> 

范例:設置系統用戶登錄FTP服務器后統一映射為一個虛擬用戶

#1. 創建目錄文件
root@ubuntu1804:~# mkdir /ftproot
root@ubuntu1804:~# chmod 777 /ftproot

#2. 修改配置文件
root@ubuntu1804:~# vim /etc/vsftpd.conf
local_enable=YES
write_enable=yes

guest_enable=YES
guest_username=ftp

chroot_local_user=YES  #禁錮

local_root=/ftproot
#因為映射為了虛擬用戶 所以要配置虛擬用戶的相關權限
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=NO

allow_writeable_chroot=YES #允許對根目錄有寫權限

# 3.重啟服務
root@ubuntu1804:~# systemctl restart  vsftpd.service

# 4. 測試
[root@HAproxy ~]# ftp 10.0.0.66  #連接FTP服務器
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): tom  #FTP服務器的系統用戶登錄
331 Please specify the password.
Password:   #輸入密碼
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> !ls
123  12345  abc  anaconda-ks.cfg
ftp> put abc  #上傳文件
local: abc remote: abc
227 Entering Passive Mode (10,0,0,66,143,226).
150 Ok to send data.
226 Transfer complete.
4 bytes sent in 6.6e-05 secs (60.61 Kbytes/sec)
ftp> get desktop.ini #下載文件
local: desktop.ini remote: desktop.ini
227 Entering Passive Mode (10,0,0,66,45,217).
150 Opening BINARY mode data connection for desktop.ini (474 bytes).
226 Transfer complete.
474 bytes received in 0.000216 secs (2194.44 Kbytes/sec)
ftp> !ls  #查看下載的文件
123  12345  abc  anaconda-ks.cfg  desktop.ini

范例:將系統用戶映射為一個指定的系統用戶

#1. 創建目錄
root@ubuntu1804:~#  mkdir /ftproot
root@ubuntu1804:~#  chmod 777 /ftproot

#2. 修改配置文件  和上面的配置文件一樣
local_enable=YES  #允許本地用戶登錄
write_enable=YES  #允許本地用戶上傳文件
local_umask=022   #允許本地用戶上傳文件的權限
local_root=/ftproot #指定用戶的目錄
 
allow_writeable_chroot=YES #允許對根目錄有寫權限

chroot_local_user=YES  #禁錮用戶

guest_enable=YES  #允許映射為指定用戶
guest_username=bob  #系統用戶bob

anon_other_write_enable=yes
anon_upload_enable=yes  #
anon_mkdir_write_enable=yes
anon_world_readable_only=NO

#3. 重啟服務
root@ubuntu1804:~# systemctl restart  vsftpd.service

#4. 測試
[root@HAproxy ~]# ftp 10.0.0.66
Connected to 10.0.0.66 (10.0.0.66).
220 (vsFTPd 3.0.3)
Name (10.0.0.66:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,0,0,66,194,152).
150 Here comes the directory listing.
drwx------    2 1001     1001 4096 Dec 08 11:47 157
drwxrwxrwx    2 00    4096 Dec 08 11:33 data
226 Directory send OK.
ftp> !ls
123  12345  abc  anaconda-ks.cfg  desktop.ini
ftp> put 123  #上傳
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,150,72).
150 Ok to send data.
226 Transfer complete.
4 bytes sent in 5.5e-05 secs (72.73 Kbytes/sec)
ftp> get 123 #下載
local: 123 remote: 123
227 Entering Passive Mode (10,0,0,66,171,38).
150 Opening BINARY mode data connection for 123 (4 bytes).
226 Transfer complete.
4 bytes received in 9.5e-05 secs (42.11 Kbytes/sec)

注意事項

將登錄的目錄作為了當前用戶的根目錄,但是FTP服務器的根站點要求這個登錄的用戶對他沒有寫權限。

例如使用wang用戶進行登錄,對用戶進行了禁錮的操作,使用wang登錄的時候,就把/homt/wang作為了根,但是wang對這個目錄有寫權限,所以登錄就會報錯。

解決方法:

# 方法一:
chomod 555 /home/wang #取消寫權限

#方法二:
allow_writeable_chroot=YES  #允許對家目錄的寫權限

黑名單、白名單

chroot_list_enable=YES   #默認是NO  YES表示要啟用chroot_list_file  開啟名單

chroot_list_file=/etc/vsftpd/chroot_list  #里面存放用戶名 

白名單:默認都不能訪問,只有名單里面的才能訪問。

chroot_local_user=YES  #禁錮所有系統用戶在家目錄中
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list  #表示的是白名單

黑名單:默認都能訪問,名單里面的不能訪問

chroot_local_user=NO  #不禁錮所有系統用戶在家目錄中
chroot_list_enable=YES  #設置允許或者拒絕的用戶列表,YES標識啟用這個列表
chroot_list_file=/etc/vsftpd/chroot_list  #表示的是黑名單

PAM模塊實現用戶訪問控制

root身份不能連接FTP服務器的原因就是使用pam來限制的,因為ftp是明文傳輸用戶密碼的。為了安全不允許root登錄ftp服務器。

vsftpd利用pam來控制用戶的訪問。

# vsftpd中的默認配置:
pam_service_name=vsftpd  #vsftpd指的就是/etc/pam.d/vsftpd這個文件

------------------------------------------------------------------------------------------------------------

root@ubuntu1804:/etc/pam.d# vim vsftpd
# Standard behaviour for ftpd(8).       #放入這個文件的用戶是被拒絕登錄FTP服務器的
auth    requiredpam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth    requiredpam_shells.so

------------------------------------------------------------------------------------------------------------
root@ubuntu1804:/etc/pam.d# vim /etc/ftpusers  #這個文件里面的用戶都是禁止登陸的
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).
  
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

并發連接數設置

# 同一時間允許多少個用戶連接
max_clients=1000  #默認值是不受限制的

#每個IP同時發起的最大連接數
max_per_ip=0   #默認不受限制

速率控制

# 匿名用戶的最大傳輸速率,以字節為單位,比如:1024000表示1MB/s 
anon_max_rate=0  #默認不受限制

# 本地用戶的最大傳輸速率
local_max_rate=0  #默認不受限制

到此這篇關于ubuntu1804搭建FTP服務器的方法的文章就介紹到這了,更多相關ubuntu1804搭建FTP服務器內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: FTP
主站蜘蛛池模板: 日韩一级精品久久久久 | 99精品国产在热久久 | 日韩黄色一级片 | 国产精品久久久久精 | chinese性老妇中国 | 国内精品视频成人一区二区 | 韩国欧洲一级毛片 | 亚洲欧美日韩在线观看二区 | 中文字幕va一区二区三区 | 91精品一区二区综合在线 | 成人丁香乱小说 | 欧美一及 | 成人欧美一区二区三区 | 成年女人免费观看 | 亚洲精品自产拍在线观看 | 国产第四页| 香蕉久久久久久狠狠色 | 国产欧美一区二区精品久久久 | 看中国一级毛片 | 99久久99久久久精品久久 | 中文字幕在线视频观看 | 亚洲最大看欧美片网站 | 欧美一级欧美一级高清 | 色樱桃影院亚洲精品影院 | 亚洲国产成人久久一区久久 | 亚洲日韩aⅴ在线视频 | 欧美精品一区二区三区免费观看 | 波多野结衣视频免费观看 | 亚洲成人高清在线 | 成 人 a v黄 色| 日本一区二区三区在线 视频观看免费 | 欧美日韩一级黄色片 | 三上悠亚免费一区二区在线 | av在线亚洲男人的天堂 | 狼人 成人 综合 亚洲 | 91资源在线| 久久一日本道色综合久久m 久久伊人成人网 | 午夜影院黄色片 | 一级毛片免费视频网站 | 成人免费一级毛片在线播放视频 | 久草在线在线观看 |