centos7搭建FTP服务器
1. 安装
# 安装 vsftpd yum -y install vsftpd
2. 启动服务并添加到开机自启
# 启动 vsftpd systemctl start vsftpd # 设置开机启动 systemctl enable vsftpd # 查看服务状态和端口(默认端口是 21 ) systemctl status vsftpd netstat -nltp | grep 21 -------------------------------------- -bash: netstat: 未找到命令 执行 yum -y install net-tools --------------------------------------
3. 防火墙设置
3.1 关闭防火墙
# 关闭防火墙 systemctl disable firewalld # 查看防火墙状态 systemctl status firewalld
3.2 关闭 selinux
# 临时关闭 getenforce setenforce 0 getenforce #永久关闭 vi /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled # 重启服务器 reboot
因为我已经永久关闭 selinux 了,所以临时关闭提示信息是这些,正常情况下提示信息如下所示
4. 配置
4.1 配置文件说明
# 配置文件在 /etc/vsftpd 目录下 vsftpd.conf 核心配置文件 ftpusers 黑名单,不允许访问 FTP 服务器的用户列表,一行一个账号 user_list 白名单,允许访问 FTP 服务器的用户列表,一行一个账号
4.2 配置本地登录
(1) 修改配置文件
# 备份 mv vsftpd.conf vsftpd.conf.bak
# 编辑配置文件
vi vsftpd.conf
# 是否允许虚拟用户访问
anonymous_enable=NO
#
# 是否允许本地用户登录 ftp
local_enable=YES
#
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=6000
data_connection_timeout=1200
connect_from_port_20=YES
#
# 将不在 /etc/vsftpd/chroot_list 文件中的用户限制在其家目录下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#
# 当用户主目录不在根目录下时需要添加此参数
allow_writeable_chroot=YES
#
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# 本地用户的 ftp 根目录
local_root=/data/ftpdata
listen=YES
listen_ipv6=NO
#
# 认证
pam_service_name=vsftpd
#
tcp_wrappers=YES
chroot_list 在安装时是没有的,这个需要自己创建
在配置文件中 chroot_local_user=YES 和 chroot_list_enable=YES ,这表示
① 所有用户都被限制在其主目录下
② 使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list ,这些用户作为“例外”,不受限制
cd /etc/vsftpd/
# 编辑 chroot_list 将 root 加进去
vi chroot_list
/var/log/xferlog 需要创建
该日志文件记录 FTP 会话,可以显示出用户向 FTP 服务器或从服务器拷贝了什么文件。会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。
该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统 名称、文件大小、本地路径名、传输类型(a:ASCII,b:二进制)、与压缩相关的标志或tar,或"_"(如果没有压缩的话)、传输方向(相对于服务 器而言:i代表进,o代表出)、访问模式(a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或 0),认证用户的ID或"*"。
cd /var/log touch xferlog
修改了配置文件之后要重启 vsftpd 服务 systemctl restart vsftpd ,以生效配置。
(2) 创建本地用户并设置密码
# 添加用户,指定其家目录、所属组及登入后所使用的 shell,/sbin/nologin 表示不允许 login 系统 # 主用户 useradd ftpuser -d /data/ftpuser -s /sbin/nologin -g ftp # 子用户 useradd ftp_liu -d /data/ftpdata/ftp_liu -s /sbin/nologin -g ftp useradd ftp_li -d /data/ftpdata/ftp_li -s /sbin/nologin -g ftp ... # 设置密码 passwd ftpuser
(3) 添加白名单
cd /etc/vsftpd/ vi user_list
ftpuser
(4) 修改目录权限
chmod 755 /ftpuser/ chown -R ftpuser:ftp /ftpuser/
(5) 修改 /etc/pam.d/vsftpd
为什么要修改这个文件呢?
我们前面在配置文件中设置 pam_service_name=vsftpd ,即指定 vsftpd 的认证走/etc/pam.d/vsftpd 文件。
(6) 登录测试
前面在配置文件中,我们配置了 chroot_local_user=YES 和 chroot_list_enable=YES ,所以没有写进 chroot_list 中的用户都会被限制在当前用户目录下,不能往上一级切换
简单说明一下,如图所示, ljq_1 目录的权限是 700 ,即该目录除了目录的所有者具有完整的权限之外,其他所有用户对该目录完全没有任何权限。所以可以通过调整目录的权限规定每个 ftp 用户能进行的操作。
# 参数简介
r 读( 看目录有什么,如 ll ) w 可以在目录里创建、删除、移动文件、文件夹,如 touch mkdir rm mv cp x 表示用户可进入到该目录中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)