如何实现一个基于Linux环境的FTP系统。基于客户⼀服务器交互模式,采用TCP⼀IP通信协议

2024-11-06 14:39:00
推荐回答(3个)
回答(1):

ftp服务器的配置
ftp 叫做文件传输协议 他已经有40年的历史了 它以明文的形式进行传输的
ftp的端口号是21
当端口号为21 时:是以命令控制. 发送命令来执行的
20时: 是数据控制 ,提供数据的下载上传
ftp的模式: 分为 主的模式 与控制模式
ftp数据的传输格式 accii 二进制
ftp的用户类型 :匿名用户:anonymous或ftp
本地用户:帐号名称、密码等信息保存在passwd、shadow文件中
虚拟用户:使用独立的账号/密码数据文件
常见的ftp服务器程序
iis serv-u wu-ftpd proftpd
vsftpd rery ecare ftp daemon 这几种是linux常用的
常见的ftp客户端程序
GuteFTP Flashftf leapFTP FILEzilla
gftp kufp
在linux中我们常用的一款ftp服务器软件就是vsftp 现在我们就介绍一下它的用法
vsftp的官方站点时
主程序在/usr/sbin/vsftpd
服务器名是vsftpd
如果你的l主机没有vsftpd这款软件 你可以到官方进行下载安装,安装的方法我们在这里不提了。linux人都知道
vsftpd的配置 其中vsftpd的主配置文件在 /usr/sbin/vsftpd
用户控制列表文件:
/etc/vsftpd/ftpusers 禁止登陆的ftp 用户列表
/etc/viftpd/user_list 仅提供一份ftp用户列表,是否禁止登陆取决于主配置文件中的设置
下面我们介绍一下构建基于虚拟用户的vsftpd服务器 它大体分为7部
1.建立虚拟FTP用户的帐号数据库文件
2.创建FTP根目录及虚拟用户映射的系统用户
3.建立支持虚拟用户的PAM认证文件
4.在vsftpd.conf文件中添加支持配置
5.为个别虚拟用户建立独立的配置文件
6.重新加载vsftpd配置
7.使用虚拟FTP账户访问测试

1:建立虚拟ftp用户的账号数据库文件
建立虚拟用户的账号名 密码列表
vim /etc/vsftpd/vusers.list
随便填写几组密码 定义可以访问的ftp账号
如:AA //账号
124 密码
BB
321
但是ftp并不认识这些虚拟账户密码 我们要用一款软件把它转换成,这款软件是db4-utils 如果你的机子没有。去网上下载安装一下,安装方法很简单
yum install –y db4-utils 安装完了,我们就可以用它了
db_load -T -t hash -f vusers.list vusers.db
更改文件的权限 chown 600 /etc/vsftpd/vusers.*

2 创建ftp 根目录及虚拟用户映射的系统用户
新建目录 mkdir /var/ftproot
创建用户 useradd –d /var/ftproot –s /sbin/nologin virtual
chmod 755 /var/ftproot./
3 建立支持虚拟用户的pam 认证文件
vim /etc/pam.d/vsftpd.vu
写入下面内容
#%PAM-1.0
auth requirel pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
4. 在vsftpd.conf文件中添加支持配置
[root@filesvr ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
5.为个别虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
user_config_dir=/etc/vsftpd/vusers_dir
为用户mike、john建立独立的配置目录及文件
配置文件名与用户名同名
[root@filesvr ~]# mkdir /etc/vsftpd/vusers_dir/
[root@filesvr ~]# cd /etc/vsftpd/vusers_dir/
[root@filesvr vusers_dir]# touch mike
[root@filesvr vusers_dir]# vi john
anon_upload_enable=YES
anon_mkdir_write_enable=YES
6.重新加载vsftpd配置
service vsftpd reload
7.使用虚拟FTP账户访问测试

分别用mike、john用户登录FTP服务器进行下载、上传测试
mike用户可以登录,并可以浏览、下载文件,但无法上传
john用户可以登录,并可以浏览、下载文件,也可以上传
匿名用户或其他系统用户将不能登录

回答(2):

FTP服务器有现成的 vsftp 等等,如果只是文件上传下载没有必要重新造轮子。配置问题可以参看鸟哥linux私房书,或 vsftp 的帮助手册

如果是实现类似飞鸽传输、QQ等类似的私有传输软件,需要了解 socket 和 TCP/IP 相关知识。可以参考《UNIX高级环境编程》一类的书籍

回答(3):

安装vsftpd