FTP服务器

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > FTP服务器 > Linux搭建FTP服务器

Linux系统搭建FTP服务器完整步骤

作者:Хан

这篇文章主要给大家介绍了关于Linux系统搭建FTP服务器的相关资料,众所周知安装ftp主要是还为了传输文件,文中通过图文介绍的非常详细,需要的朋友可以参考下

FTP协议:文件传输协议(File Transfer Protocol)

FTP模型

控制连接(端口号21)

数据连接(端口号20)

主动模式

被动模式

VSFTPD服务介绍

参数作用
listen=NO是否以独立运行的方式监听服务
listen_address=ip地址设置要监听的IP地址
listen_port=21设置FTP服务的监听端口
download_enable=YES是否允许下载文件
userlist_enable=YES设置用户列表为"允许"
userlist_deny=YES设置用户列表为"禁止"
max_clients=0最大客户端连接数,0为不限制
max_per_ip=0同一IP地址的最大连接数,0为不限制
anonymous_enable=YES是否允许匿名用户访问
anon_upload_enable=YES是否允许匿名用户上传文件
anon_umask匿名用户上传文件的umask
anon_root=/var/ftp匿名用户的ftp根目录
anon_mkdir_write_enable=YES是否允许匿名用户创建目录
anon_other_write_enable=YES是否开放匿名用户的其他写入权限(重命名、删除等)
anon_max_rate=0匿名用户的最大传输速率,0为不限制
local_enable=yes是否允许本地用户登录
local_umask=022本地用户上传文件的umask值
local_root=/vat/ftp本地用户的ftp根目录
chroot_local_user=YES是否将用户权限禁锢在ftp目录,以确保安全
local_max_rate=0本地用户的最大传输速率,0为不限制

基础配置

安装vsftp

[root@localhoust ~]#yum -y install vsftpd

准备分发的文件

[root@localhoust ~]#touch /var/ftp/abd.txt

启动服务

[root@localhost ~]#systemctl start vsftpd
[root@localhost ~]#systemctl enable vsftpd

关闭防火墙

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

客户端工具

Linux中

1.使用ftp工具

[root@localhost ~]# yum install ftp -y
[root@localhost ~]# ftp <IP地址>
Name (192.168.175.10:root):anonymous
password:直接回车

ftp工具一定要输入用户名和密码,匿名用户登陆用户名写anonymous,密码直接回车,登陆成功或者失败都会给出提示

2.使用lftp工具

[root@localhost ~]# yum install lftp -y
[root@localhost ~]# lftp <IP地址>

lftp工具不需要输入用户名和密码直接登陆,不会直接给出登陆成功或者失败的提示,需要输入ls工具才能知道是否连接成功,优点在于连接更加方便

Windows中

1.在浏览器中访问

可以在浏览器、运行窗口或者资源管理器中输入 ftp://IP地址/ ,这样访问的是ftp的根位置,如果需要访问相关目录可以输入 ftp://IP地址/目录/文件名

2.在控制管理器中访问

在cmd窗口中,输入命令 ftp <IP地址> 即可访问

需要注意的是直接访问ftp服务器的IP地址时访问的根位置目录是 /var/ftp,如果需要访问pub里的test可以访问 ftp://192.168.80.129/pub/test 。

案例

案例1,匿名用户访问(默认开启)

修改配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@localhost ~]# systemctl restart vsftpd #重启配置

新版本的vsftp针对用户安全性进行了升级,普通用户无法在/var/ftp下新建文件,如果直接添加目录的w权限会触发安全判断问题,因为/var/ftp目录下的文件只能是默认的755权限,普通用户没有w权限,而且/var/ftp目录的属主必须是root,如果修改所属主或者权限则会触发完全问题。欲使普通用户可以在ftp中上传文件,就在/var/ftp下新建一个用于普通用户上传文件的目录,比如/var/ftp/pub,将/var/ftp/pub目录的属主和属组改成ftp,并且添加w权限

chown ftp.ftp /var/ftp/pub
chmod 777 /var/ftp/pub

现在就可以在里面写文件了

案例2,本地用户访问

这些用户就是Linux下的用户,使用本地用户登陆,登陆成功时位置在该用户的家目录。如:用户han登陆时,输入han在Linux下的密码,登陆成功后位置在/home,han可以在该目录下创建或者删除文件

修改配置文件

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允许匿名用户访问
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@localhost ~]# systemctl restart vsftpd #重启配置
[root@localhost ~]# systemctl enable vsftpd

本地用户登陆时,密码使用的是该用户在Linux下登陆时的密码,而不是ftp的密码

注意:出现在/etc/vsftpd/ftpusers /etc/vsftpd/user_list这两个文件中的内容将会被定义为黑名单

案例3,虚拟用户访问

只用于登陆ftp的用户,不是Linux下的用户。

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vuser.list #创建文件,稍后虚拟用户信息从这个文件读取
eagle #用户名
centos #密码
cisco #用户名
centos #密码
huawei #用户名
centos #密码
[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db

由于文件vuser.list中含有密码等敏感信息,所以使用加密算法加密。转换完后新的文件vuser.db就是用户数据库,里面是加密后的信息。

查看vuser.db的文件类型:

[root@localhost vsftpd]# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost vsftpd]# chmod 600 vuser.db
[root@localhost vsftpd]# rm -f vuser.list
[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
#-d 指定用户的家目录为/var/ftproot -s 指定为不能登陆的用户
[root@localhost vsftpd]# ls -ld /var/ftproot/
drwx------. 2 virtual virtual 59 8月 10 23:04 /var/ftproot/
[root@localhost vsftpd]# chmod -Rf 755 /var/ftproot/

新建一个用于虚拟用户认证的PAM文件vsftpd.vu,利用pam模块(linux内核的一个认证模块)做一个认证

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual #名为virtual的用户做代理
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu #记得修改这里为我们自己的认证文件
userlist_enable=YES
tcp_wrappers=YES
[root@localhost vsftpd]# systemctl restart vsftpd

这时用户创建完毕,可以登陆,但是不能写文件,需要给权限

[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/ #创建一个目录用于存放各个虚拟用户的配置文件
[root@localhost vsftpd]# cd /etc/vsftpd/vusers_dir/
[root@localhost vusers_dir]# touch huawei #创建huawei的配置文件,如果不给任何权限,则默认为主配置文件
[root@localhost vusers_dir]# vim cisco #创建cisco的配置文件,并修改配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#与配置匿名用户权限一样
[root@localhost vusers_dir]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir #在主配置文件中加上这一行,告诉主配置文件我们这里还有配置
[root@localhost vusers_dir]# systemctl restart vsftpd
配置完后,huawei没权限,cisco有权限

总结 

到此这篇关于Linux系统搭建FTP服务器的文章就介绍到这了,更多相关Linux搭建FTP服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文