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

使用vsftpd服務傳輸文件

1 安裝vsftpdhtml

[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客戶端軟件linux

[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,且匿名用戶沒有上傳、建立、重命名、刪除功能.可是具備下載功能.apache

服務開啓後直接訪問vim

image

建立文件夾被拒絕安全

image

重命名失敗服務器

image

咱們來修改配置文件讓匿名用戶能夠上傳文件,編輯配置文件vim /etc/vsftpd/vsftpd.conf,修改成以下內容tcp

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 ftp@192.168.56.15:~> 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 vip@192.168.56.15:~> 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

相關文章
相關標籤/搜索