<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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等
效能好、下載速度快、單機可支援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使用的賬號也是虛擬賬號
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 ''$'265347327''Ӻ'$'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 0 0 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 0 0 0 Dec 08 10:56 12345 -rw-r--r-- 1 1000 1000 1659 Dec 08 10:59 anaconda-ks.cfg drwxrwxrwx 2 0 0 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 0 0 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 #表示的是黑名單
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 required pam_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 required pam_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伺服器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45