1. 程式人生 > >Centos 6.3安裝配置vsFTPd環境的FTP伺服器

Centos 6.3安裝配置vsFTPd環境的FTP伺服器

2012.10.11更新,增加 vsftpd 配置檔案說明。
2013.07.03更新,對文中一些字元被程式碼外掛轉義的錯誤。

我的電腦系統是win7 64bit,用virtualbox安裝了一個最小化版的centos 6.3 64位的系統。最近特意想搭建一個FTP的伺服器,所以,就有了如下的過程。備忘,方便你我他。

注:文章最後會附上 vsftpd 伺服器配置檔案的選項說明。

關於vsftpd介紹如下:

vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類作業系統上執行的伺服器的名字,它可以執行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開發原始碼的ftp伺服器軟體,支援很多其他的 FTP 伺服器所不支援的特徵。比如:非常高的安全性需求、頻寬限制、良好的可伸縮性、可建立虛擬使用者、支援IPv6、速率高等。vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程式。特點是小巧輕快,安全易用。

OK !現在進入安裝配置。

1、安裝vsftp

因為,我採用的yum命令安裝,不是原始碼包安裝。所以,安裝和配置都非常的方便。

在這裡,我要架設的是虛擬使用者。所謂虛擬使用者就是沒有使用真實的賬戶,只是通過某種技術手段達到對映賬戶和設定許可權的目的。

執行如下程式碼進行安裝vsftpd:

yum -y install vsftpd

如果,你不確定自己的系統是否已經安裝vsftpd,請用以下命令檢測:

rpm -qa | grep vsftpd

如果輸出類似以下內容:

vsftpd-2.2.2-11.el6.x86_64

說明你當前的系統已經安裝了。這是基於yum命令進行安裝的檢測方法,使用原始碼包編譯安裝的檢測方法不知道是不是這樣,如果你知道,請留言告訴我。謝謝。

如果,什麼都沒有輸出,說明你的系統沒有安裝。

因為,接下來配置 vsftpd 的需要,所以,要事先建立一個檔案,命令如下:

touch /var/log/vsftpd.log

2、啟動/重啟/停止 vsftpd 伺服器

剛才我們安裝了vsftpd 伺服器,但是,這個時候,還沒有啟動 vsftpd 服務。以下命令啟動:

service vsftpd start

會出現一行啟動成功的提示資訊:

Starting vsftpd for vsftpd:[ OK ]

如果,你與我一樣是安裝的中文語言的Centos,那麼提示資訊將是中文的。如果,提示資訊裡面沒有OK出現,也沒有“確定”這樣的字眼出現,說明啟動失敗了。反正,按照我的方式,不會出現失敗。

vsftpd 的 重啟命令:

service vsftpd restart

vsftpd 的 停止命令:

service vsftpd stop

如果,你希望下次系統啟動的時候,自動啟動 vsftpd 伺服器,執行以下命令:

chkconfig vsftpd on

3、與 vsftpd 伺服器有關的檔案和資料夾

vsftpd伺服器的配置檔案的是: /etc/vsftpd/vsftpd.conf
vsftpd伺服器的根目錄,即FTP伺服器的主目錄:/var/ftp/pub

4、新增FTP本地使用者(即虛擬使用者,簡單方案)

FTP大家可能都用過,通過給定的HOST、賬號、密碼就可以訪問伺服器對應的目錄空間了。但是,這個FTP賬號只能訪問FTP服務,不能登入伺服器系統,只能訪問自己的目錄。這樣的使用者就叫虛擬使用者,本質上這不叫虛擬使用者,僅僅只是不能通過終端等一系列途徑登入伺服器系統而已。

建立一個FTP使用者的命令如下:

adduser -d /opt/ftp_dir/ftp001 -g ftp -s /sbin/nologin ftp001

此命令的含義:
使用shell命令adduser新增一個ftp001的系統賬戶,但是,不能登入系統(-s /sbin/nologin),該賬戶的主目錄在(-d /opt/ftp_dir/ftp001),屬於ftp這個使用者組(-g ftp)。

我們建立了一個FTP賬戶,現在來設定賬戶的密碼,命令如下:

passwd ftp001

