現有作業
1. (其它)
ftp服務器搭建,使用你姓名學號命名的賬號登陸,以及路徑下存放一個你學號和姓名命名的文件。能夠在ftp中顯示出來,同時在本地虛擬機上通過命令來上傳和下載一個你宿舍號同名文件。(全部需要附帶mac地址截圖)
yum install vsftpd -y //安裝服務 yum install ftp -y //安裝客戶端
在/var/ftp/下創建自己的學號+姓名的賬號
useradd -d /var/ftp/20190412430233lny -s /sbin/nologin -g ftp 20190412430233lny
為你的賬號設置密碼 要有大小寫字母+數字+符號 否則無法設置
passwd 20190412430233lny
進入到 etc修改vsftpd配置文件
cd /etc/vsftpd/
ls
vim vsftpd.conf
ins進入輸入模式 如下圖進行操作
改為NO后面再加上這一行
local_root= 如圖所示
esc 然后 :wq保存
配置一下我們創建的ftp文件夾權限
cd /var/ftp/ //進入這個文件夾 ls //查看有什么東西 chmod 777 如圖所示 //給你文件夾配置777權限
cd到當前賬號的文件夾內 創建一個txt文件
cd /var/ftp/20190412430233lny/ //進入這個文件夾 touch 20190412430233lny.txt //新建這個文件
補充:
還要再改一下配置
cd /etc/pam.d/
vim vsftpd
進去后ins 注釋這兩行 esc然后:wq保存一下
關閉防火牆
systemctl stop firewalld
setenforce 0
運行ftp服務
systemctl start vsftpd
PS:如果你用的是阿里雲服務器,我不推薦你們用window自帶dos或者window資源管理器地址欄直接訪問FTP服務
我連阿里雲用window自帶這兩個連遇到的坑點巨多,本地vm搭建的沒啥問題,如果連失敗了請回來這里
去下個filezilla連接工具 主動被動模式切換簡單
然后去阿里雲控制台開放1024/65535端口
請跳過這段內容
https://www.lanzouw.com/iQgf8xnb55c 密碼:9c46
----------
去window資源管理器地址欄輸入
ftp:// 你的ftp服務ip地址
填完賬號密碼后回車 可以看到 我們已經進來了 並且看到了文件txt
創建一個文件夾 沒毛病
復制到桌面 沒毛病
本地虛擬機上通過命令來上傳和下載一個你宿舍號同名文件。
在window資源管理器隨便一個盤符新建一個文件
1、登錄ftp服務器 在當前這個D盤目錄CMD回車 然后輸入
ftp 192.168.3.26
登錄成功
ls pwd 可以查看目錄和當前訪問的路徑
上傳文件
put 22-210-LNY.txt
上傳成功
去那邊康康有沒有
進去了
然后是下載文件 下載學號+姓名那個文件
get 你的文件.txt
會報錯:550 Failed to open file.
去ftp那邊輸入
sestatus -b |grep ftp
注意看上面加粗標紅的,都是off 狀態,然后把他們的狀態改為on
setsebool -P ftp_home_dir 1
setsebool -P ftpd_use_passive_mode 1
開了 重啟一下ftp服務
systemctl restart vsftpd
重新下載一下
成功下載
關於ftp其他詳細配置
安裝ftp服務器
安裝vsftpd
# yum install -y vsftpd
===============================================================================
添加用戶名,用作ftp匿名訪問用戶
# useradd ftpuser
給用戶名設置密碼
# passwd ftpuser
配置文件
# cd /etc/vsftpd/
# vim vsftpd.conf
# 允許匿名訪問
anonymous_enable=YES
# 不允許本地用戶,如root用戶登陸。默認允許
local_enable=NO
#設置本地用戶登錄所在的目錄。默認配置文件中沒有該配置項,本地用戶登錄FTP服務器后所在的目錄為所登錄用戶的主目錄,如:對於root用戶,則為/root目錄
# local_root=/home/ftpuser
# 本地用戶上傳文件權限
local_umask=022
# 匿名用戶上傳文件權限
anon_umask=022
# 允許寫入操作,否則不能上傳文件
write_enable=YES
# 允許匿名用戶上傳文件,需要配合write_enable=yes
anon_upload_enable=YES
# 控制匿名用戶對文件和文件夾的刪除和重命名(自己添加,沒有該配置)
anon_other_write_enable=YES
# 允許匿名用戶創建目錄
anon_mkdir_write_enable=YES
# ftp工具連接成功提示
ftpd_banner=Welcome to blah FTP service.
# 所有用戶均不能切換到上級目錄
chroot_local_user=YES
# 是否啟動限制用戶的名單。YES為啟用,NO禁用。默認禁用
chroot_list_enable=NO
# /etc/vsftpd/user_list文件不生效
userlist_enable=NO
#坑,添加以下配置。不添加此項,文件無法上傳。報錯:550 Permission denied。新版本vsftpd加入了安全需求,切根不允許寫,要添加這個配置並設置為YES才可以
allow_writeable_chroot=YES
#匿名用戶的根目錄。這個非常重要
anon_root=/usr/local/ftpdir
#匿名用戶不要密碼就靠這個
no_anon_password=YES
# 匿名登錄后的使用者
ftp_username=ftpuser
===============================================================================
啟動ftp服務器
注:我這里是把所有防火牆都給關了的
端口是21(有的人線下裝Linux服務器系統時候會安裝一個ftp服務器:pure-ftpd,而且默認是開機自啟,而且端口也是21端口)
啟動之前可以查詢是否有ftp服務在跑着,或者查看21端口是否有程序占用
Linux查詢某個端口是否被占用:netstat -anp | grep 端口號
通過pid查看對應端口使用者:netstat -antup | grep pid
或者查詢管道過濾:ps -ef | grep ftp
===============================================================================
最后ftp服務器啟動命令
# systemctl start vsftpd
附(坑)
ftp客戶端
下載ftp工具測試連接:
# yum install -y ftp
# ftp localhost
或者cmd連接:
ftp 192.168.163.4
或者客戶端工具filezilla連接。火狐瀏覽器訪問鏈接(其它瀏覽器不支持訪問,不建立資源目錄,我不知道為啥):
ftp://192.168.163.4
如果需要輸入密碼,但是不想輸入密碼,就這樣訪問(重點)
ftp://ftpuser:ftpuser@192.168.163.4/
不需要輸入用戶名、密碼訪問ftp服務器終極解決方案
#匿名用戶的根目錄。這個非常重要(注:這個目錄不可以是Linux已有賬號的家目錄)
anon_root=/usr/local/ftpdir
不能上傳文件問題
首先保證匿名用戶登錄根目錄為755權限,例上述:/usr/local/ftpdir
再一個,在/usr/local/ftpdir創建目錄files,權限給777,客戶端就可以在/usr/local/ftpdir/files上傳文件進來了
上傳上來的文件權限太低,瀏覽器下載不了
這個上傳文件的權限不是ftp服務器決定的,決定權限的是上傳的客戶端。我在給設備配置ftp服務器的時候(此時設備就相當於客戶端),上傳上去的文件權限大都夠用的
但是上圖這種情況是確實存在的,我在測試的時候遇到了。這時候如果匿名訪問不了,就這樣:ftp://ftpuser:ftpuser@192.168.163.4/。注:這樣使用ftpuser用戶登錄的話就必須在配置文件中打開local_enable=YES,並且設置本地用戶登錄根目錄local_root=/usr/local/ftpdir(跟匿名登陸根目錄必須一樣的啊)
注:我已經在配置文件中設置了匿名用戶登錄為ftpuser,即ftp_username=ftpuser。為什么匿名用戶下載不了那個軟件,必須使用用戶名和密碼登錄了之后才行呢?不去糾結了,不鑽牛角尖,不過這確是一個可行的解決方案。猜想可能是因為匿名用戶不詢問密碼那個配置,即no_anon_password=YES,但是ftpuser這個系統用戶是有密碼的,所有就出現了這樣的情況,當然我也只是猜想罷了,這個問題就先研究到這…
阿里雲服務器搭建ftp服務器的坑
參考博客:https://blog.csdn.net/newborn2012/article/details/15812821/
按找上述步驟在局域網內是沒有問題的,但是在雲服務器上就有坑要填。因為雲服務器有一個安全組的機制,然后從這個突破口去尋找解決方案。首先將局域網的配置步驟照搬到服務器上,啟動發現無論是瀏覽器還是filezilla客戶端都訪問不了
在解決這個問題之前要了解ftp的兩個工作模式:Port和Pasv。FTP連接一般會有兩個連接,也就是會需要用到兩個端口。一個服務器與客戶端跟進行命令交互的,一個是進行數據傳送的。那兩種工作模式跟兩個連接是怎么搭配起來工作的呢?
假設客戶端為C,服務器端為S(以下簡稱C和S):
l Port模式:當客戶端C和服務端S連接起來后,C會發送一條命令告訴S:“我在本地打開了一個端口N等你進行數據連接”,當S收到這個Port命令后就會向C打開的那個端口N進行數據連接。S主動向C的某個端口進行數據連接,此乃主動模式
l Pasv模式:當客戶端C和服務端S連接起來后,S會發送一條命令告訴C:“我再本地打開了一個端口M你來連接我吧”,當C收到這個消息后就會向S的M端口發起數據連接。S打開端口被C主動連接,此乃被動模式
那我們應該使用哪種工作模式呢?答案是被動(默認工作模式就是被動)。為什么?很簡單,你是在局域網內,你可以連接到雲服務器的某個端口(前提是這個端口放開了),但是雲服務器連接不到你的
FTP模式與數據端口:無論是哪一種工作模式,首先在建立控制連接時候操作是一樣的,都是由客戶端(首先隨機選取一個大於1024以上的端口)和FTP服務器的控制端口21建立連接,並通過該連接傳輸操作指令。兩種工作模式的區別是什么呢?在於使用數據傳輸端口(ftp-data)方式。port mode由FTP服務器指定數據傳輸所使用的端口,默認值為20。pasv mode由FTP客戶端決定數據傳輸端口,客戶端向服務端發出連接請求包含了數據傳輸端口
(重要)
主動模式相關配置(了解):
port_enable=YES|NO:數據連接時取消PORT模式,默認為YES
connetc_from_port_20=YES|NO:控制以PORT模式進行數據傳輸時是否使用20端口,默認是NO(但實際上我用的RHL-CentOS7.6,vsftpd.conf文件中該配置設為YES,該配置生效前提是工作模式為主動的)
ftp_data_port=端口號:設置FTP數據傳輸端口(ftp-data)值,默認值為20。此參數也用於主動模式
port_promiscuous=YES|NO:取消PORT安全檢查,該檢查確保外出的數據只能連接到客戶端上,默認為NO。小心打開此選項(Don't care)
被動模式相關配置:
pasv_enable=YES|NO:允許數據傳輸使用PASV模式,默認為YES,且配置文件中沒有該配置
pasv_min_port=端口號、pasv_max_port=端口號:設置在PASV模式下建立數據傳輸所用端口范圍上界和下界,0表示任意,默認為0。把端口范圍設在比較高的一段范圍內,比如50000-60000,將有助於安全性的提高,我設置的是30000-50000,這個看你自己的啦
pasv_promiscuous=YES|NO:此選項激活時,將關閉PASV模式的安全檢查。該檢查確保數據連接和控制連接是來自同一個IP地址。小心打開此選項。此選項唯一合理的用法是存在於由安全隧道方案構成的組織中,默認值為NO(Don't care)
pasv_address=ip地址:此選項為一個數字IP地址,作為PASV命令的響應,默認值為none,地址是從呼入的連接套接字(incoming connectd socket)中獲取(Don't care)
命令通道端口配置,默認為21
listen_port=21
最后一步,修改配置,使雲服務器上搭建的FTP服務器可以正常使用:
也沒啥要修改的,主要就是加兩個配置(為明確工作模式,我給加上pasv_enable=YES):
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=50000
打開阿里雲服務器30000-50000范圍端口
(完)
客戶端filezilla在連接vsftpd時候要明確加密類型為:只使用明文FTP(不安全)
擴展:pure-ftpd
這個跟vsftpd性質一樣的啊,ftp是個什么玩意,你能看到這里心里就應該很清楚了,我也不再去解釋他的概念、協議一些亂七八糟的東西了
直接進入安裝:
按需安裝pure-ftpd其它依賴,如ep el擴展:yum install -y epel-release
# yum install -y pure-ftpd
在啟動pure-ftpd之前,需要先修改配置文件/etc/pure-ftpd/pure-ftpd.conf
# cd /etc/pure-ftpd
# vim pure-ftp.conf
打開PureDB配置,刪除該行“#”號
PureDB /etc/pure-ftpd/pureftpd.pdb
然后跟vsftpd一樣,設置被動模式數據端口范圍:
passive(被動模式)連接的端口范圍-保持盡可能寬。(我vsftpd也是這么設置的,倆都是30000到50000,方便,而且我沒記錯的話這兒本來就是這個范圍,只不過注釋默認沒打開)
PassivePortRange 30000 50000
建立賬號和文件使用目錄。注意:為了安全,pure-ftpd使用的賬號並非Linux的系統賬號,而是虛擬賬號,然后和Linux系統用戶進行綁定
# mkdir /data/ftp
如果沒有ftpuser賬號的話
# useradd ftpuser
# passwd ftpuser
存儲目錄所有者切換為ftpuser
# chown -R pure-ftp:pure-ftp /data/ftp
創建虛擬賬戶,-u是將虛擬用戶admin與系統用戶ftpuser關聯在一起,也就是說使用admin賬號登錄ftp后,會以ftpuser的身份來讀取和下載文件,-d是指定admin賬戶的家目錄,這樣可以使用戶admin登陸進來就可以也只能訪問其家目錄/data/ftp/
# pure-pw useradd admin -u ftpuser -d /data/ftp
Password:
Enter it again:
創建用戶信息數據庫文件,這一步很關鍵
# pure-pw mkdb
列出當前賬號
pure-pw list
刪除賬號
pure-pw userdel admin….
添加一個測試文件
# touch /data/ftp/123.txt
安裝lftp客戶端軟件,跟ftp一樣,可以理解為也是一個工具
簡介:
# yum install -y lftp
# lftp admin@127.0.0.1
注:這個軟件會在ftp的工作目錄生成兩個隱藏文件:“.”和“..”
客戶端filezilla連接pure-ftpd