FTP实现文件上传(一):Linux安装配置服务端

1,157 阅读3分钟

转载链接:blog.51cto.com/5001660/210…

1、安装vsftp

2、配置服务

3、创建虚拟用户

4、安装db4

5、建立认证文件

6、配置ftpuser用户访问权限

7、验证vsftp服务

8、后记


1、安装vsftp

yum -y install vsftpd

备注:Centos7无法安装db4,需要安装以下软件包即可:

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI

image.png


image.png

image.png

2、配置服务

cd /etc/vsftpd

vi vsftpd.conf (该文件为FTP服务器的主配置文件,注意每一行结尾一定不能有空格)

image.png

以下为几项重要的配置参数,其中有几条需要特殊关注,下文会详细介绍


userlist_enable和userlist_deny可以形成组合拳:

①.当userlist_enable=YES时,userlist_deny的值才会生效

②.当userlist_enable=YES且userlist_deny=YES时,/etc/vsftpd/user_list为FTP访问黑名单,文件中每一行一个用户,这些用户均无法登陆使用FTP服务

③.当userlist_enable=YES且userlist_deny=NO时,/etc/vsftpd/user_list为FTP访问白名单,只有在文件中存在的用户才可以连接FTP


备注:Centos7无法启动vsftp时,禁用以下选项:

allow_writeable_chroot=YES

#listen_ipv6=YES


3、创建虚拟用户:

创建FTP存放数据的文件夹:

mkdir -p /data/ftpdir

用户名ftpuser将来会存放ftp数据,指定存放数据的位置:/data/ftpdir

useradd -d /data/ftpdir -s /sbin/nologin ftpuser

执行创建命令时有可能会出现以下错误:

1. useradd: warning: the home directory already exists.

2. useradd: user 'ftpuser' already exists

解决办法简单粗暴,就是全都删掉

执行:userdel -rf ftpuser之后再执行一开始的创建用户命令即可

创建完用户之后记得使用passwd ftpuser 命令设置密码



4、安装db4

yum install -y db4*

image.png


建立数据库文件并设置文件属性

把需要的用户名和密码都输入到login.txt

vim /etc/vsftpd/login.txt


然后执行以下命令:

db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db #将/etc/vsftpd/login.txt 文件变成 /etc/vsftpd/下面的 vsftpd_login.db 数据库文件

image.png


5、建立认证文件

vi /etc/pam.d/vsftpd.vu 插入以下两行, 这里需要注意的是 vsftpd.vu可以其任何名字,关键是要跟配置文件pam一致,一定不能有空格


auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required pam_useradd.so db=/etc/vsftpd/vsftpd_login


6、配置ftpuser用户访问权限

mkdir -p /etc/vsftpd/vsftpd_user_conf

cd /etc/vsftpd/vsftpd_usr_conf

image.png


anon_world_readable_only=YES #下载

anon_upload_enable=YES #上传

write_enable=YES #写文件

anon_mkdir_write_enable=YES #写目录

anon_other_write_enable=YES #删除文件

local_root=/data/ftpdir    #HOME目录



7、验证vsftp服务

Linux 验证:ftp 127.0.0.1 输入用户名:ftpuser 密码:ftp123456

image.png

提示ftp:command not found 主要是因为ftp是客户端,没有安装,需要安装ftp服务:

yum -y install ftp

image.png


vsftpd服务重启:

systemctl restart vsftpd

image.png

出现 vsftpd.service failed because the control process exited with error code.

出现错误的原因是:由于centos7中vsftp的配置文件默认将 listen_ipv6=YES 这一行没有注释掉,而我们目前的网络环境还不支持ipv6,从而导致出现错误无法启动,所以解决方法是将 listen_ipv6=YES更改为:listen_ipv6=NO,或将这一行注释掉

vi /etc/vsftpd/vsftpd.conf

listen_ipv6=NO

image.png


再次验证:


当出现230,便表示服务器端的FTP已经配置完成了


8.后记:

在第7步验证vsftp服务时出现了530错误,


下面链接里提出的解决思路还是清晰的

错误530的解决办法:blog.csdn.net/yunhan0609/…

但是博主犯的确是最低级的错误,在创建用户后没有指定密码,仅在login.txt中保存了用户名和密码