Linux基礎學習-使用vsftpd服務傳輸文件

来源:https://www.cnblogs.com/qdlinux/archive/2018/08/14/9475425.html
-Advertisement-
Play Games

使用vsftpd服務傳輸文件 1 安裝 2 安裝 `lftp`客戶端軟體 3 啟動服務並加入開機自啟動 4 查看監聽埠狀態 使用匿名開放模式 服務啟動後預設訪問的目錄為/var/ftp,且匿名用戶沒有上傳、創建、重命名、刪除功能.但是具有下載功能. 服務開啟後直接訪問 創建文件夾被拒絕 重命名失敗 ...


使用vsftpd服務傳輸文件

1 安裝vsftpd

[root@qdlinux ~]# yum install vsftpd
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-22.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================
 Package                    Arch                       Version                           Repository               Size
=======================================================================================================================
Installing:
 vsftpd                     x86_64                     3.0.2-22.el7                      dvd                     169 k

Transaction Summary
=======================================================================================================================
Install  1 Package

Total download size: 169 k
Installed size: 348 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : vsftpd-3.0.2-22.el7.x86_64                                                                          1/1 
  Verifying  : vsftpd-3.0.2-22.el7.x86_64                                                                          1/1 

Installed:
  vsftpd.x86_64 0:3.0.2-22.el7                                                                                         

Complete!
[root@qdlinux ~]# 

2 安裝ftp lftp客戶端軟體

[root@qdlinux ~]# yum install ftp lftp -y
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package ftp.x86_64 0:0.17-67.el7 will be installed
---> Package lftp.x86_64 0:4.4.8-8.el7_3.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================
 Package                  Arch                       Version                             Repository               Size
=======================================================================================================================
Installing:
 ftp                      x86_64                     0.17-67.el7                         dvd                      61 k
 lftp                     x86_64                     4.4.8-8.el7_3.2                     dvd                     752 k

Transaction Summary
=======================================================================================================================
Install  2 Packages

Total download size: 812 k
Installed size: 2.5 M
Downloading packages:
-----------------------------------------------------------------------------------------------------------------------
Total                                                                                  8.7 MB/s | 812 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : lftp-4.4.8-8.el7_3.2.x86_64                                                                         1/2 
  Installing : ftp-0.17-67.el7.x86_64                                                                              2/2 
  Verifying  : ftp-0.17-67.el7.x86_64                                                                              1/2 
  Verifying  : lftp-4.4.8-8.el7_3.2.x86_64                                                                         2/2 

Installed:
  ftp.x86_64 0:0.17-67.el7                                lftp.x86_64 0:4.4.8-8.el7_3.2                               

Complete!

3 啟動服務並加入開機自啟動

