一、ftp
文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程
连接时部分报错
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件系统权限过小
二、部署ftp服务
在服务端部署
vim /etc/sysconfig/selinux ##关闭selinux
SELINUX=disabled ##更改第七行为disable
reboot 更改完后须重启
getenforce ##查看selinux状态
yum install vsftpd lftp -y 下载ftp的服务端和客户端
systemctl start vsftpd ##打开vsftp服务
systemctl start firewalld ##打开防火墙
firewall-cmd --permanent --add-service=ftp ##允许ftp通过防火墙
systemctl restart firewalld 重启防火墙
firewall-config ##用图形更改防火墙设置
firewall-cmd --list-all ##查看防火墙状态
在其中能使用命令则说明部署ftp服务成功
三、ftp配置文件
vim /etc/vsftpd/vsftpd.conf ##编辑ftp配置文件
*systemctl restart vsftpd.service ##编辑完需要重启
Ⅰ.匿名用户的设定
1.匿名用户和本地用户的登陆限制
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES/NO 匿名用户是否可以登陆
systemctl restart vsftpd.service 重启
2.匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES/NO ftp是否对登陆用户可写,即上传、下载、创建等功能的总开关
anon_upload_enable=YES/NO 允许匿名用户是否可以上传
systemctl restart vsftpd ##重启vsftpd服务
chgrp ftp /var/ftp/pub ##更改该文件组为ftp
chmod 775 /var/ftp/pub ##允许该文件被ftp组可读可写/
注:上传命令是put
3.匿名用户家目录修改
vim /etc/vsftpd/vsftpd.conf
anon_root=/directory 该目录即是匿名用户登陆时进入的目录
systemctl restart vsftpd ##重启vsftpd服务
anon_umask=022 匿名用户新增文件时系统保留的权限为022
systemctl restart vsftpd.service 重启
测试:
由于系统对文件保留执行权限,所以文件最后的权限为644
5.匿名用户建立目录
anon_mkdir_write_enable=YES/NO
默认在33行(可能会有浮动),匿名用户是否可以创建目录
systemctl restart vsftpd.service 重启
6.匿名用户下载
anon_world_readable_only=YES/NO 设定参数值为NO表示匿名用户可以下载
systemctl restart vsftpd.service 重启
注:下载命令是get,下载的文件会保存在进入lftp时所在的路径下
测试:
7.匿名用户删除
anon_other_write_enable=YES/NO 匿名用户是否可以删除文件
systemctl restart vsftpd.service 重启
8.匿名用户使用的用户身份修改及最大上传速率和最大链接数
参数 解释
chown_uploads=YES 默认在48行(有浮动),所有匿名上传的文件的所属用户将会被更改成chown_username
chown_username=redhat 默认在49行(有浮动),匿名用户身份指定,必须是服务端已有的用户
anon_max_rate=102400 最大上传速率,单位为bit
max_clients=1 允许同时有1个用户登陆该ftp服务器
systemctl restart vsftpd.service 重启
Ⅱ.本地用户设定
1.本地用户登陆
local_enable=YES/NO 本地用户是否可以登陆
systemctl restart vsftpd.service 重启
local_root=/directory 家目录的用户权限应没有写的权限
systemctl restart vsftpd.service 重启
chmod u-w /mnt/mnlu
3.本地用户上传文件权限
local_umask=022 本地用户新增文件时系统保留的权限为022
systemctl restart vsftpd.service 重启
上传得到的passwd文件权限为777-022-111=644,与结果rw-r–r–相符
测试:
4.限制本地用户浏览根目录
chroot_local_user=YES 默认在101行(有浮动),将所有本地用户被锁定到自己的家目录中
systemctl restart vsftpd.service 重启
chmod u-w /home/student/
5.本地用户黑名单建立
作用:其他用户用黑名单上的本地用户登陆ftp时,会被锁定到该本地用户的家目录中。
touch /etc/vsftpd/chroot_list ##建立黑名单
vim /etc/vsftpd/chroot_list ##在里面添加的用户不能进入根目录
chroot_local_user=NO 默认在101行(有浮动),NO表示下面的路径是黑名单
chroot_list_enable=YES 默认在102行(有浮动),YES表示开启黑白名单功能
chroot_list_file=/etc/vsftpd/chroot_list 默认在104行(有浮动),黑名单路径
6.本地用户白名单建立
作用:其他用户用白名单上的本地用户登陆ftp时,可以访问根目录
touch /etc/vsftpd/chroot_listb ##建立白名单
vim /etc/vsftpd/chroot_listb ##在里面添加的用户可以进入根目录
chroot_local_user=YES 默认在101行(有浮动),YES表示下面的路径是白名单
chroot_list_enable=YES 默认在102(有浮动)行,YES表示开启黑白名单功能
chroot_list_file=/etc/vsftpd/chroot_listb 默认在104行(有浮动),白名单路径
7.限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户永久黑名单,只要在该名单上出现的用户不能登陆ftp服务器
vim /etc/vsftpd/user_list ##用户临时黑名单,当userlist_deny=NO出现时该名单变为白名单
userlist_deny=YES/NO YES时/etc/vsftpd/user_list时黑名单,NO时/etc/vsftpd/user_list是白名单
Ⅲ.虚拟用户的设定
1.创建虚拟用户身份
vim /etc/vsftpd/westos ##新建账户名单文件,文件名任意,奇数行时帐号,偶数行是密码
db_load -T -t hash -f /etc/vsftpd/westos /etc/vsftpd/westos.db ##hash加密,账户名单文件
vim /etc/pam.d/westos ##指定文件名任意
用户或密码 判定方式 指向插件 帐号文件
account required pam_userdb.so db=/etc/vsftpd/westos
auth required pam_userdb.so db=/etc/vsftpd/westos
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
pam_service_name=westos 关联/etc/pam.d目录下的virt文件
guest_enable=YES 打开虚拟用户登陆
guest_username=ftp 虚拟用户登陆时用的身份
systemctl restart vsftpd.service 重启
mkdir -p /var/ftpuserdir/westos{1..3} ##家目录名须和虚拟账户名相同
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
local_root=/var/ftpuserdir/$USER 设置用户进入时的家目录为/var/ftpuserdir/$USER, $USER表示当前用户的名字
user_sub_token=$USER 设置该配置文件识别$USER符号时使用shell里的 $USER
systemctl restart vsftpd.service 重启
mkdir -p /etc/vsftpd/user_conf ##创建独立配置路径
vim /etc/vsftpd/user_conf/ftpuser1
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
ser_config_dir=/etc/vsftpd/userconf设置虚拟用户独立配置路径
systemctl restart vsftpd.service 重启