Linux环境下搭建FTP服务器

软件版本

1.Linux:CentOS Linux release 7.6.1810 (Core)
2.FTP:vsftpd-3.0.2-25.el7.x86_64

安装vsftpd

// 1.检查是否安装了vsftpd(如果显示版本号,则说明已安装)
[root@localhost]# rpm -q vsftpd
// 2、安装vsftpd
[root@localhost]# yum install vsftpd -y
// 3、安装ftp命令
[root@localhost]# yum install ftp -y

配置vsftpd

# vsftpd config file /etc/vsftpd/vsftpd.conf

# 是否允许匿名访问
anonymous_enable=YES
# 定义匿名登入的使用者名称(默认值:ftp)
ftp_username=ftp
# 匿名用户的家目录(默认值:/var/ftp,注意此时匿名用户的家目录不能是777权限,而是755权限)
anon_root=/var/ftp/pub
# 是否允许匿名FTP用户上传文件(默认:NO)
anon_upload_enable=NO
# 允许匿名登入者下载可阅读的档案(默认:YES)
anon_world_readable_only=YES
#是否允许匿名FTP用户新建文件夹(默认:NO)
anon_mkdir_write_enable=NO
#匿名用户拥有除了上传和新建目录之外的其他权限(例如:删除、重命名,默认:NO)
anon_other_write_enable=NO
# 设置是否改变匿名用户上传文件(非目录)的属主(默认:NO)
chown_uploads=NO
# 设置匿名登入者新增或上传档案时的umask 值(默认:077)
anon_umask=077

# 是否允许本地用户访问
local_enable=YES
# 是否允许本地用户写入
write_enable=YES
# 是否允许本地用户进行上传
allow_writeable_chroot=YES
# 本地用户的权限掩码
local_umask=022

# 是否启用user_list用户列表文件
userlist_enable=NO
# 是否拒绝列表用户访问ftp
userlist_deny=NO
# user_list用户列表文件路径
userlist_file=/etc/vsftpd/user_list
# 备注:
# 当userlist_enable=NO时,userlist_deny无论为何值都无效,本地全体用户(除去ftpusers中的用户)都可以登入FTP
# 当userlist_enable=YES,userlist_deny=YES时,user_list便是黑名单,列表用户无法进行访问
# 当userlist_enable=YES,userlist_deny=NO时,user_list便是白名单,只有列表用户才能进行访问(匿名用户此时将无法登入)

# 是否将所有用户限制在主目录(默认:NO,不限制;YES:限制)
chroot_local_user=YES
# 是否启动例外用户名单,使文件中的用户可以跳出主目录(默认:NO)
# chroot_list_enable=NO
# 哪些用户是例外,不受限制(默认:/etc/vsftpd/chroot_list)
# chroot_list_file=/etc/vsftpd/chroot_list
# 设置用户配置文件目录
user_config_dir=/etc/vsftpd/userconfig
# 指定系统用户的FTP根目录
# local_root=/var/ftp

# 激活目录消息
dirmessage_enable=YES

####################超时设置####################
# 空闲连接超时
idle_session_timeout=600
# 数据传输超时
data_connection_timeout=600
# 主动模式,连接超时
connect_timeout=60
# 被动模式,连接超时
accept_timeout=60

#################服务器功能选项#################
# 是否开启日志
xferlog_enable=YES
# 标准格式
xferlog_std_format=YES
# ftp日志目录
xferlog_file=/var/log/vsftpd/xferlog.log
# 是否允许主动模式
port_enable=YES
# 是否取消安全检查(默认:NO)
port_promiscuous=YES
# 是否允许被动模式(默认:YES)
pasv_enable=YES
# pasv使用的最大端口
pasv_max_port=10240
# pasv使用的最小端口
pasv_min_port=20480
# 开启tcp_wrappers支持
tcp_wrappers=YES
# 权限验证需要的加密文件(默认:vsftpd)
pam_service_name=vsftpd

#################服务器性能选项#################
# 是否能使用ls -R命令以防止浪费大量的服务器资源
ls_recurse_enable=YES
# 是否以独立运行的方式监听服务
listen=YES
# 设置FTP服务的监控端口
listen_port=21
# 是否监听ipv6
listen_ipv6=NO
# 确保端口传输连接来自端口20
connect_from_port_20=YES
# 当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。
# 若是希望出现拥有者的名称,则将此功能开启
text_userdb_names=NO
# 显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果
use_localtime=NO

##################用户连接选项##################
# 可接受的最大client数目
max_clients=100
# 每个ip的最大client数目
max_per_ip=5
# 使用标准的20端口来连接ftp
connect_from_port_20=YES

##################数据传输选项##################
# 设置匿名登入者使用的最大传输速度(单位为B/s;默认值为:0,表示不限制速度。)
anon_max_rate=102400
# 本地用户使用的最大传输速度(单位为B/s;默认值为:0,表示不限制速度。)
local_max_rate=1048576

用户配置文件

# vsftpd user config file /etc/vsftpd/userconfig/ftpuser1
local_root=/var/ftp/ftpuser1

# vsftpd user config file /etc/vsftpd/userconfig/ftpuser2
local_root=/var/ftp/ftpuser2

启动vsftpd

// 4、启动vsftpd
[root@localhost]# systemctl start vsftpd
// 4、重启vsftpd服务(或者)
[root@localhost]# systemctl restart vsftpd
// 5、设置开机自动启动
[root@localhost]# systemctl enable vsftpd

创建FTP用户

// 1、创建用户
[root@localhost]# useradd -d /home/ftpuser -g ftp -s /sbin/nologin ftpuser 

// 2、设置用户密码
[root@localhost]# passwd ftpuser

测试

  • 方法一:使用命令行
[root@localhost]# ftp localhost
  • 方法二:使用浏览器
    打开浏览器,输入ftp://服务器ip,如果能显示你的ftp目录,则说明登录成功

可能遇见的问题

  • 问题:使用 -s /sbin/nologin 创建用户导致无法登陆FTP和SFTP
  • 解决方法:在/etc/shells里增加一行 /sbin/nologin

你可能感兴趣的:(Linux,FTP)