[root@qdlinux ~]# systemctl start vsftpd
[root@qdlinux ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

4 查看監聽埠狀態

[root@qdlinux ~]# ss -lntup | grep vsftpd
tcp    LISTEN     0      32       :::21                   :::*                   users:(("vsftpd",pid=1411,fd=3))

使用匿名開放模式

服務啟動後預設訪問的目錄為/var/ftp,且匿名用戶沒有上傳、創建、重命名、刪除功能.但是具有下載功能.

服務開啟後直接訪問

image

創建文件夾被拒絕

image

重命名失敗

image

我們來修改配置文件讓匿名用戶可以上傳文件,編輯配置文件vim /etc/vsftpd/vsftpd.conf,修改為如下內容

anon_upload_enable=YES
anon_umask=022

現在依然無法上傳文件,這是因為ftp的許可權問題導致的,我們將其修改為ftp用戶許可權.

==註意:預設匿名用戶家目錄/var/ftp的許可權是755,這個許可權是不能改變的,切記!==

[root@qdlinux var]# ll -d ftp
drwxr-xr-x 3 root root 30 Aug 13 21:32 ftp

[root@qdlinux var]# chown -Rf ftp /var/ftp/pub

[root@qdlinux var]# ll ftp
total 0
-rw-r--r-- 1 root root  0 Aug 13 21:32 1.txt
drwxr-xr-x 2 ftp  root 19 Aug 13 21:32 pub

現在已經可以上傳文件了,但是只能上傳到ftp/pub目錄中,因為剛纔給的就是這個目錄的許可權.現在就做到了只能上傳文件和下載的目的,但是不能創建文件夾.

上傳文件

image

重命名失敗

image

創建文件夾被拒絕

image

[root@qdlinux var]# ll ftp/pub
total 0
-rw-r--r-- 1 ftp root 0 Aug 13 21:32 2.txt
-rw-r--r-- 1 ftp ftp  0 Aug 13 21:51 new.txt
[root@qdlinux var]# 

如果需要開啟匿名用戶可以創建文件夾功能,修改配置文件如下所示.

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

現在匿名用戶可以上傳文件和下載文件以及創建文件夾.但是不能重命名.

如果需要開啟匿名用戶上傳下載和創建文件夾以及重命名和刪除功能,修改配置文件如下所示.

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022

現在匿名用戶可以做到上傳和下載,創建文件夾和刪除文件夾和文件以及重命名.

上傳文件
image

新建文件夾
image

這是匿名用戶的最大許可權了,一般匿名訪問的話,只要做到下載功能就可以了。網站提供什麼用戶下載什麼。


使用本地用戶模式

示例演示公司內部有一臺FTP和WEB伺服器,FTP的功能主要用於維護網站內容,用於上傳文件、創建目錄、更新網頁等等。公司有兩個部門負責維護任務,他們分別用team1和team2賬號進行管理,要求僅允許team1和team2賬號登錄ftp伺服器,單不能登錄本地系統,並將這兩個賬號的根目錄限製為/var/www/html,不能進去該目錄以外的任何目錄。

前期準備首先安裝apachevsftpd,具體安裝方法這裡就不介紹了。

創建測試賬號team1和team2

[root@qdlinux ~]# useradd -s /sbin/nologin team1 
[root@qdlinux ~]# useradd -s /sbin/nologin team2
[root@qdlinux ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@qdlinux ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.

接下來修改配置文件,這裡在RHEL6中和RHEL7中配置有些不同

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
local_root=/var/www/html
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

可以把不限制的賬戶放到這裡面,創建用戶列表文件,因為此賬戶會訪問到其他目錄.但這樣做事很危險的.

[root@qdlinux ~]# touch /etc/vsftpd/chroot_list
[root@qdlinux ~]# vim /etc/vsftpd/chroot_list 
teamleader

修改apache的根目錄許可權/var/www/html

[root@qdlinux ~]# ll -d /var/www/html/
drwxr-xr-x 2 root root 6 May  9  2017 /var/www/html/
[root@qdlinux ~]# chmod -R o+w /var/www/html/

訪問測試

image

不限制用戶訪問

image

不限制用戶訪問,用戶可以隨意到任何目錄

image

限制用戶訪問,用戶只能在此目錄中,在安全方面相對要好很多.

image

文件上傳後文件擁有者許可權

image


虛擬用戶模式

示例演示為了宣傳公司的產品信息,計劃搭建FTP伺服器,為客戶提供相關資料的下載,僅允許下載產品信息,禁止上傳。公司的合作單位和可以在FTP伺服器上上傳和下載,但是不能刪除數據。

創建用戶進行FTP認證的用戶資料庫文件,其中奇數行為賬戶名,偶數行為密碼。編輯vim /etc/vsftpd/vuser.list

ftp
123456
vip
123456

由於明文的信息既不安全,也不符合讓vsftpd服務程式直接加在的格式,因此需要使用db_load命令用哈希演算法將明文信息文件轉成資料庫文件。在RHEL6中需要安裝db4-utils,在RHEL7中libdb-utils

[root@qdlinux ~]# rpm -qf `which db_load`
libdb-utils-5.3.21-20.el7.x86_64
[root@qdlinux ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
[root@qdlinux ~]# file /etc/vsftpd/vuser.db 
/etc/vsftpd/vuser.db: Berkeley DB (Hash, version 9, native byte-order)

降低資料庫文件的許可權避免其他人看到資料庫文件的內容,然後把明文信息文件刪除。

[root@qdlinux ~]# chmod 600 /etc/vsftpd/vuser.db
[root@qdlinux ~]# ll /etc/vsftpd/vuser.db
-rw------- 1 root root 12288 Aug 14 01:19 /etc/vsftpd/vuser.db

建立用於支持虛擬用戶的PAM文件

vim /etc/pam.d/vsftpd.vu

auth    required        pam_userdb.so   db=/etc/vsftpd/vuser
account required        pam_userdb.so   db=/etc/vsftpd/vuser

建立用戶存儲文件的根目錄以及虛擬用戶映射的系統本地用戶。

[root@qdlinux ~]# useradd -d /var/ftp/share -s /sbin/nologin ftpuser
[root@qdlinux ~]# useradd -d /var/ftp/vip -s /sbin/nologin ftpvip
[root@qdlinux ~]# chmod -R 500 /var/ftp/share/
[root@qdlinux ~]# chmod -R 700 /var/ftp/vip/

修改配置文件

anonymous_enable=NO
local_enable=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vuserconfig
max_clients=300
max_per_ip=10

建立虛擬賬號配置文件

[root@qdlinux ~]# mkdir /etc/vsftpd/vuserconfig
[root@qdlinux ~]# touch /etc/vsftpd/vuserconfig/ftp
[root@qdlinux ~]# touch /etc/vsftpd/vuserconfig/vip

vim編輯/etc/vsftpd/vuserconfig/ftp中的內容

guest_enable=YES
guest_username=ftpuser
anon_world_readable_only=NO
anon_max_rate=50000

vim編輯/etc/vsftpd/vuserconfig/vip中的內容

guest_enable=YES
guest_username=ftpvip
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_max_rate=2000000

測試ftp賬戶

[root@qdlinux ~]# lftp 192.168.56.15 -u ftp,123456
lftp [email protected]:~> ls          
drwx------    5 0        0              97 Aug 13 18:14 grub2
-r--r--r--    1 0        0        11607904 Aug 13 18:13 mariadb-server.rpm

訪問限速測試

image

image

測試vip賬戶

[root@qdlinux ~]# lftp 192.168.56.15 -u vip
Password: 
lftp [email protected]:~> ls          
-rw-------    1 1004     1004      5505024 Aug 13 18:33 kali-linux-2018.2-amd64.iso
-rw-------    1 1004     1004     111017984 Aug 13 18:36 kali-linux-2018.2-amd641.iso
-r--r--r--    1 0        0        11607904 Aug 13 18:30 mariadb-server.rpm

上傳和下載訪問速度測試

image

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Ubuntu17.04下,遇到清空回收站文件時報錯,提示”Failed to delete the item from the trash”,無法清空回收站。 回收站其實就是一個文件夾,存放著被刪掉的文件。 Ubuntu回收站的路徑: 解決方法 打開終端運行以下命令強制清空回收站目錄下的所有文件: ...
  • Bluez支持的features Core Specification 4.2 (GAP, L2CAP, RFCOMM, SDP, GATT) Classic Bluetooth (BR/EDR) Bluetooth Smart (Low Energy) Audio and media (A2DP, ...
  • macOS 開啟 VNC 遠程桌面和 SSH 服務 準備用 macOS 來做為伺服器,既然是伺服器,那不可缺少的是遠程管理,實際上 macOS 自帶 VNC 遠程桌面和 SSH 服務,只是預設沒有開啟,下麵我們來開啟它們。 一、開啟 VNC macOS 開啟 VNC 服務可以實現遠程桌面控制,方法是 ...
  • shell shell是一個命令解釋器,實際是一個程式,/bin/bash,linux中所有的命令都由它來解釋,有自己的語法 shell腳本 以.sh結尾 shell語法+linux命令 註釋: 單行註釋 : # 多行註釋 : :<<c c shell執行方式 bash /path/to/scrip ...
  • 一、nginx.conf結構 events{} #nginx性能 stream{ upstream{ } server{ location{ } } } #四層轉發 http{ upstream{ } ... ...
  • 1. 上面的代碼如下: ****************************************************************************************************************************************** ...
  • 實驗說明: 入門Linux,一般會遇到以下幾個問題: 從哪裡獲取LInux鏡像? 如何通過鏡像文件安裝Linux系統? 安裝實體機還是虛擬機? 安裝完系統如何配置網路? 虛擬機的網路配置與實體機有何不同? 那本章我們針對 網路聯網初始化 進行詳細的講解 實驗環境: 宿主機系統 :Window 10 ...
  • NMap也就是Network Mapper,nmap是在網路安全滲透測試中經常會用到的強大的掃描器,功能之強大,不言而喻。 1 安裝 wget https://nmap.org/dist/nmap-6.00.tar.bz2 tar -xf nmap-6.00.tar.bz2 sudo ./confi ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...