一、什么是ftp服务
1.ftp定义:ftp是一种文件传输协议,该协议是internet文件传输的基础,它由一系列规格文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效的传送数据。FTP是完成两台计算机之间的拷贝即上传与下载。
2.ftp的启用
yum install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
修改内核极限制文件 vim /etc/sysconfig/selinux
编写完成后需进行虚拟机重启
检查状态
3.测试:ftp://172.25.254.142
注:默认发布目录: /var/ftp
访问方式
lftp 172.25.254.142 ##匿名登录 ---> /var/ftp
lftp 172.25.254.142 -u student ##用户登录 ---> /home/student
二、用户登陆
1.匿名登陆
2.本地用户登陆
3.ftp的安全部署
anonymous_enable=YES|NO ##匿名用户是否可以登录
local_enable=YES|NO ##本地用户是否可以登录
write_enable=YES|NO ##本地用户是否可写
注:设置anonymous_enable=NO 重启vsftpd服务,则真机无法登陆,本地用户student输入密码可以登陆
真机无法登陆
本地用户正常登陆
4.本地用户读写
是否允许读写
write_enable=YES
write_enable=NO
允许读写
三、匿名用户上传文件权限
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
systemctl restart vsftpd
实验效果:
1.匿名用户可下载
vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO
实验效果:
2.匿名用户建立目录
vim /etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES
实验效果:
3.匿名用户是否可以删除和重命名
vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
实验效果:
四、用户家目录的修改
1.首先建立/westos目录并建立文件方便查询
anon_root=/westos 匿名用户家目录的修改,匿名用户再次进入时,则是/westos目录
编写完命令配置,需从启vsftpd服务
实验效果:
2.local_root=/westos 本地用户家目录的修改,本地用户再次进入时,则是/westos目录
实验效果:
3.匿名用户上传文件默认权限修改
anon_umask=xxx
注:匿名用户使用的用户身份修改,即以用户student的身份登陆
注:student用户id为1000,此时可以看到上传的文件组id为1000
chown_uploads=YES
chown_username=student
4.最大上传速率
anon_max_rate=102400
5.最大链接数
max_clients=6
当超过链接数6时,需等待当有人退出时,下一个方链接
五、限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/* ##权限过大,所以减小家目录下的权限,保护安全不让访问
当没有限制本地用户浏览时,本地用户可以浏览根目录
进行限制
修改家目录权限
进行限制后的效果,本地用户无法访问根目录下的文件
六、用户黑白名单建立
1.用户白名单建立
chroot_local_user=YES ##当锁定用户家目录时,/etc/vsftpd/chroot_list为白名单
chroot_list_enable=YES ##开启黑/白名单
chroot_list_file=/etc/vsftpd/chroot_list ##列表文件为/etc/vsftpd/chroot_list
注:/etc/vsftpd/chroot_list文件本身不存在,需要建立
vim /etc/vsftpd/vsftpd.conf进入文件编写
vim /etc/vsftpd/chroot_list 向白名单中添加用户
实验效果,student用户不再被限制,可以访问根目录下的文件
2.用户黑名单建立
chroot_local_user=NO ##当不锁定用户家目录时,/etc/vsftpd/chroot_list为黑名单
chroot_list_enable=YES ##开启黑/白名单
chroot_list_file=/etc/vsftpd/chroot_list ##列表文件为/etc/vsftpd/chroot_list
vim /etc/vsftpd/vsftpd.conf进入文件编写
vim /etc/vsftpd/chroot_list 向白名单中添加用户
实验效果,student用户被加入黑名单,因此不能访问根目录下的文件
七、建立虚拟用户
在/etc/vsftpd/下建立userfile,并进行加密,-T(新建文件),-t(加密格式),-f(加密文件)
加密后查看,为此状态
1.虚拟帐号身份指定
pam_service_name=编写pam文件的名称
修改配置文件
auth(表示密码) account(表示用户)
完成后进行登陆
2.虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER
mkdir /ftphome/ftpuser1/user1dir -p
mkdir /ftphome/ftpuser2/user2dir -p
实验效果
八、虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
加入想要赋予功能:
实验效果:
注:常见报错
530:认证失败
550:程序本身不允许
553:服务器上的文件系统不允许写入
500:权限过大