######################
#######vsftpd服务######
######################
1.什么是ftp
FTP 是 TCP/IP 协议组中的协议之一,是英文FileTransfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上传(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
ftp有两种连接类型:控制连接(21端口)、数据连接(分模式)
ftp有两种模式:
1、主动模式(PORT):客户端通过一个大于1024的端口去连接服务端的21端口,同时开放一个 N+1 端口进行监听并向服务端发送PORT N+1命令,服务端接收到消息后就通过默认20端口向客户端提供的 N+1 端口发送数据。
2、被动模式(PASV):客户端通知服务端自己处于被动模式。即:客户端通过一个大于1024的端口去连接服务端的21端口,同时开放N+1端口。然后向服务端发送PASV命令,告诉服务端自己处于被动模式。服务端收到命令后,开启一个大于1024的端口P进行监听,并向客户端发送 PORT P 命令,通知客户端自己的数据端口是P。客户端收到后,会通过N+1端口连接服务端的P端口,然后进行数据传送。
2.安装ftp
yum install vsftpd -y ##安装vsftpd
systemctl start vsftpd ##开启服务
systemctl stop firewalld ##关闭防火强
systemctl enable vsftpd ##开机自动启动
setenforce 0 ##selinux状态为disabled
id ftp ##能登陆并且显示,表示安装成功
# uid=14(ftp) gid=50(ftp) 组=50(ftp)
3.vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
4.vsftpd服务的配置参数
说明:配置文件 /etc/vsftpd/vsftpd.conf每次修改后都需要重启vsftpd服务,
如果出现 550 则表示服务不允许(需修改相关配置),553表示文件系统不允许(文件权限问题)或者是selinux的问题,500文件权限过大,530文件权限过小。
1)匿名用户设定
<匿名用户登录>
anonymous_enable=YES|NO ##匿名用户登录限制
<匿名用户上传>
write_enable=YES ##允许登录用户有写权限
anon_upload_enable=YES ##允许匿名用户有上传文件(非目录)的权限
chgrp ftp /var/ftp/pub ##将所属用户组改为ftp
chmod 775 /var/ftp/pub ##权限设为775
/var/ftp #匿名用户家目录不能有写的权限
<匿名用户家目录修改>
anon_root=/direcotry ##使用匿名用户登录时,所进入的目录,默认/var/rtp。注意:匿名用户的家目录不能有777权限。
<匿名用户上传文件默认权限修改>
anon_umask=xxx ##匿名用户上传文件时的umask值,上传后为 666-xxx
<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO ##匿名用户具有创建目录的权限(YES),默认为(NO)。注意:只有在write_enable=YES时才生效。
<匿名用户下载>
anon_world_readable_only=YES|NO
##如果为yes,则允许匿名用户下载可阅读的文档,默认为yes
<匿名用户删除>
anon_other_write_enable=YES|NO
##默认为NO。如果为YES,匿名用户拥有删除和重命名的权限。注意:如果anon_upload_enable=NO,则匿名仅用户不能上传;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或新建目录。
<匿名用户使用的用户身份修改>
chown_username=username
##上传文件后,文件所属用户发生变化
<最大上传速率>
anon_max_rate=102400
##上传文件的最大速率
<最大链接数>
max_clients=number
##最多同时允许几个人连接
2)本地用户设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
<本地用户家目录修改>
local_root=/directory
##和匿名用户效果一致
<本地用户上传文件权限>
local_umask=xxx
##和匿名用户效果一致
<限制本地用户进入上级目录>
chroot_local_user=YES
chmod u-w /home/*
## 若为YES,所有用户被锁定到自己的家目录中,不能进入上级目录。默认为NO
(1) 用户黑名单建立
#名单/etc/vsftpd/chroot_lis里的用户不能进入上级目录
chroot_local_user=NO
chroot_list_enable=YES
#启用chroot_list_file配置项指定的用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list
#用于指定用户列表文件,控制列表里的用户是否能进入家目录的上级目录
(2) 用户白名单建立
#名单/etc/vsftpd/chroot_lis里的用户能进入上级目录
chroot_local_user=YES
chroot_list_enable=YES
#启用chroot_list_file配置项指定的用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list
#用于指定用户列表文件,控制列表里的用户是否能进入家目录的上级目录
<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单(优先级高)
vim /etc/vsftpd/user_list ##用户临时黑名单
userlist_enable=YES ##启用user_list文件
用户白名单设定
userlist_deny=NO ##双重否定表肯定,只有在/etc/vsftpd/user_list 名单中的用户才能登录
<ftp虚拟用户的设定>
创建虚拟帐号身份)
vim /etc/vsftpd/loginusers ##文件名称任意,奇数行为用户,偶数行为密码
ftpuser1
123
ftpuser2
123
ftpuser3
123
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
vim /etc/pam.d/ckvsftpd ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd ##和/etc/pam.d/ckvsftpd文件名一致
guest_enable=YES ##允许虚拟用户登录
虚拟帐号身份指定)
guest_username=ftpuser
虚拟帐号家目录独立设定)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER ##用户目录
user_sub_token=$USER ##用户配置文件所在目录,可为空
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}
虚拟帐号配置独立)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级搞
###vsftpd 的布尔变量
SELinux 对 FTP 的限制非常严格,不过系统管理员可以利用布尔值变量调整 SELinux 策略设置,定制 FTP 服务器功能。
下面是常用的布尔变量:
allow_ftpd_anon_write :关闭这个布尔变量会阻止 vsftpd 读取 public_content_rw_t 类型的文件和目录。如果允许用户通过 FTP 上传文件。必须开放这个布尔变量。
allow_ftpd_full_access:当开放这个布尔变量时只有 Linux(DAC)的权限来控制访问,通过验证的用户可以读取和写入标记为 public_content_t 或 public_content_rw_t 类型的文件。
allow_ftpd_use_cif:当开放这个布尔变量时 vsftpd 允许 cifs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 Samba 文件系统。
allow_ftpd_use_nfs vsftpd:的当开放这个布尔变量时 vsftpd 允许 nfs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 NFS 文件系统。
ftp_home_dir:当开放这个布尔变量时认证用户可以读写自己的主目录中的文件。
ftpd_connect_db:当开放这个布尔变量时允许 vsftpd 连接数据库。
httpd_enable_ftp_server:当开放这个布尔变量时容许的 httpd 作为 FTP 服务器,并且监听 FTP 端口。
tftp_anon_write:当开放这个布尔变量时允许 TFTP 访问一个公共的目录。