1. 程式人生 > 其它 >ftp安裝配置詳解

ftp安裝配置詳解

一、vsftp安裝
本安裝手冊基於CentOS7.6作業系統,其他作業系統安裝方式除作業系統安裝命令和安裝包不一樣外其他安裝配置類同。
1.1、掛載Linux yum源
先備份/etc/yum.repos.d目錄下其他無用的yum源,然後新增CentOS-Base.repo檔案並新增如下配置。

#vi /etc/yum.repos.d/CentOS-Base.repo
[Centos7.2]
name=CentOS-$releasever - Base Sources
baseurl=ftp://10.10.93.86/pub/Centos7.2
gpgcheck=1
enabled=1
gpgkey=ftp://10.10.93.86/pub/Centos7.2/RPM-GPG-KEY-CentOS-7

#yum clean all
#yum makecache
1
2
3
4
5
6
7
8
9
10
1.2、安裝vsftp

[root@localhost ~]# yum install vsftpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-27.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================
Installing:
vsftpd x86_64 3.0.2-27.el7 base 172 k

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

Total download size: 172 k
Installed size: 353 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-27.el7.x86_64.rpm | 172 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-27.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-27.el7.x86_64 1/1

Installed:
vsftpd.x86_64 0:3.0.2-27.el7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
說明vsftp安裝成功

二、Vsftp配置
2.1、新建vsftp使用者
一般FTP使用者需要具備不允許SSH登陸、鎖定工作目錄、指定使用者工作目錄,建立指令碼如下:

