是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。
yum install vsftp -y 下载服务器端软件
yum install lftp -y 下载客户端软件
systemctl start vsftpd 启动ftp服务
systemctl enable vsftpd 开机自启动
rpm -qc vsftpd 查看服务相关配置文件
/etc/vsftpd/
ftpusers 永久黑名单
vsftpd.conf 服务配置文件
user_list 暂时黑名单
vim /etc/vsftpd/vsftpd.conf
匿名用户登录
anonymous_enable=YES|NO
匿名用户上传
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
匿名用户修改家目录
anon_root=/dir
匿名用户上传文件权限修改
anon_umask=xxx
匿名上传文件的拥有者
chown_uploads=YES
chown_username=student
匿名上传文件权限修改
chown_upload_mode=xxxx
匿名上传速率限制
anon_max_rate=?
最大连接数
max_clients=3
匿名用户上传下载
vim /etc/vsftpd/vsftpd.conf
匿名用户修改家目录
vim /etc/vsftpd/vsftpd.conf
anon_root=/westos
本地用户
local_enable=YES|NO 本地用户是否可以登陆
write_enable=YES|NO ftp是否对登陆用户可写
本地用户上传保留权限
local_umask=xxx
将用户锁定到自己家目录中
chroot_local_user=YES
chmod u-w /home/*
实验流程:
1、开启本地用户服务
2、编辑/etc/vsftpd/vsftpd.conf
3、客户端测试
法1、vim /etc/vsftpd/vsftpd.conf 插入以下内容
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list 添加被允许的用户
法2、vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
vim /etc/vsftpd/user_list 插入被允许的用户
法1、vim /etc/vsftpd/vsftpd.conf 插入内容
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/vsftpd.conf 插入被拒绝的名单
法2、vim /etc/vsftpd/ftpusers 永久黑名单
vim /etc/vsftpd/user_list 暂时黑名单
1、虚拟用户帐号创建
1、创建ftp虚拟用户文件
vim /etc/vsftpd/login_file
user1
1234
user2
1234
....
注:每行都不能有空格
2、对用户文件加密
db_load -T -t hash -f /etc/vsftpd/login_file /etc/sftpd/login_file.db
3、创建认证文件并指明认证方式
vim /etc/pam.d/ftp_login_auth
account required pam_userdb.so /etc/vsftpd/login_file
auth required pam_userdb.so /etc/vsftpd/login_file
4、修改ftp配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftp_login_auth
guest_enable=YES
2、虚拟用户身份指定
1、mkdir /var/ftp/user{1..3} 创建虚拟用户家目录
2、vim /etc/vsftpd/vsftpd.conf 修改配置文件
local_root=/var/ftp/$USER
user_sub_token=$USER
3、systemctl restart vsftpd 重启服务
1)、在防火墙过滤规则中加入ftp服务:
firewall-cmd --list-all
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
2)、使selinux处于不生效状态
vim /etc/vsftpd.vdftpd.conf
SELINUX=disable
SELINUXTYPE=targeted
1)、客户端访问
lftp ip 匿名访问ftp服务器
lftp ip -u user 指定用户user去访问ftp服务器
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件权限过小