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.交流群: PHP+JS聊天群

相关课文
  • Linux系统下word文档转成pdf的办法

  • ubuntu和debian安装nginx或者tengine报错, 找不到pcre依赖库的解决办法

  • linux终端下借助awk命令查询筛出网站access.log日志里的统计信息

  • 常见的web中间件请求返回状态码

我要说说
网上宾友点评