ftp(File Transfer Protocol):文本传输协议。它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
ftp许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
1、hostnamectl set-hostname westos_node1.westos.com 修改主机名
2、vim /etc/sysconfig/network-scripts/ifcfg-ens160 配置ip地址
3、vim /etc/yum.repos.d/westos.repo 配置软件仓库
dnf repolist
4、vim /etc/selinux config ---》SELINUX=disabled 关闭selinux
5、reboot
6、getenforce
服务主机上:
1、安装vsftpd:
dnf install vsftpd -y
systemctl enable --now vsftpd
2、vs文件配置
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES ##启动匿名用户访问功能
sytemctl restart vsftpd
3、防火墙设置:
systemctl enable --now firewalld
firewall-cmd --permanent --add-source=172.25.254.10 --zone=trusted
systemctl restart firewalld
测试主机上:
dnf install lftp -y ##安装lftp命令
测试安装发布两种方式:
1、firefox ftp://ip
2、lftp 172.25.254.20 ##此访问方式必须能列出资源才算访问成功
##在使用完成后请使用exit退出
vsftpd.service
/etc/vsftpd
/etc/vsftpd/vsftpd.conf
通过man方法来查看下载控制的配置文件
man 5 vsftpd.conf ## 查看配置信息
/var/ftp
550 ## 程序本身拒绝
553 ## 文件系统权限限制
500 ## 权限过大
530 ## 认证失败
lftp 172.25.254.20 ## 当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.20 -u westos ## 本地用户访问
匿名访问:
vim /etc/vsftpd/vsftpd.conf ## 编辑vsftpd服务的配置文件
anonymous_enable=YES/NO ## 配置文件中设定匿名用户可以/不可以访问
systemctl restart vsftpd ## 重启服务
在主机中设定anonymous_enable=NO,在客户机中无法匿名访问
anon_root=/westosdir ## 将/software设置为家目录
若不设置,默认目录为/var/ftp
主机中更改配置文件家目录指向新建文件夹/westosdir
客户机中访问,家目录已更改
anon_upload_enable=YES|NO ## 表示上传功能是否开启
mkdir /var/ftp/upload
chown ftp:root /var/ftp/upload
上传步骤:
lftp 172.25.254.20
cd /upload
put /etc/passwd
默认情况下,客户端匿名用户不可以上传文件,系统默认将该功能注释;
启动功能后,我们再次去上传文件,会发现报553错误,受到文件系统权限限制
chmod 775 /var/ftp/** ## 将子目录权限修改为最高权限
anon_world_readable_only=NO ## 匿名用户可以下载不能读的文件
anon_mkdir_write_enable=YES|NO
anon_other_write_enable=YES|NO
max_clients=2
anon_max_rate=102400
dd if=/dev/zero of=file bs=1M count=1000 ##建立文件file用于上传
设置前后的上传速率区别:
anon_umask=022 当设定chown_username之后上传文件权限将不是用此参数设定
chown_uploads=YES
chown_username=lee
chown_upload_mode=0644
设定匿名用户上传文件,文件的用户身份为lee
local_enable=NO|YES
服务主机:
useradd westos
useradd lee
echo lee | passwd --stdin westos
echo lee | passwd --stdin lee
lftp 192.168.0.10 -u lee
客户端测试:
lftp 192.168.0.10 -u lee
local_root=/westosdir
write_enable=NO|YES
local_umask=022
/etc/vsftpd/ftpusers ##永久黑名单配置文件
/etc/vsftpd/user_list ##临时黑名单配置文件
userlist_enable=YES
userlist_deny=NO ##将上述黑名单变为白名单
##不在名单中的用户不能登陆ftp
原来的黑名单变成白名单,westos可以登录,le’e不能登录
chmod u-w /home/*
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
##/etc/vsftpd/chroot_list文件里面设定用户westos
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
除匿名用户之外,还可设置虚拟用户来访问FTP。所谓虚拟用户,指存放于独立数据库文件中的FTP用户账户,可以将它们映射到某个不能登录的系统用户账号上,以进一步增强FTP服务器的安全性。
建立虚拟用户数据库文件
1、vim /etc/vsftpd/westos_user ## 编辑认证文件,自定义名字
内容:
westos1
123
westos2
123
westos3
123
2、加密认证文件
db_load -T -t hash -f westos_user westos_user.db ## 加密认证文件
注:db_load命令是一种固定用法
-T #允许非Berkeley DB的应用程序使用从文本格式转换的DB数据库文件
-t hash #指定读取数据文件的基本方法
-f #指定数据的源文件
3、编写认证策略文件westos_ftp
cd /etc/pam.d/
vim westos_ftp
account required pam_userdb.so db=/etc/vsftpd/westos_user
auth required pam_userdb.so db=/etc/vsftpd/westos_user
##注意在这里系统会默认加上.db后缀,因此我们不需要添加后缀名
4、编写认证策略配置文件
pam_service_name=westos_ftp ##指定认证策略文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在ftp服务器上的 用户身份
##指定的虚拟用户即可登录了,注意黑白名单的影响
local_root=/virtuserdir/$USER
user_sub_token=$USER
设置用户家目录为virtuserdir/westos1,并建立pub和user1file文件
user_config_dir=/etc/vsftpd/user_config ##在此目录中与用户名称相同的文件为用户配置文件
mkdir /etc/vsftpd/user_config
vim/etc/vsftpd/user_config/westos1
anon_upload_enable=YES