#-s /sbin/nologin 不允許登陸
#-d /data/ftp_path 指定當前使用者根目錄
#-g ftp 指定使用者組
#weblogic 為當前使用者名稱稱
useradd -d /data/ftp_path -g ftp -s /sbin/nologin weblogic
1
2
3
4
5
2.2、vsftp配置檔案
vsftp安裝完成後,在預設的/etc/vsftpd/*資料夾下有幾個配置檔案,具體配置檔案說明如下:

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ll
total 20
-rw------- 1 root root 125 Apr 1 12:55 ftpusers
-rw------- 1 root root 361 Apr 1 12:55 user_list
-rw------- 1 root root 5116 Apr 1 12:55 vsftpd.conf
-rw------- 1 root root 125 Apr 1 12:55 chroot_list
-rwxr--r-- 1 root root 338 Apr 1 12:55 vsftpd_conf_migrate.sh
1
2
3
4
5
6
7
8
2.2.1、ftpusers

ftpusers 該檔案存放的是一個禁止訪問FTP的使用者列表,不受任何配製項的影響,它總是有效,它是一個黑名單。通常為了安全考慮,管理員不希望一些擁有過大許可權的帳號(比如root)登入FTP,以免通過該帳號從FTP上傳或下載一些危險位置上的檔案從而對系統造成損壞。

2.2.2、user_list

user_list則是和vsftpd.conf中的userlist_enable(放開)和userlist_deny(禁止)兩個配置項緊密相關,它可以有效,也可以無效,有效時它可以是一個黑名單,也可以是一個白名單。那麼是什麼的設定決定了它的作用呢?具體介紹如下:

新建兩個使用者tom 和 jim
tom: 在user_list中
jim:不在user_list中

Case 1: userlist_enable=YES, userlist_deny=YES
tom: 拒絕登入
jim: 允許登入

Case 2: userlist_enable=YES, userlist_deny=NO
tom: 允許登入
jim:拒絕登入(如user_list檔案開頭的註釋所述,甚至不會提示輸入密碼,即無登入提示框,直接拒絕連線)

Case 3: userlist_enable=NO,userlist_deny=NO
tom: 允許登入
jim: 允許登入

Case 4: userlist_enable=NO,userlist_deny=YES
tom: 允許登入
jim: 允許登入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2.2.3、chroot_list
chroot_list 檔案預設安裝是不存在的,需要手動新增空內容檔案,主要存放需要鎖定使用者工作目錄的使用者清單,找到vsftpd.conf檔案中chroot_list_file=/etc/vsftpd/chroot_list這個配置項,放開配置。

#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
1
2
3
4
chroot_list_file=/etc/vsftpd/chroot_list這個配置檔案主要存放需要鎖定工作目錄的使用者清單。
對於chroot_local_user與chroot_list_enable的組合效果,可以參考下表:

2.2.4、vsftpd.conf

在這裡插入程式碼片
1
3、啟動vsftp服務
vsftp服務啟動、停止、狀態、開機啟動等操作方法

#啟動服務
systemctl restart vsftpd
#檢視狀態
systemctl status vsftpd
#停止服務
systemctl stop vsftpd
#開機啟動
chkconfig vsftpd on
1
2
3
4
5
6
7
8
4、問題檢查
4.1、ftp無法連線:

1、檢查防火牆是否開通策略
附:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
2、目錄許可權是否正常
drwx------ 4 weblogic ftp 4096 Jun 29 10:05 ftp_path
3、selinux是否有disabled。
[root@comtop ftp_path]# sestatus -b
SELinux status: disabled
[root@comtop ftp_path]# getsebool -a | grep ftp getsebool:
SELinux is disabled
1
2
3
4
5
6
7
8
9
附錄:
附錄網路上vsftpd的相關配置項說明,如有需要請自行配置。
開啟vsftpd的配置檔案,redhat的配置檔案預設為/etc/vsftpd.conf:
要想使用本地使用者登入的話則只需更改下列選項
local_enable 改為YES
chroot_local_user=YES
#當設定為YES時,本地使用者登入後就自動轉到他們的使用者主目錄中去。
#注意!:該選項用安全問題,特別是當用戶有上傳檔案或訪問shell的許可權時.僅在你知道自#己要作什麼時才設定為YES
download_enable=YES
#允許下載,若為NO時則不允許下載。
write_enable=YES
#該選項用於設定是否允許使用會改變FTP檔案系統的命令.這些命令有:STOP,DELE,RNFR,
#RNTO,MKD,RMD,APPE,SITE

下面是翻譯的vsftpd.conf手冊頁
#此為vsftp的配置
#更多詳細資訊,請見man 5 vsftpd.conf
#vsftpd 配置的格式非常簡單,格式

option=value 注:以#開頭的為註釋,將被忽略
以下為Boolean選項,value為YES或NO
listen=YES
#當為YES時,vsftpd將以單獨模式執行.這意味著vsftpd不必以某種inetd執行,而是可以
#直接執行.vsftpd執行後會自己偵聽和操作進入的連線

listen_ipv6=NO
#類似listen選項,但該選項使vsftpd偵聽的地址為IPv6格式的.

allow_anon_ssl=NO
#該選項僅在ssl_enable為YES時才用,若設為YES表示允許匿名使用者通過ssl連線

anon_mkdir_write_enable=NO
#該選項設定為YES時表示允許匿名使用者建立新的目錄,為了使該選項能夠起作用必須
#使write_enable為YES且匿名的使用者必須有在父目錄寫入的許可權

anon_other_write_enable=NO
#該選項設定為YES時,匿名使用者除了具有上傳,建立目錄的許可權外還具有其他的許可權
#如重新命名等

anon_upload_enable=NO
#該選項為YES時表示匿名使用者有上傳檔案的許可權.為了使該選項工作必須使write_enable
#為YES

anon_world_readable_only=YES
#該選項為YES時,匿名使用者只能下載具有全域性可讀屬性的檔案

anonymous_enable=NO
#該選項控制著是否允許匿名使用者登入.當為YES時則同時允許匿名使用者ftp和anonyous登入

ascii_download_enable=YES
#該選項用於指定是否允許下載時以ASCII模式傳輸資料

ascii_upload_enable=YES
#該選項設定是否允許上傳時以ASCII模式傳輸資料

async_abor_enable=NO
#該選項設定為YES時,FTP命令將顯示為"async ABOR"僅反對高階客戶端使用這一特性.

background=NO
#該選項設定當vsftpd以"listen"模式執行時,則在後臺執行偵聽程式

check_shell=YES
#該選項只對以non-PAM編譯的vsftpd起作用,當設定為NO時,則vsftpd不會根據/etc/shells
#檔案來檢查本地使用者登入的shell是否有效

chmod_enable=YES
#該選項為YES時,允許本地使用者使用CHMOD命令改變上傳的檔案的許可權.匿名使用者無法使用
#CHMOD命令

chown_uploads=YES
#當為YES時,所有匿名使用者上傳上來的檔案都會將檔案的所屬關係改為由chown_user-name
#指定的使用者

chroot_list_enable=NO
#該選項用於指定一系列可以使用chroot()的使用者名稱,指定的使用者在登入FTP後就會轉向
#自己的主目錄所在的位置.預設情況下指定的使用者放在/etc/vsftpd.chroot_list檔案中
#但可以在chroot_list_file指定別的檔名

chroot_local_user=NO
#當設定為YES時,本地使用者登入後就自動轉到他們的使用者主目錄中去。
#注意!:該選項用安全問題,特別是當用戶有上傳檔案或訪問shell的許可權時.僅在你知道自#己要作什麼時才設定為YES

connect_from_port_20=YES
#該選項用於設定是否使用20號埠傳輸資料.由於安全的原因,一些客戶端堅持使用
#20號埠,但是禁用該選項可以使vsftpd執行在更低的特權中

debug_ssl=NO
#該選項為YES時,將會把OpenSSl連線的診斷資訊儲存在日誌檔案中。

delete_failed_uploads=YES
#當設定為YES時,在上傳檔案失敗時刪除該檔案.

#deny_email_enable=NO
#該選項用於指定一系列拒絕匿名使用者登入的密碼郵件.預設情況下包含郵件的檔案為
#/etc/vsftpd.banned_emails或由banned_email_file指定的檔案中

dirlist_enable=YES
#是否允許使用者列出目錄的內容

dirmessage_enable=YES
#當為YES時表示當用戶第一次進入一個新的目錄時會顯示目錄的資訊.預設情況下目錄的
#資訊在目錄裡面的.message檔案裡.但是你可以用message_file來指定別的.

download_enable=YES
#允許下載,若為NO時則不允許下載。

dual_log_enable=NO
#當設定為YES時將會同時產生兩個日誌檔案,一個為/var/log/vsftpd.log(vsftpd自己
#風格的日誌檔案)和/var/log/xferlog(wu-ftpd風格的日誌檔案可以被標準的工具分析)

force_dot_files=NO
#若設定為YES時,在指定’ls -a’時會列出所有以.開始的隱藏檔案,該選項則使.和…不列出

#force_anno_data_ssl=NO
#僅在ssl_enable為YES時可用,當該選項為YES時所有匿名使用者登入時都要求使用SSL連線
#進行資料傳輸

#force_anon_logins_ssl=NO
#僅在ssl_enable為YES時可用,當該選項為YES時所有匿名使用者登入時都要求使用SSl連線
#進行密碼傳輸

#force_local_data_ssl=YES
#僅在ssl_enable為YES時可用,當為YES時,所有非匿名使用者登入時都要求使用SSL連結進
#行資料傳輸

#force_local_logins_ssl=YES
#僅在ssl_enable為YES時可用,當為YES時,所有非匿名使用者登入時到要求使用SSL連結
#進行密碼傳輸

guest_enable=NO
#設定是否允許非匿名使用者作為"guest"登入,一個guest登入使用者對映為guest_username
#指定的一個使用者名稱

hide_ids=YES
#當設定為YES時,所有目錄列表中的組和使用者的資訊都被隱藏,用"ftp"代替。

#implicit_ssl=NO
#當為YES時,在所有ftp連線的第一件事就是SSL握手

local_enable=YES
#控制是否允許本地使用者登入.(/etc/passwd中指定的使用者登入)

lock_upload_files=YES
#設定當用戶上傳檔案時是否鎖住上傳的檔案。

log_ftp_protocol=YES
#當為YES時,所有FTP的請求和應答都被記錄在日誌檔案中.可用於除錯。

ls_recurse_enable=NO
#設定是否允許遞迴列出目錄及其子目錄中的內容

mdtm_write=YES
#允許使用MDTM設定修改的時間

no_anon_password=NO
#當為YES時,將使vsftpd不會詢問匿名使用者的密碼

no_log_lock=NO
#當為YES時在記錄日誌時不會鎖住日誌檔案

one_process_model=NO
#允許登入使用者只能使用一個程序

passwd_chroot_enable=NO
#和chroot_local_user一起使用當為YES時.在使用者轉到自己主目錄時不需要再輸入密碼。

pasv_addr_resolve=NO
#若你想使用主機名的話就設定為YES

pasv_enable=YES
#該選項用於設定是否使用PASV方式來獲得資料連線。

#pasv_promiscuous=NO
#如果你想禁用PORT安全檢查(確保輸出的資料僅連線到客戶端)則設定為YES.僅在你在你
#知道你在作什麼時.

require_cert=NO
#若設定為YES時,則所有的SSl客戶端連線都需要提供證書,有效的證書在validate_cert中指
#定

require_ssl_reuse=NO
#當設定為YES時,所有的SSl資料連線都需要檢閱SSL會話安全儘管該選項預設是安全的,但是他可
#能會破壞許多FTP客戶端,所以你可能會禁用他

run_as_launching_user=NO
#若你希望使用引導vsftpd執行的使用者去執行vsftpd.該選項在不能使用root使用者訪問FTP時很
#很有用。重要的警告!:不要使用該選項除非你真的知道你在作什麼.

secure_email_list_enable=NO
#若你想指定一系列的郵件密碼讓匿名使用者登入。預設情況下郵件密碼存放在/etc/vsftpd.email_passwords,
#但可以email_password_file指定檔案.

session_support=NO
#該選項控制著vsftpd是否試圖控制著登入會話.若vsftpd控制著登入會話的話,則會更新utmp和wtmp日誌檔案.
#如果使用PAM認證的話他也會開啟一個pam_session且只在退出登入後關閉.如果你不需要登入會話的話你可能
#會關閉此選項。

setproctitle_enable=NO
#若該選項為YES時vsftpd會試著顯示系統中的程序的狀態資訊。換言之就是報告影響一個vsftpd
#會話的程序名。

ssl_enable=NO
#是否支援SSl連線。

ssl_request_cert=YES
#SSL連線時是否需要認證.

ssl_sslv2=NO
#該選項僅在ssl_enable可用時才應用當為YES時,允許SSL v2協議連線。TLS v1優先

ssl_sslv3=NO
#該選項僅在ssl_enable為YES時可用.允許使用SSl v3協議連線.TLS v1優先

ssl_tlsv1=YES
#該選項僅在ssl_enable為YES時可用,允許使用TLS v1協議。

strict_ssl_read_eof=NO
#該選項為YES時,在上傳資料時需要通過SSL連線的終端,而不是埠上的一個EOF

strict_ssl_write_shutdown=NO
#當設定為YES時,在下載資料時需要通過SSL連線的埠,而不是埠上的一個EOF

syslog_enable=NO
#該選項為YES時.任何原來記錄到/var/log/vsftpd.log的資訊都將記錄到系統日誌檔案中

tcp_wrappers=YES
#當該選項為YES時,連線時將通過tcp_wrapper訪問控制(wrap為隱藏的意思)

text_userdb_names=NO
#該選項為YES時設定顯示使用者名稱和組名.預設情況下使用的是UID和GID

tilde_user_enable=NO
#控制vsftpd是否使用相對路徑.(以~/something顯示路徑)

use_localtime=YES
#設定是否使用本地使用者所在的時區顯示時間.預設顯示的時間為GMT時區的.

use_sendfile=YES
#用於設定在你的系統中使用sendfile()系統呼叫來測試的內部設定。

userlist_deny=NO
#設定禁止登入的使用者列表,使用者列表在userlist_file中指定的檔案中指定

userlist_enable=NO
#允許從檔案中載入允許登入的使用者名稱列表

validate_cert=YES
#若設定為YES時,所有的SSL客戶端需要合法的認證書

virtual_use_local_privs=NO
#該選項用於設定虛擬使用者是否擁有和本地使用者一樣的特權.

write_enable=YES
#該選項用於設定是否允許使用會改變FTP檔案系統的命令.這些命令有:STOP,DELE,RNFR,
#RNTO,MKD,RMD,APPE,SITE

xferlog_enable=YES
#設定為YES時,會產生一個關於上傳和下載的日誌檔案,預設的日誌檔案為/var/log/vsftp.log
#但是可以通過vsftpd_log_file指定別的日誌檔名

xferlog_std_format=NO
#設定是否產生標準格式(wu-ftpd風格的)日誌檔案.預設的檔名/var/log/xferlog
#但是可以通過xferlog_file指定別的日子檔名。

#數字選項

說明:以下為數字選項,一個數字選項的值不能是負數,可以指定一個八進位制的數字
#在數字前加上’0’就是八進位制的數值否則預設為十進位制的數值.

accept_timeout=60
#該選項用於設定一個PASV風格的連線的超時,單位為s

anon_max_rate=1024
#該選項用於設定匿名使用者的最大資料傳輸速度,單位b/s.若設定為0時表示無限制

anon_umask=077
#該選項用於設定匿名使用者建立檔案時的許可權掩碼.

chown_upload_mode=0600
#該選項用於設定匿名使用者上傳檔案時使用chown強制改變檔案的許可權值

connect_timeout=60
#用於設定連線超時

data_connection_timeout=120
#用於設定沒有程序使用時最大允許資料連線的超時

delay_failed_login=1
#設定登入失敗時要延遲1s後才可以再次連線

delay_successful_login=0
#設定登入成功後的延遲時間,單位是s

file_open_mode=0777
#設定上傳檔案的許可權,若你希望上傳的檔案可以被執行你需要設定為0777

ftp_data_port=21
#設定PORT風格的連線的埠,預設為20

idle_session_timeout=300
#設定遠端客戶端使用兩個FTP命令之間的最大時間,超時後則退出客戶端連線

listen_port=21
#當vsftpd在單獨模式下執行時偵聽的埠號

local_max_rate=2048
#設定本地使用者最大的傳輸速度,b/s,若設定為0表示為限制。

local_umask=0077
#設定本地使用者上傳檔案時的許可權掩碼

max_clients=10
#設定最大連線的IP數為10

max_login_fails=5
#設定在5次連線失敗後終止會話

max_per_ip=1
#設定每個IP地址最多可以連線的數目為1次。若設定為0時表示無限次

pasv_max_port=0
#設定使用PASV風格連線時最大的埠號,0表示無限制

pasv_min_port=0
#設定使用PASV風格連線時最小的埠號,0表示無限制

trans_chunk_size=0
#你可能不會改變這個選項設定,但是你可以為更低寬頻限制將此選項設定為像8192一樣

#字串設定

anon_root=/home/ftp/ftp
#設定匿名使用者登入後轉向的目錄

#banned_email_file=/home/huangyandong/logs/vsftpd/vsftpd.banned_emails
#設定存放匿名使用者郵件密碼列表的檔案

banner_file=/home/huangyandong/logs/vsftpd/vsftpd.banner
#設定包含當用戶登入FTP時顯示的內容的檔案,會覆蓋由ftpd_banner設定的字串

#ca_certs_file
#該選項設定載入認證證書的檔案

chown_username=huangyandong
#設定當上傳檔案後文件的所屬關係該為huangyandong所有,僅在chown_uploads為YES時
#可用

chroot_list_file=/home/huangyandong/logs/vsftpd/vsftpd.chroot_list
#設定包含允許轉到使用者主目錄的使用者名稱的檔名,僅在chroot_local_user和chroot_list_enable
#為YES時可用

#cmds_allowed=PASV,RETR,QUIT
#指定一系列由,隔開的允許使用的FTP命令

cmds_denied=DELE,RMD
#指定一系列由,隔開的不允許使用的FTP命令
#此處指定不允許刪除檔案和目錄

#deny_file
#指定包含一系列不允許訪問的檔名的檔案

#dsa_cert_file
#指定載入DSA證書的檔名

#dsa_private_key_file
#指定包含DSA私鑰的檔案

#email_password_file=/etc/vsftpd.email_password
#指定包含郵件密碼的檔案

#ftp_username=ftp
#指定操作匿名使用者使用的根目錄的使用者名稱

#ftpd_banner
#指定使用者登入FTP時顯示的內容

#guest_username=ftp
#指定遊客對映的使用者名稱

#hide_file
#指定要隱藏的檔名匹配

#listen_address
#指定當在單獨模式下執行時偵聽的IP地址

#listen_address6
#指定當在單獨模式下執行時偵聽的IPV6地址

local_root=/home/ftp/ftp
#指定本地使用者登入後轉入的目錄

#message_file
#該選項指定包含當用戶轉入一個新的目錄時顯示的內容的檔案,預設檔案為.message
#僅在dirmessage_enable可用時才有用

secure_chroot_dir=/home/huangyandong/logs/vsftpd/empty
#指定安全的目錄名,該目錄不能被ftp使用者寫入,在FTP檔案系統不能訪問是轉入的目錄

#userlist_file=/etc/vsftpd.user_list
#該選項用於指定在userlist_enable為YES時,從指定檔案中載入使用者列表

vsftpd_log_file=/home/huangyandong/logs/vsftpd/vsftpd.log
#用於指定日誌檔案,預設為/var/log/vsftpd.log

#xferlog_file=/home/huangyandong/logs/vsftpd/xferlog
#用於在xferlog_enable為YES時指定標準的日誌檔案預設為/var/log/xferlog

This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd

This option specifies the location of the RSA certificate to use for SSL
encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
————————————————
版權宣告:本文為CSDN博主「陳善好」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/chenshanhao2008/article/details/108272674