centos7之vsftp安裝和使用


日常用作中,我們常用的是windows的共享,但是我們都知道windows運行不穩定。原來我們用的是centos6.5上的vsftpd,最近決定把centos6.*上的服務都移植到centos7上,好了,不廢話了,下面我們來看常用的功能。

服務器初始化操作:

1、為了調試順利,關閉selinux,firewall,iptables

2、如果不允許root賬戶直接登錄,可以設置sshd_config

3、根據個人需求安裝自己需要的程序。

yum install gcc lrzsz vim wget

科普 

Port模式(主動模式):

當客戶端C向服務端S連接后,使用的是Port模式,那么客戶端C會發送一條命令告訴服務端S(客戶端C在本地打開了一個端口N在等着你進行數據連接),當服務端S收到這個Port命令后 就會向客戶端打開的那個端口N進行連接,這種數據連接就生成了。

Pasv模式(被動模式):

當客戶端C向服務端S連接后,服務端S會發信息給客戶端C,這個信息是(服務端S在本地打開了一個端口M,你現在去連接我吧),當客戶端C收到這個信息后,就可以向服務端S的M端口進行連接,連接成功后,數據連接也建立了。

 

環境介紹:

  centos7.4

  ip:192.168.1.238

  client:Win10

 

開始安裝

 1、yum安裝vsftp

yum -y install vsftpd

2、啟動服務

systemctl start vsftpd.service

3、配置文件路徑

/etc/vsftpd

 

功能一(匿名):

  1、首先我們在企業中ftp服務器,一般情況下都會有個共享服務器,允許員工下載一些公司的軟件或者常用的軟件包(方便,不用再取外網去下載,也省帶寬)

  2、vsftp提供了匿名登錄,默認anonymous_enable=YES的情況下,就啟用了匿名訪問,這種情況下你只能把需要給用戶的文件,存放到/var/ftp/pub下(默認路徑),如果想更改的話需要添加anon_root= /data/pub,后面的路徑就是匿名登錄后實際訪問的目錄。如果,總是那么多如果,匿名用戶也需要上傳的功能的話(一般情況下不會的)

 1 anonymous_enable=YES  #允許匿名訪問
 2 anon_root= /data/pub     #匿名訪問的本地實際目錄
 3 local_enable=YES            
 4 anon_upload_enable=YES # 允許匿名用戶上傳文件(須將全局的write_enable=YES,默認YES)
 5 anon_mkdir_write_enable=YES  #允許匿名用戶創建目錄
 6 write_enable=YES
 7 local_umask=022
 8 dirmessage_enable=YES
 9 xferlog_enable=YES
10 connect_from_port_20=YES
11 xferlog_std_format=YES
12 listen=NO
13 listen_ipv6=YES
14 
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES
vsftpd.conf

   3、我們設置了匿名訪問的目錄是/data/pub里面,還是上傳不了文件,有人說直接改成777就可以,但是改成777就無法訪問了,這是由於vsftpd的安全性設置,我們需要在pub里面再創建一個upload的文件(文件夾名字隨便起),給他一個777的權限就OK了。

 

功能二(虛擬用戶):

 1、首先修改配置文件

備份配置文件
#cp vsftpd.conf vsftpd.conf.bak  
#echo ‘’ > vsftpd.conf
#vim /etc/vsftpd/vsftpd.conf

2、配置文件內容(虛擬用戶必須關閉虛擬用戶anonymous_enable=NO)

anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd

use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120

data_connection_timeout=120
guest_enable=YES
guest_username=ftpuser

user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES

pasv_min_port=10060
pasv_max_port=10090

accept_timeout=5
connect_timeout=1

 

 3、創建宿主用戶

# 創建用戶 ftpuser 指定 `/home/vsftpd` 目錄

useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser

# 設置用戶 ftpuser 的密碼

passwd ftpuser

# 把 /home/vsftpd 的所有權給ftpuser.root

chown -R ftpuser.root /home/vsftpd

 

4、建立虛擬用戶文件