接著會要求你輸入兩次密碼確認。為了避免出現不要求的錯誤,請儘量保證自己的密碼長度大於6個字元,且是字母與數字的混合的字串。如我的密碼是:ftp123456。

5、vsftpd 配置檔案的調整

anonymous_enable=NO 設定不允許匿名訪問

local_enable=YES
設定本地使用者可以訪問。注:如使用虛擬宿主使用者,在該專案設定為NO的情況下所有虛擬使用者將無法訪問。

chroot_list_enable=YES 使使用者不能離開主目錄

xferlog_file=/var/log/vsftpd.log
設定vsftpd的服務日誌儲存路徑。注意,該檔案預設不存在。必須要手動touch出來。我們已經一開始就已經建立了。

ascii_upload_enable=YES

ascii_download_enable=YES 設定支援ASCII模式的上傳和下載功能。

pam_service_name=vsftpd PAM認證檔名。PAM將根據/etc/pam.d/vsftpd進行認證

chroot_list_file 將這個配置前面的#號去掉。

以下這些是關於Vsftpd虛擬使用者支援的重要CentOS FTP服務配置專案。

預設vsftpd.conf中不包含這些設定專案,需要自己手動新增CentOS FTP服務配置。

guest_enable=YES 設定啟用虛擬使用者功能。

guest_username=ftp 指定虛擬使用者的宿主使用者。-CentOS中已經有內建的ftp使用者了

user_config_dir=/etc/vsftpd/vuser_conf
設定虛擬使用者個人vsftp的CentOS FTP服務檔案存放路徑。存放虛擬使用者個性的CentOS FTP服務檔案(配置檔名=虛擬使用者名稱)

這個目錄可以這樣理解,針對每一個FTP賬號,我們可以在此目錄下建立一個與賬號同名的檔案(必須同名,這是規定)。然後,在裡面配置一些特殊的資訊。比如:這個賬號是否能上傳檔案,是否能下載檔案,所能訪問的目錄空間是什麼等。

6、建立chroot list,將FTP使用者加入其中:

我們有了FTP賬號,但是,這個時候 vsftpd 伺服器並不知道。所以,我們要告訴它。
執行如下命令:

touch /etc/vsftpd/chroot_list
echo ftp001 >>/etc/vsftpd/chroot_list

如果,你有多個FTP賬戶,那麼請將這些賬戶以每行一個的方式配置在此檔案中即可。

7、賬戶認證:

首先,我們要安裝Berkeley DB工具,很多人找在接下來執行db_load命令的時候,會發生找到不此命令的錯誤就是因為沒有安裝這個包。

首先檢視系統中是否已經安裝,命令如下:

rpm -qa|grep db4

安裝即會輸出類似以下的資訊:

db4-4.7.25-17.el6.x86_64
db4-utils-4.7.25-17.el6.x86_64

反之,則沒有安裝。執行以下命令進行安裝:

yum -y install db4 db4-utils

安裝完畢。然後我們建立使用者密碼文字,命令如下:

vi /etc/vsftpd/vuser_passwd.txt

將我們的FTP賬號密碼配置進去。注意奇行是使用者名稱,偶行是密碼。如:

ftp001
ftp123456

接著,生成虛擬使用者認證的db檔案,執行如下命令:

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

隨後,編輯 vsftpd 認證檔案:/etc/pam.d/vsftpd.
將此檔案中所有程式碼註釋掉,註釋請用#號。然後,在檔案最後增加如下兩句:

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

以上兩句是32位系統的新增內容,64位的系統是如下:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

8、最後配置每個FTP使用者的配置檔案

因為,我們要將所有與使用者FTP配置檔案放到如下目錄下,所以,我們要建立它:

mkdir /etc/vsftpd/vuser_conf/

然後,在此目錄中為每個FTP使用者建立一個配置檔案,以我們建立和ftp001賬戶為例:

vi /etc/vsftpd/vuser_conf/ftp001

在檔案中配置如下內容:

local_root=/opt/ftp_dir/ftp001
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022

local_root是告訴FTP賬戶只能訪問此目錄。

以上配置完成之後,記得關閉系統防火牆。

