Linux服务-FTP文件服务器部署
分类:
文章
•
2024-09-03 16:31:40
FTP服务搭建
- 简介
- 文件传输协议
- FTP共享是基于TCP/IP协议
- C/S
- FTP服务器共享按照文件目录来组织的
- FTP只支持TCP不支持UDP
- 两个端口:一个数据端口一个控制端口(命令端口)
- 端口
- 21端口
- 20端口
- 由于FTP工作方式四不同,数据端口不一定一直是20(想念那年软考的这一题)
- 分为主动FTP与被动FTP
- 主动模式从服务端向客户端发起连接,被动模式客户端向服务端发起连接
- 两者都是21端口进行用户验证管理
- 差别在于数据端口不同
- 主动模式(Standard/Active):FTP服务端主动向FTP客户端发起连接请求
- 主动的连接方式的FTP客户端从一个任意的非特权端口N(高位端口N>1024)连接到FTP服务端的命令端口21
- 然后客户端开始监听N+1,并发送FTP命令"port N+1"到FTP服务器
- 接着服务器会从自己的数据端口20连接到客户端指定的数据端口(N+1)
- 主动模式下,服务器开启的是20和21两个端口,客户端连接的是大于1024的高位端口
- 被动模式(Passive/PASV):FTP服务端等待FTP客户端发起连接请求
- 由客户端主动发起,当开启一个FTP连接时,客户端打开任意两个高位端口(N>1024.N+1)
- 第一个端口会连接服务端21端口,但与主动模式不同,客户端不会发起post命令,而是提交PASV命令
- 此时服务器会开启一个任意的高位端口,并发送,命令PORT P发送到客户端
- 客户端从本地端口N+1连接到服务器的P端口用来传输数据
- 数据段不再是20,而是任意的高位端口
- FTP服务器实现
- 服务端
- 软件
- vsftp,proftpd,wuftpd,puireftpd
- 一般常用vsftp
- 小巧轻快,安全易用
- vsftp
- 安装
- yum install vsftpd -y
- rpm -qa | grep vsftpd
- 配置
- 临时关闭selinux
- 运行防火墙通过
- firewall-cmd --permanent --add-service=ftp
- firewall-cmd --reload
- 重启服务
- systemctl restart vsftpd
- systemctl enable vsftpd
- 修改配置文件
- 配置匿名FTP服务
- 将默认的目录赋予用户ftp权限以便上传
- chown -R ftp /var/ftp/pub
- 修改配置文件
- 重启服务
- 配置实名FTP服务
- 配置虚拟用户模式
- 因为虚拟用户模式的账号和口令都不是真实系统中存在的,所以配置虚拟用户模式会比本地用户更加安全。
- 创建虚拟用户数据库
- vim /etc/vsftpd/vlogin
- 使用db_load命令用hash算法生成FTP用户数据库文件vlogin.db
- db_load -T -t hash -f /etc/vsftpd/vlogin /etc/vsftpd/vlogin.db
- chmod 600 /etc/vsftpd/{vlogin,vlogin.db}
- 创建pam文件,设置基于虚拟账户验证
- linux中一般通过pam文件设置账号的验证机制,然后通过创建新的pam文件使用新的数据文件进行登录验证
- pam文件的db选项用于指定并验证账户和密码的数据库文件,数据库文件无需.db结尾
- vim /etc/pam.d/vsftpd.pam
- auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
- account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
- 设置虚拟账户的共享目录
- 所有的虚拟账号都需要映射到一个真实的虚拟账号
- useradd -s /sbin/nologin -d /home/ftp virtual
- echo "hello" > /home/ftp/test.txt
- 修改配置文件
- vim /etc/vsftpd/vsftpd.conf
- 为每个用户设置独立的共享路径
- 通过在主配置文件中使用user_config_dir选项,设置一个基于账户的配置目录
- 该目录下可以创建若干个与账户名称同名的文件,并在文件中此账户设置独立的配置选项,包括权限、路径等
- mkdir /etc/vsftpd_user_conf
- vim /etc/vsftpd_user_conf/susa
- local_root=/home/ftp/$USER
- 重启服务
- 客户端
- ftp
- 多种客户端软件
- 安装
- yum install ftp
- apt install ftp
- 使用
- 使用
- 发现创建目录失败可能Selinux问题,修改规则
- setsebool -P ftpd_full_access=on
- systemctl restart vsftpd.service