touch /etc/vsftpd/vuser_passwd
# 編輯虛擬用戶名單文件:(
# 第一行賬號,第二行密碼,注意:不能使用root做用戶名,系統保留)
vi /etc/vsftpd/vuser_passwd 
# 編輯內容,下面是 vuser_passwd 內容
ftp1
12345678
ftp2
12345678
:wq!#保存退出

 

5、生成虛擬用戶數據文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db

  

6、創建用戶配置

mkdir /etc/vsftpd/vuser_conf  # 建立虛擬用戶個人vsftp的配置文件
cd /etc/vsftpd/vuser_conf     # 進入目錄
touch ftp1 ftp2

 

每個文件(ftp1和ftp2寫入如下內容,local_root=/home/vsftpd/ftp1#這里寫入這個用戶的實際存儲路勁)

local_root=/home/vsftpd/ftp1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

 

7、創建用戶目錄

#mkdir -p /home/vsftpd/ftp1
#mkdir -p /home/vsftpd/ftp2

  

8、服務運維

systemctl restart vsftpd.service  # 重啟服務
systemctl start vsftpd.service    # 啟動服務
systemctl status vsftpd.service   # 服務狀態查看

  

9、生成虛擬用戶的PAM文件

# cd /etc/pam.d/
備份vsftpd文件
#cp vsftpd vsftpd.bak

修改vsftpd文件內容(加入第二和第三行,下面的都全部注釋,注意下面是64位操作系統,如果是32位的話lib64需要改成lib)

#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth

 

 

 10、客戶端調試

 1、首先每次更改配置需要重啟vsftpd服務。

 2、上面每個配置文件中的內容最好是手動鍵入(曾經的我直接粘貼進去,cat就是沒問題,但是粘貼進去就是不行)

    3、客戶端windows打開cmd到后台進行連接,網頁和資源管理器里面都會有緩存也看不到報錯。

 4、服務器tail -f /var/log/secure查看日志(也可以tail -f /var/log/messages,這個看不出什么,前者更精准)

    5、客戶端報錯示例(坑了我好久,它說chroot沒有讀到/etc/vsftpd/chroot_list這個文件,所以我們新建這個文件就行,記得重啟服務)。

 6、如果虛擬用戶登錄到自己的宿主目錄后,不能上傳文件的話,服務器端需要在宿主目錄里面再新建一個文件夾,給這文件夾777權限,就可以了(直接把宿主目錄設置777就會登錄不了)

 7、新增用戶的話,需要在/etc/vsftpd/vsuser.passwd里面追加用戶(刪除就是刪除用戶),記得使用db_load重新生成vsuser.passwd文件即可,vuser_confi里面新建一個新建賬戶的權限文件,宿主目錄記得新建存儲文件。

 8、建議使用ftp工具和cmd驗證

C:\Users\Administrator>ftp  192.168.1.238
連接到 192.168.1.238220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.1.238:(none)): ftp1
331 Please specify the password.
密碼:
500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
500 OOPS: priv_sock_get_result
遠程主機關閉連接。

 

  6、連接成功

C:\Users\Administrator>ftp  192.168.1.238
連接到 192.168.1.238。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.1.238:(none)): ftp1
331 Please specify the password.
密碼:
230 Login successful.

  

11、修改端口號

1、在/etc/vsftpd/vsftpd.conf文件中增加listen_port=2121(這里修改為2121)

2、在vim /etc/services文件中修改如下內容

ftp             2121/tcp
ftp             2121/udp 

注意:上面修改的只是鏈接端口號,既然更改了連接端口號,別忘記訪問的時候修改端口。

 

既然我們設置的是被動模式(服務器被動打開數據端口,只有在數據鏈接的時候才會使用,下面我們用ftp工具能成功連接,當打開某個文件夾的時候(請求數據的時候),才會使用該端口,但是我這里使用了iptables,之允許了2121通過我們設置的是10060到10090端口,具體如下)

cat /etc/vsftpd/vsftpd.conf

設置iptables就可以了

 

 參考地址:

https://blog.csdn.net/hanchao_h/article/details/72731996?locationNum=11&fps=1

http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE#.E9.85.8D.E7.BD.AEPAM.E6.96.87.E4.BB.B6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM