简单文件传输协议
在服务端
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl stop firewalld.service
systemctl disable firewalld.service
#关闭selinux
vim /etc/selinux/config
SELINUX=disabled #文件关闭,reboot后生效
#命令行关闭selinux 临时
setenforce 0
在客户端
yum install lftp -y
lftp 172.25.254.87 ##匿名用户登陆ftp服务器 --->/var/ftp
lftp 172.25.254.87 -u student #用户登陆 --->/home/student
控制用户的登陆
12 anonymous_enable=NO|YES #匿名用户是否可以登陆
16 local_enable=NO #本地(指的是服务端)用户是否可以登陆
[root@client ~]# lftp 172.25.254.87 -u student
Password:
lftp student@172.25.254.87:~> ls
ls: Login failed: 530 This FTP server is anonymous only.
ftp的安全部署
500报错:权限过大
530报错:认证失败
550报错:服务本身不允许
553报错:文件系统权限过小
对匿名用户的操作
cd /var/ftp/pub
ll -d pub
pub这个目录只对超级用户可写
在客户端测试,直接上传,会报错(550:服务本身的错误)
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
vim /etc/vsftpd/vsftpd.conf
29 anon_upload_enable=YES #匿名用户是否可以上传文件
systemctl restart vsftpd.service
##匿名用户下载文件
anon_world_readable_only=NO
##匿名用户建立目录
anon_mkdir_write_enable=YES
##匿名用户是否可以删除和重命名
anon_other_write_enable=YES
##匿名用户默认登陆目录的更改
anon_root=/westos
# #匿名用户上传文件默认权限修改
anon_umask=xxx 改成022
##匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
##最大上传速率
anon_max_rate=102400 单位:字节 100k
dd if=/dev/zero of=/mnt/bigfile bs=1M count=1500
##最大链接个数
max_clients=2
##本地用户家目录修改
local_root=/westos
##本地用户上传文件权限
local_umask=xxx
##限制本地用户浏览根目录
所有用户被锁定到自己的加目录中(修改之前不仅可以在自己家目录,还可以看其他)
chroot_local_user=YES ##此参数要求去掉自己对加目录的写权限,man看以下这个参数
chmod u-w /home/*
上传测试
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_lis
t_file=/etc/vsftpd/chroot_list
#限制本地用户登录
_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登录ftp
ftp虚拟用户的设定
(创建虚拟帐号身份)
vim /etc/vsftpd/westosfile ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123
#上面的密码是明文的,不安全,要进行加密,T表示transfer,t表示转换方式为hash
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
查看vsftpd.conf,认证的时候是使用pam认证
yum search pam ---> pam.x86_64
rpm -qc pam.x86_64
cd /etc/pam.d,目录里有个vsftpd文件
认证的时候就是在这个文件里做用户名和密码的比对
系统里有pam这个进程的,ps aux | grep pam
vim /etc/pam.d/westos ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_us
#account表示帐号名称,auth表示密码,先后顺序不分erdb.so db=/etc/vsftpd/westosfile
#required是通过了用户名认证才能进入下一步认证,然后使用pam_userdb.so这个插件来验证
#db=/etc/vsftpd/westosfile文件后不要写.db,系统会自动加
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES
虚拟帐号身份指定
guest_username=westos
##默认使用虚拟用户时,登录后在pub目录,要想改变,修改此参数,修改后登录到westos家目录
chmod u-w /home/ftpuser
虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER ##$USER是shell里的用法,要让配置文件里支持,必须加这个参数
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
虚拟帐号配置独立
chgrp ftp /ftphome -R
ll /ftphome/user*
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1
在此文件中设定配置文件中的所有参数,此文件的优先级高
例如:anon_upload_enable=YES
这样user1可以上传,user2不行vim /etc/vsftpd/ftpusers ##永久用户黑名单
- 虽然服务器FTP和WWW服务器都可以提供文件下载功能,但是若论文件传输的稳定性当属FTP服务器,两者配置方法差不多,但是略有不同,FTP服务器不支持基于名称的虚拟服务器,这需要在配置FTP服务器时,为主机分配另一个IP。