CentOS下搭建ftp服務器

字號+ 編輯: 种花家 修訂: 面向ICU 來源: Linux公社 2023-09-10 我要說兩句(0)

這篇文章解決您在centos諸多版本中建設ftp服務時遇到的一大堆稀奇古怪的問題。

先說說前置準備工作。

  1. 用root 進入系統

  2. 使用命令 rpm  -qa|grep vsftpd 查看系統是否安裝了ftp,若安裝了vsftp,使用這個命令會在屏幕上顯示vsftpd的版本 

  3. 使用命令rpm -e vsftpd 即可卸載ftp

  4. 再使用rpm  -qa|grep vsftpd 查看系統是否已刪除ftp,若刪除成功,屏幕上顯示vsftpd的版本

安裝vsftpd

查看是否已經安裝vsftpd

rpm -qa | grep vsftpd

如果沒有,就安裝,並設置開機啓動

yum -y install vsftpd
chkconfig vsftpd on

安裝時發現錯誤:

Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base

是因爲缺少DNS,解決如下:到/etc目錄下配置resolv.conf加入nameserver IP:

[root@localhost ~]# vi /etc/resolv.conf
#下面地址是福建電信DNS
nameserver 218.85.157.99

管理vsftpd相關命令

啓動vsftpd:  

service vsftpd start

停止vsftpd:  

service vsftpd stop

重啓vsftpd: 

service vsftpd restart

配置防火牆

打開/etc/sysconfig/iptables文档

vi /etc/sysconfig/iptables

在REJECT行之前添加如下代碼,如果提示代碼不正確無法啓動iptables了,那就按照原來的配置文档前幾行的ACCEPT命令搬運過來。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

保存和關閉文档,重啓防火牆

service iptables start

配置vsftpd服務器

1.默認的配置文档是/etc/vsftpd/vsftpd.conf,你可以用文本編輯器打開。

vi /etc/vsftpd/vsftpd.conf

2.添加ftp用戶

重頭戲來了, 下面是添加ftpuser用戶,設置根目錄爲/home/wwwroot/ftpuser, 禁止此用戶登錄SSH的權限,並限制其訪問其它目錄。

#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list

改爲

chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

網上有人四處抄文章抄錯了,說這個chroot_list_enable=YES代表意思是,寫到chroot_list指定文档裡的用戶名單是注入特權的,可以隨便到主機裡處瞧文档的,這弄反了。chroot_list_enable代表是否啓用目錄鎖定的用戶名單。

vsftpd.conf這個配置文档等號後邊寫著大寫的YES就不要夾帶空格或者其他小寫字母,避免不能正確讀取配置。

3.增加用戶ftpuser和對應的用戶組,指向目錄/home/wwwroot/ftpuser,禁止登錄SSH權限。

groupadd 用戶組名

這一步指定-s參數/sbin/nologin會在centos 8.0會引起問題,報530登錄錯誤。但請不要用/usr/bin/bash這種方式放行,相見本篇尾部對應解決方案。

useradd -d /home/wwwroot/ftpuser -g 用戶組名 -s /sbin/nologin ftpuser

4.設置用戶口令

passwd ftpuser

5、編輯目錄受限用戶名單chroot_list:

vi /etc/vsftpd/chroot_list

内容爲ftp用戶名,每個用戶佔一行,如:

peter
john

6、修改ftp耑口

在/etc/vsftpd/vsftpd.conf當中加入一項:

listen_port=新耑口號

7、重新啓動vsftpd

service vsftpd restart

疑難錯誤解決

正常的流程說完了, 現在說一下錯誤故障解決的。

centos 8.0在客戶耑報錯530 login incorrect

vim打開/etc/pam.d/vsftpd

發現有一行配置代碼

auth       required    pam_shells.so

OK,就是它的問題,注釋掉。

配置好了, 賬號密碼正確, 還是報錯 530 permission denied

vim打開/etc/vsftpd/vsftpd.conf這個文档

找到

userlist_enable=YES

改爲

userlist_enable=NO

和上文說的一樣, 這個也是個黑白名單機制,我們已經有了chroot_list白名單機制了, 調這個何用。

客戶耑報錯 500 Illegal PORT command

如果你使用filezilla軟體可能會報這個錯誤, 需要在客戶耑裡配置一下, 把傳輸模式從默認改爲“主動模式”。

關於錯誤的原理,勞煩兄台自己上網搜一搜吧,這裡就不細講解了。

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

vim打開/etc/vsftpd/vsftpd.conf,增加一段配置代碼:

對於標準的vsftpd build (vsftpd):

allow_writeable_chroot=YES

對於擴展的vsftpd build (vsftpd-ext):

allow_writable_chroot=YES
閲完此文,您的感想如何?
  • 有用

    1

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 防止退出linux終耑退出之後導致的nohup進程強制退出

  • Linux系統下word文档轉成pdf的辦法

  • ubuntu和debian安裝nginx或者tengine報錯, 找不到pcre依賴庫的解決辦法

  • 常見的web中間件請求返回狀態碼

我要說說
網上賓友點評