CentOS上搭建FTP服務器

本文參考了網上的幾篇博文,在CentOS上搭建FTP服務器,兩種搭建方式:gssftp與vsftpd。


RedHat和CentOS都自帶了一個gssftp服務,使用方式如下:

1 進入gssftp目錄
[root@linux local]# cd /etc/xinetd.d
[root@linux xinetd.d]# ls
chargen cups-lpd daytime-udp echo-udp gssftp krb5-telnet rsync time-udp
chargen-udp daytime echo eklogin klogin kshell time 
2 編輯gssftp文件,將server_args改爲-l,將disable改爲no:
[root@linux xinetd.d]# vi gssftp
# default: off
# description: The kerberized FTP server accepts FTP connections \
# that can be authenticated with Kerberos 5.
service ftp
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/ftpd
#server_args = -l -a
server_args = -l
log_on_failure += USERID
#disable = yes
disable = no
}
3 重啓xinetd服務:
[root@linux xinetd.d]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
這時查看21端口已經打開:
[root@linux xinetd.d]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 22543/xinetd
如果防火牆沒有打開端口,則開放21端口並重啓防火牆服務:
[root@linux xinetd.d]# vi /etc/sysconfig/iptables
[root@linux xinetd.d]# service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]

用戶登錄

到這裏ftp服務就可用了,可以使用linux系統用戶登錄或者其他用戶登錄。gssftp不能指定共享目錄,僅供內部測試使用,便捷的FTP服務需要利用vsftp來搭建。


vsftpd安裝配置


1.安裝vsftpd
一般在CentOS上都自動安裝了vsftd,若沒有安裝則可以使用以下步驟進行安裝: 
yum -y install vsftpd
touch /var/log/vsftpd.log # 創建vsftp的日誌文件
在CentOS中,這樣就可以完成了一個簡單的匿名FTP的搭建。你可以通過訪問ftp://yourip來進行,不過這個FTP沒有任何權限。

2.基於匿名的FTP架設


參考本博客上幾篇關於Vsftpd的CentOS FTP服務配置文章。


3.基於虛擬用戶的FTP架設
所謂虛擬用戶就是沒有使用真實的帳戶,只是通過某種手段達到映射帳戶和設置權限的目的。
1)我們在/etc/vsftpd/vsftpd.conf中做如下CentOS FTP服務配置:
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進行認證
以下這些是關於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服務文件(配置文件名=虛擬用戶名)
2)創建chroot list,將用戶ftp加入其中: 
touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list
3)進行認證: 
首先,安裝Berkeley DB工具,很多人找不到db_load的問題就是沒有安裝這個包。
yum install db4 db4-utils
然後,創建用戶密碼文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用戶名,偶行是密碼
ftpuser1
ftppass1
ftpuser2
ftppass2
接着,.生成虛擬用戶認證的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
隨後,編輯認證文件/etc/pam.d/vsftpd,全部註釋掉原來語句
再增加以下兩句
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
最後,創建虛擬用戶個性CentOS FTP服務文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/ftpuser1
內容如下:
local_root=/opt/var/ftp1 虛擬用戶的根目錄(根據實際修改)
write_enable=YES 可寫
anon_umask=022 掩碼
anon_world_readable_only=NO 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

4.啓動vsftp服務器 
mkdir /opt/var/ftp/ftpuser1
chmod 777 /opt/var/ftp/ftpuser1
service vsftpd start
TroubleShootings:

1.553 Could not create file

一般都是SELinux的問題,設置SELinux的一個值,重啓服務器即可。
setsebool -P ftpd_disable_trans 1 
service vsftpd restart


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

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

注:後半部分待測試。


發佈了42 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章