————————-以下是常見錯誤與解決方案—————–

安裝完以後,可能發現連線ftp伺服器,一般是由於SELinux的問題,原因如下:

CentOS系統是Rad Hat派系的,把vsftpd安裝配置OK之後,但客戶端訪問提示如下錯誤:

500 OOPS: cannot change directory:/opt/ftp_dir/ftp001

原因是CentOS系統安裝了SELinux,因為預設下是沒有開啟FTP的支援,所以訪問時都被阻止了。

檢視SELinux設定,命令如下:

getsebool -a|grep ftp

Centos6系列以前的版本在輸出的結果中會有如下資訊:

ftpd_disable_trans --> off
ftp_home_dir-->off

Centos 6系列是沒有ftpd_disable_trans的。

通過檢視得到,ftp是關掉了。

使用setsebool命令開啟,Centos 6不需要執行第一句shell命令:

setsebool ftpd_disable_trans 1 setsebool ftp_home_dir 1

由於作業系統一旦重啟後,這種設定需要重新設定,這裡使用-P引數實現.

setsebool使用-P引數,無需每次開機都輸入這個命令,Centos 6版本不需要執行第一句shell命令:

setsebool -P ftpd_disable_trans 1 setsebool -P ftp_home_dir 1

檢視當前狀態是否是on的狀態,命令如下:

getsebool -a|grep ftp

結果如下:
ftpd_disable_trans –> on
ftp_home_dir–>on

這時候重啟 vsftpd 伺服器,命令如下:

service vsftpd restart

1.553 Could not create file

一般都是SELinux的問題,設定SELinux的一個值,重啟伺服器即可。

setsebool -P ftpd_disable_trans 1
service vsftpd restart

還有可能是所設定的目錄,FTP賬戶沒有許可權訪問。我在親測的過程中就遇到過這樣的問題。

2.500 OOPS: bad bool value in config file for: write_enable

注意你的CentOS FTP服務檔案中保證每一行最後沒有任何空格,一般出錯就是在多餘的空格上。

開啟/etc/selinux/config

將selinux=enforcing 改成permissive 或disabled。

•enforcing強制模式,只要SELinux不允許,就無法執行;
•permissive警告模式,將該事件記錄,依然允許執行;
•disabled關閉SELinux;
•停用、啟用需要重啟計算機;
•使用setenforce切換enforcing與permissive模式不需要重啟計算機;
•getenforce及sestatus檢視執行模式;

——————————————– vsFTPd 配置選項說明 ——————————————-
在預設的配置檔案中,並不會列出所有的配置項。所以,接下來可能會碰到一些在預設配置檔案中沒出現的配置選項,你可以根據需要自行配置使用。

