FTP
ftp:file transfer proto 是互联网中最老牌的文件传输协议
ftp的安装及启用
服务端安装vsftp
dnf install vsftpd.x86_64 -y #安装服务端
dnf install lftp.x86_64 -y #安装客户端
关闭selinux:
vim /etc/sysconfig/selinux
**********************************************************************
1
2 # This file controls the state of SELinux on the system.
3 # SELINUX= can take one of these three values:
4 # enforcing - SELinux security policy is enforced.
5 # permissive - SELinux prints warnings instead of enforcing.
6 # disabled - No SELinux policy is loaded.
7 SELINUX=disabled
启动ftp服务:
systemctl enable --now vsftpd #设置vsftp开启启动并且立即启动
防火墙放行:
firewall-cmd --permanent --add-service=ftp #永久放行ftp服务
firewall-cmd --reload #防火墙刷新
vsftp基本信息
服务名称:vsftpd.service
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp/
报错信息:
错误代码 | 错误描述 |
---|---|
550 | 程序本身拒绝 |
553 | 文件系统权限限制 |
500 | 权限过大 |
530 | 认证失败 |
匿名用户访问控制
lftp 172.25.254.124 -u song #本地用户登陆
lftp 172.25.254.124 #匿名用户登陆
通过修改配置文件来控制匿名用户访问:
vim /etc/vsftpd/vsftpd.conf
登陆控制:
anonymous_enable=YES|NO
家目录控制:
anon_root=/songdir
上传控制:
anon_upload_enable=YES|NO
上传报错553是因为/var/ftp/只能被root上传及删除文件
需要修改权限才能使匿名用户上传文件:
chmod 755 /var/ftp/pub
chgrp ftp /var/ftp/pub
目录建立控制:
anon_mkdir_write_enable=YES
删除命令控制:
anon_other_write_enable=YES|NO
匿名用户上传文件权限设定:
anon_umask=xxx #当设定chown_username后上传文件权限不使用此参数
匿名用户上传文件的用户身份设定:
上传文件时以指定用户身份上传
chown_uploads=YES
chown_username=song
chown_upload_mode=0644
登陆数量控制:
max_clients=n
上传速率控制:
anon_max_rate=102400 #大小单位为字节102400表示1024k
本地用户的访问控制
本地用户登录
lftp 172.25.254.170 -u song #本地用户登陆
通过修改配置文件来控制匿名用户访问:
vim /etc/vsftpd/vsftpd.conf
登陆控制:
local_enable=YES
家目录控制:
YES
local_root=/songdir
写权限控制
write_enable=YES
上传文件权限
local_umask=022
用户登录控制
vim /etc/vsftpd/ftpusers #永久黑名单
vim /etc/vsftpd/user_list #永久白名单
用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list位白名单
#不在名单中的用户不能登陆ftp
锁定用户到自己的家目录
chmod u-w /home/*
chroot_local_user=YES
锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
虚拟用户访问
建立虚拟用户过程
vim /etc/vsftpd/ftp_auth_file #建立认证文件
************************************************************************
song1
123
song2
123
song3
123
db_load -T -t hash -f /etc/vsftpd/ftp_auth_file /etc/vsftpd/ftp_auth_file.db
#加密认证文件
vim /etc/pam.d/song
vim /etc/vsftpd/vsftpd.conf
虚拟用户家目录的独立设定
mkdir -p /ftpuserdir/song{1..3}
touch /ftpuserdir/song1/song1file
touch /ftpuserdir/song2/song2file
touch /ftpuserdir/song3/song3file
vim /etc/vsftpd/vsftpd.conf
用户配置独立
vim /etc/vsftpd/vsftpd.conf
************************************************************************
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置文件
mkdir /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/song2
************************************************************************
anon_upload_enable=YES
设定完成后song2用户可以上传文件,song1和song3不能上传