主要作用是文件共享,可以设置权限,针对企业用户,个人用户很难接触到
Tips. Linux对Windows中的病毒是免疫的!
主动模式
服务器从20端口主动向客户端发起连接
客户端通过用户名和密码登录FTP服务器,登录到服务器的21端口。
服务器端验证用户名密码,验证成功,允许客户端进行操作。
客户端随机开启1024以上的端口
客户端的端口传带一个PORT命令,同时发送开启了哪个随机端口(PORT命令:请你打开端口,向我传递数据)
服务器看到PORT命令,开启本机20端口,开始向客户端随机端口发送数据
被动模式
服务器在指定范围内某个端口被动等待客户端连接
一般采用被动模式,FTP默认是主动模式。
端口
FTP连接端口
常见的FTP服务器程序
相关文件
包名 vsftpd
主配置文件
用户控制列表文件
/etc/vsftpd/ftpusers
用户名写在该文件里,用户就会禁止登陆FTP(黑名单)
为什么root也在登陆FTP禁止名单里?
因为FTP是明文传输,用户名和密码很容易被截获!
/etc/vsftpd/user_list
、
相关用户
注意事项
关闭防火墙
关闭SELinux
方法1(重启不会保存)
方法2(改配置文件,重启保存)
默认配置文件
内容 | 说明 | 提示 |
---|---|---|
anonymous_enable=YES | 允许匿名用户登录 | 一般情况下不允许匿名用户登录,消耗服务器资源 |
local_enable=YES | 允许本地用户登录 | |
write_enable=YES | 允许本地用户上传 | |
local_umask=022 | 本地用户上传umask值 | 上传文件的默认权限(022对应的默认权限为644) |
dirmessage_enable=YES | 用户进入目录时,显示.message信息 | |
message_file=.message | 指定信息文件 | |
xferlog_enable=YES | 激活记录日志 | |
connect_from_port_20=YES | 主动模式数据传输接口 | |
xferlog_std_format=YES | 使用标准的ftp日志格式 | |
ftpd_banner | 登录欢迎信息 | 这里要写警告信息! |
listen=YES | 允许被监听 | 默认端口21 |
pam_service_name=vsftpd | 设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件 | 采用pam验证,就是Linux用户名和密码验证(明文传递!!!!) |
userlist_enable=YES | 用户登录限制 | |
tcp_wrappers=YES | 是否使用tcp_wrappers作为主机访问控制方式 | 简单的“防火墙” |
Tips. Linux中绝大多数服务装起来就可以使用了
常用全局配置(没有写在默认配置文件)
内容 | 说明 | 提示 |
---|---|---|
listen_address=192.168.4.1 | 设置监听的IP地址 | |
listen_port=21 | 设置监听FTP服务器的端口号 | 不建议改 |
download_enable=YES | 是否允许下载文件 | |
max_clients=0 | 限制并发客户端连接数 | 要进行设置(连接过多会将服务器拖死) |
max_per_ip=0 | 限制同一IP地址的并发连接数 | 要进行设置 |
被动模式
内容 | 说明 | 提示 |
---|---|---|
pasv_enable=YES | 开启被动模式 | |
pasv_min_port=24500 | 被动模式最小端口 | 端口应该大于一万,小于65535 |
pasv_max_port=24600 | 被动模式最大端口 |
常用安全模式
内容 | 说明 | 提示 |
---|---|---|
accept_timeout=60 | 被动模式,连接超时时间 | |
connect_timeout=60 | 主动模式,连接超时时间 | |
idel_session_timeout=600 | 600秒没有任何操作结束端口连接 | |
data_connection_timeout=500 | 资料传输时,超过500秒没有完成就断开传输 |
Tips. FTP的配置文件不允许在配置内容后写注释和空格!应该换行写
命令行
ftp ip地址
输入用户名,密码
登录成功
FTP命令
客户端在哪个目录下执行的FTP命令就会下载到哪个地方
服务器在这个用户的家目录上传文件
命令行模式不支持目录下载和断电续传
Windows对话框
可以上传下载目录
flashFXP客户端工具
内容 | 说明 | 提示 |
---|---|---|
anonmous_enable | 允许匿名用户访问 | |
anon_upload_enable | 允许匿名用户上传(新建文件) | |
anon_mkdir_write_enable=YES | 允许匿名用户创建目录 | |
anon_umask | 设置上传的默认文件权限(默认600) |
匿名用户不可切换目录,登录目录是/var/ftp/
只要是匿名用户登录,服务器系统上默认登录的用户是ftp
匿名用户是否能上传取决于配置文件权限和用户权限
使用的用户名和密码是服务器系统中的用户
登录的默认位置是用户的家目录
本地用户基本配置
内容 | 说明 | 提示 |
---|---|---|
local_enable=YES | 允许本地用户登录 | |
write_enable=YES | 允许本地用户上传 | |
local_umask=022 | 本地用户上传的umask值 | |
local_root=/var/ftp | 设置本地用户的FTP目录 | 注意目录权限,对所有人都生效,不区分目录,只有目录权限和用户权限都允许上传才可以上传文件 |
local_max_rate=0 | 限制最大传输速率(字节/秒) | |
chroot_local_user=YES | 开启用户目录限制 | 只有此行,把所有用户都限制在用户主目录中 |
指定用户只能在家目录,指定用户可以访问根目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list (该文件中的用户可以访问任何目录,其他用户现在家目录)
用户访问控制文件
/etc/vsftpd/ftpusers 黑名单
/etc/vsftpd/user_list 黑名单,可以变为白名单
访问控制
userlist_enable=YES 开启用户访问控制
userlist_deny=YES
Userlist_file=/etc/vsftpd/user_list
写入/etc/vsftpd/user_list 中的的用户不能访问FTP服务器,没有写入的可以访问(默认如此)
不要把限制用户主目录和用户访问限制搞混!
chroot_local_user=YES用于把用户禁锢在主目录中
userlist_enable=YES 用户访问控制
配置虚拟用户步骤
添加虚拟用户口令文件
vim /etc/vsftpd/vuser.txt (这个文件可以叫任何名字,也可以放在任何位置,建议这样写!)
cangle 用户名
123 密码
bols 用户名
123 密码
生成虚拟用户口令认真文件
yum -y install db4-utils
如果没有安装口令认证命令需要安装!
db_load_T -t hash -f /etc/vsftpd/vuser.txt
把文本文档转变为认证数据库
编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
注释掉其他行(注释其他行可以禁止本地用户登录,因为本地用户登录时的验证依赖这个文件)
加入
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
建立本地映射用户并设置宿主目录权限
useradd -d /home/vftproot -s /sbin/nologin vuser
此用户不需要登录,只是映射用户,不需要设置密码
用户名必须和下一步配置文件中一致
chmod 755 /home/vftpproot
修改配置文件
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES 开启虚拟用户
guest_username=vuser FTP虚拟用户对应的系统用户
pam_serivice_name=vsftpd PAM认证文件(默认存在)
重启vsftpd服务,并测试
service vsftpd restart
(此时虚拟用户可以登录,查看,下载,不能上传)
(默认上传文件的位置是宿主用户(vuser)的家目录)
(权限使用的是匿名用户权限进行管理)
调整虚拟用户权限
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 关闭匿名用户登录,更安全
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
给所有虚拟用户设定权限,允许所有虚拟用户上传