#設定不允許匿名訪問:YES允許、NO不允許 
anonymous_enable=NO 
#設定本地使用者是否可以訪問。注意:主要是為虛擬宿主使用者,如果該專案設定為NO那麼所有虛擬使用者將無法訪問。 
local_enable=YES 
#設定可以進行寫操作。 
write_enable=YES 
#設定上傳後文件的許可權掩碼,預設值是077。 
local_umask=022 
#匿名使用者是否可以上傳:YES可以 NO不可以。 
anon_upload_enable=NO 
#匿名使用者是否可以建目錄:YES可以 NO不可以。 
anon_mkdir_write_enable=NO 
#匿名使用者其它的寫權利(更改許可權?) 
anon_other_write_enable=NO 
#匿名登入者是否允許下載可閱讀的檔案:YES允許、NO拒絕。 
anon_world_readable_only=YES 
#所有非匿名登陸的使用者名稱是否被切換成guest_username指定的使用者名稱。 
guest_enable=NO 
#所有匿名上傳的檔案的所屬使用者將會被更改成chown_username 
chown_uploads=YES 
#匿名上傳檔案所屬使用者名稱 
chown_username=lightwiter 
#如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄,一般情況下,我們都不會允許使用者更改根目錄。 
chroot_list_enable=YES 
#允許使用"async ABOR"命令,一般不用,容易出問題,最好設定為NO。 
async_abor_enable=YES 
#是否可用ASCII 模式上傳。預設值為NO,即不允許。 
ascii_upload_enable=YES 
#是否可用ASCII 模式下載。預設值為NO,即不允許。 
ascii_download_enable=YES 
#定義匿名登入的使用者名稱。預設值為ftp。 
ftp_username=ftp 
#本地使用者主目錄,當前使用者必須具有此目錄的操作許可權,否則會連線FTP會提示沒有許可權操作。 
local_root=(none) 
#空閒連線超時,單位(秒)。 
idle_session_timeout=600 
#資料傳輸超時,單位(秒)。即傳輸超過2分鐘即超時斷開。如果是上傳大檔案,請將此值設定得更大一些即可。如:3600秒。 
data_connection_timeout=120 
#PAVS請求超時。 
accept_timeout=60 
#PROT模式連線超時。 
connect_timeout=60 
#開啟日記功能。 
xferlog_enable=YES 
#使用標準格式。 
xferlog_std_format=YES 
#當xferlog_std_format關閉且本選項開啟時,記錄所有ftp請求和回覆,當除錯比較有用。 
log_ftp_protocol=NO 
#允許使用pasv模式。 
pasv_enable=YES 
#關閉安全檢查。 
pasv_promiscuous=NO 
#允許使用port模式。 
port_enable=YES 
#開啟tcp_wrappers支援。 
tcp_wrappers=YES 
#定義PAM 所使用的名稱,預設為vsftpd。 
pam_service_name=vsftpd 
#當伺服器運行於最底層時使用的使用者名稱。 
nopriv_user=nobody 
#是否能使用ls -R命令以防止浪費大量的伺服器資源。 
ls_recurse_enable=YES 
#是否使用單程序模式。 
one_process_model=NO 
#繫結到listen_port指定的埠,既然都綁定了也就是每時都開著的,就是那個什麼standalone模式。 
listen=YES 
#當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。 
text_userdb_names=NO 
#顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果 
use_localtime=NO 
#測試平臺優化 
#use_sendfile=YES 

相關推薦

Centos 6.3安裝配置vsFTPd環境FTP伺服器

2012.10.11更新,增加 vsftpd 配置檔案說明。2013.07.03更新,對文中一些字元被程式碼外掛轉義的錯誤。 我的電腦系統是win7 64bit,用virtualbox安裝了一個最小化版的centos 6.3 64位的系統。最近特意想搭建一個FTP的伺服

CentOS 6.3安裝配置LAMP伺服器 (Apache+PHP5+MySQL)

準備篇: 1、配置防火牆,開啟80埠、3306埠 vi /etc/sysconfig/iptables -A INPUT -mstate --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允許80埠通過防火牆 -A INPUT -m state --st

CentOS 6.8 安裝配置 vsftpd 檔案伺服器

vsftpd 版本 vsftpd 2.2.2 , 來自阿里雲 執行命令安裝 sudo yum -y install vsftpd 然後在根目錄建立一個資料夾 ftpfile sudo mkdir ftpfile 然後給ftp服務建立一

linux系統安裝有關1: CentOS-6.3安裝配置Nginx

安裝說明 系統環境:CentOS-6.3 軟體:nginx-1.2.6.tar.gz 安裝方式:原始碼編譯安裝 安裝位置:/usr/local/nginx 下載地址:http://nginx.org/en/download.html 安裝前提 在安裝nginx前,需要

CentOS-6.3安裝配置Weblogic-10

安裝說明 安裝環境:CentOS-6.3-x64 軟體:server1001_ccjk_linux32.bin 安裝方式:bin檔案安裝 安裝位置:/usr/local/weblogic/ 下載地址:http://www.oracle.com/technetwork/mid

centos 6.x 安裝配置 node.js 環境

