ftp:文件传输协议,应用层协议
windows系统:server版的IIS中集成;servU实现;第三方ftp软件,fellzilla-server
linux系统:vsftpd;proftp
ftp服务监听TCP的21号端口,主要是建立会话链接;数据传输时使用20号端口,用于与客户端的数据传输
1.ftp的工作模式:
1)主动模式:ftp主动打开20号端口,向客户端进行数据传送
2)被动模式:ftp等待客户端链接,打开随即端口
2.ftp服务器安装:
1) 关闭防火墙及SElinux:
systemctl stop firewalld;systemctl disable firewalld
setenforce 0;vim /etc/selinux/config-->SELINUX=disabled[该操作需要重启系统]
2) 配置静态IP地址:
修改/etc/sysconfig/network-scripts/ifcfg-ens33文件
3)安装vsftpd软件包:
a)配置yum源
cd /etc/yum.repos.d/
mkdir bak
mv CentOS-* bak/
vim local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
mount /dev/sr0 /mnt
b)安装软件包:
yum install -y vsftpd ftp【客户端软件包】
3.ftp安装目录[/etc/vsftpd]中文件:
1)ftpusers:该文件中的所有用户不能访问FTP服务器,相当于ftp的黑名单
2)user_list:该文件中的用户是否可以登录取决于/etc/vsftpd/vsftpd.conf文件中的配置项:userlist_deny=YES/NO;如果是YES,则文件中用户不可登录;如果为NO,则可登录。
3)vsftpd.conf
作用范围 配置项 说明
匿名用户 anonymous_enable=YES 是否允许匿名用户访问
虚拟用户 anon_upload_enable=YES 是否允许匿名用户上传
anon_mkdir_write_enable=YES 是否允许匿名用户创建目录
anon_umask=022 设置匿名用户上传文件的权限掩码
anon_root=/var/ftp 设置你名用户根目录
anon_other_write_enable=YES 设置匿名用户的其他写入权限
本地用户 local_enable=yes 是否允许本地用户访问
local_umask=022 设置本地用户上传文件的权限掩码
local_root=$HOME 设置本地用户根目录,默认用户家目录
chroot_local_user=yes 是否禁锢宿主目录
local_max_rate=0 设置传输速度,0表示不限制
全局配置 listen=YES 设置IPv4监听,与IPv6监听不能同时开启
listen_ipv6=NO 设置IPv6监听
listen_address=0.0.0.0 设置监听地址
listen_port=21 设置监听端口号
write_enable=yes 设置是否开启所有写入权限
download_enable=yes 设置是否可以下载
userlist_enable=yes 设置是否启用user_list列表
userlist_deny=yes 设置user_list列表中用户是否能登录
allow_writeable_chroot=yes 允许对目录具有写入权限的用户锁定宿主目录
user_config_dir=/etc/vsftpd/vusers_dir 设置虚拟用用户权限目录
4. ftp配置:
1)匿名访问:
配置过程:ftp根目录:/var/ftp/
默认安装完毕启动服务即可!
systemctl start vsftpd
匿名用户:ftp、anonymous,没有密码
anonymous_enable=YES
local_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
若要匿名用户具有写入权限,需要设置本地/var/ftp/目录的权限为777
chmod -R 777 /var/ftp/pub
访问验证:
linux系统:
ftp 192.168.100.1;ftp;enter
windows系统:
win+E-->ftp://192.168.100.1-->对话框
2)本地用户访问:
配置过程:本地用户的家目录
useradd lisi
passwd lisi
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=yes
验证访问:
linux系统:
ftp 192.168.100.1;lisi;123
windows系统:
win+E-->ftp://192.168.100.1-->对话框
3)虚拟用户访问: //非重点配置
配置过程:
a)建立用户名与密码列表
vim /etc/vsftpd/vusers.list
user1
123
user2
234
b)创建Berkeley数据库文件
cd /etc/vsftpd
db_load -T -t hash -f vusers.list vusers.db
chmod 600 vusers.*
c)创建虚拟用户的映射帐号并且创建访问根目录
useradd -d /var/vftproot -s /sbin/nologin vuser
chmod 755 /var/vftproot
d)为虚拟用户建立PAM认证文件
cd /etc/pam.d/
vim vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
e)修改vsftpd.conf,添加虚拟用户的支持
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
tcp_wrappers=YES
allow_writeable_chroot=yes
guest_enable=yes
guest_username=vuser
f)可以为不同的虚拟用户设置不同的权限:
cd /etc/vsftpd/
vim vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
systemctl restart vsftpd
mkdir /etc/vsftpd/vusers_dir
vim user1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
touch user2
说明:以上设置可以实现,user1可下载可上传;user2只能下载;加入要设置不同虚拟用户登录后在不同的根目录中,需在权限目录中对应的文件下写入:local_root=目录
5.ftp服务器登录说名:
2xx或者3xx开头,说明操作成功,或者登录成功
4xx或者5xx开头,说明操作失败,或者登录失败
命令补充:
w:查看正在连接系统的用户;
last:查看登录成功但是已经断开连接的用户。
lastb:查看尝试登录系统但是没有成功的用户!