npm fig 環境變量 網站 gpo 代理 ack config htm 下載 可以在本地下載node.js最新版,然後通過ftp工具上傳到服務器,或者直接在服務器終端使用wget命令下載(我當時下載的是node-v6.11.3-linux-x64版本,其他版本請查看上面

CentOS 6.4安裝配置MairaDB 10.3 Galera Cluster

MariaDB10.3 Galera Cluster 一. 安裝環境不同版本的操作系統(CentOS 6 與 7)、不同版本的數據庫(MariaDB 10.1前後)相關安裝配置命令不太一樣。1. 操作系統:CentOS 6.42. 數據庫 : MariaDB 10.3.7二. 服務器規劃Mar

CentOS 6安裝配置JDK+Tomcat環境

1.安裝OpenJDK 注意,安裝OpenJDK簡單迅速,只需一條命令,且無需配置環境變數 ①檢視是否已經安裝了JDK java -version rpm -qa |grep java rpm -qa |grep jdk ②若有如何解除安裝 解除安裝JDK相關檔案輸入:

CentOS 7.3安裝配置Powerline

bash vim powerline 一、Powerline簡介及演示環境:Powerline是一個極棒的Vim編輯器的狀態欄插件,主要用於顯示狀態行和提示信息。特點:使用Python編寫,使其更具擴展性且功能豐富穩定易測的代碼庫,兼容Python 2.6+和Python 3支持多種Linux功能

CentOS 6.4安裝配置LNMP服務器(Nginx+PHP+MySQL)

mysql- ket 是否 分號 使用 store 重啟 isa tpi 一 安裝篇 1. 安裝nginx yum check-update #更新yum源 yum remove httpd* php* #刪除系統自帶的軟件包 yum install nginx #安裝ng

CentOS 6 yum安裝配置lnmp服務器

設置密碼 客戶端 inux listening logs and cat 服務 load 一、準備: 1.配置防火墻,開啟80端口、3306端口編輯 /etc/sysconfig/iptables,添加如下條目: -A INPUT -m state --state

Centos 6.5安裝配置KVM

centos 6.5安裝kvm kvm部署 1 egrep --color=auto 'vmx|svm' /proc/cpuinfo2 yum install kvm qemu-kvm python-virtinst libvirt libvirt-python virt-mana

CentOS 6.9安裝配置nmon

nmon nmon是一款開源的性能監控工具,用於監控CentOS系統的資源消耗信息,並能把結果輸出到文件中,然後通過nmon_analyser性能報告分析器生成數據分析報表。一、安裝nmon:1、 配置epel源2、 安裝nmon:# yum -y install nmon --> 16g-3 二

centos-6.5安裝部署LNMP環境

worker download $path format java medium dump ddr 下載源 系統信息: 1 2 3 4 [root@zww ~]# cat /etc/redhat-release CentOS release 6.

CentOS 6.9安裝配置Jenkins

CentOS 6.9安裝配置Jenkins 安裝Jenkins 新增源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm

CentOS 6.10安裝配置WebLogic 11g雙機叢集

一、演示環境: IP OS JDK WebLogic 記憶體 伺服器角色 埠 192.168.1.220 CentOS   6.10 x86_64 jdk-7u80-linux-x6

CentOS 6.3配置LVM(邏輯卷管理)(6.9測試也可用)

一、簡介 LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁碟分割槽進行管理的一種機制,LVM是建立在硬碟和分割槽之上的一個邏輯層,來提高磁碟分割槽管理的靈活性。 LVM的工作原理其實很簡單,它就是通過將底層的物理硬碟抽象

CentOS 6.8安裝配置samba伺服器

1、關閉防火牆 # service iptables status //檢視防火牆的狀態 # service iptables stop //停止防火牆 # chkconfig iptables off //永久關閉防火牆 2、關閉SELINUX # sestatu

Mono on CentOS 6.3 安裝筆記

在網上找到篇關於yum的文章,寫的很詳細特此推薦下,在閱讀本文之前建議先看看它: 《CentOS yum源的配置與使用》 如果用的是移動光碟機,建議不要開啟本地的yum 的本地repository庫,即不要啟用/etc/yum.repos.d/CentOS-Media.repo檔案內的配置源。當然,如果

MonoDevelop 4.0.9 on CentOS 6.3 安裝筆記

前言 Mono的前東家Novell公司旗下的SUSE Linux系列對Mono及MonoDevelop提供內建支援,所以在SUSE/OpenSUSE這些Linux系統中安裝MonoDevelop是非常簡便的。但是,在其他Linux分支中要安裝MonoDevelop卻常常需要大費周折,為什麼會這樣呢?主要