当前位置: 首页 > news >正文

文件服务器:FTP

文件服务器:FTP

一、FTP服务器的部署与配置
服务器:
1、关闭防火墙,修改selinux,配置yum仓库(略),安装vsftp软件包,重启服务
[root@stw2 ~]# systemctl stop firewalld.service 
[root@stw2 ~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@stw2 ~]# setenforce 0
[root@stw2 ~]# vim /etc/selinux/config 
[root@stw2 ~]# reboot
[root@stw2 ~]# cd /etc/yum.repos.d/
[root@stw2 yum.repos.d]# ls
server.repo
[root@stw2 yum.repos.d]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@stw2 yum.repos.d]# yum -y install vsftpd
[root@stw2 vsftpd]# systemctl restart vsftpd
[root@stw2 vsftpd]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

在这里插入图片描述

ftp的主配置文件/etc/vsftpd/vsftpd.conf
[root@stw2 ~]# cd /etc/vsftpd/
[root@stw2 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@stw2 vsftpd]# vim vsftpd.conf 

anonymous_enable=YES (允许匿名用户访问)

local_enable=YES(允许本地用户访问,也就是允许FTP用户访问)

write_enable=YES(FTP用户对FTP服务器有写入权限)

local_umask=022(FTP用户创建目录或文件时默认的umask值,目录:777-022=755,文件:666-022=644)

#anon_upload_enable=YES(允许匿名用户上传,默认关闭)

#anon_mkdir_write_enable=YES(允许匿名用户创建目录,默认关闭)

connect_from_port_20=YES(数据传输端口:20)

#chroot_local_user=YES(禁止离开自己的用户家目录,且没有写入权限,默认关闭)

#chroot_list_enable=YES(此列表中的用户禁止离开自己的用户家目录,默认关闭)

#chroot_list_file=/etc/vsftpd/chroot_list(FTP用户列表文件,每一行一个用户名)

客户端:
配置yum仓库(略),安装lftp
[root@stw3 ~]# yum -y install lftp
匿名用户
1、服务器端/var/ftp/pub 匿名用户实现上传下载的目录(默认情况下匿名用户可以访问、可以下载、不能上传)
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> ls
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
服务器:
[root@stw2 ~]# cd /var/ftp/pub/
[root@stw2 pub]# ls
[root@stw2 pub]# touch file1
[root@stw2 pub]# ls
file1
客户端:
lftp 192.168.100.20:/> cd pub
lftp 192.168.100.20:/pub> get file1
lftp 192.168.100.20:/pub> ls
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
[root@stw3 ~]# touch file2
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> ls
drwxr-xr-x    2 0        0              19 Aug 14 12:14 pub
lftp 192.168.100.20:/> cd pub
lftp 192.168.100.20:/pub> ls
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
lftp 192.168.100.20:/pub> put file2
put: Access failed: 550 Permission denied. (file2)
2、设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下进行文件上传
服务器:
[root@stw2 vsftpd]# vim /etc/vsftpd/vsftpd.conf 
[root@stw2 vsftpd]# systemctl restart vsftpd
[root@stw2 ~]# cd /var/ftp
[root@stw2 ftp]# ll
total 0
drwxr-xr-x. 2 root root 19 Aug 14 20:14 pub
[root@stw2 ftp]# cd
[root@stw2 ~]# setfacl -m u:ftp:rwx /var/ftp/pub

在这里插入图片描述

客户端:
lftp 192.168.100.20:/pub> put file2
lftp 192.168.100.20:/pub> ls       
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
-rw-------    1 14       50              0 Aug 14 12:23 file2
3、设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下创建目录
服务器:
[root@stw2 vsftpd]# vim /etc/vsftpd/vsftpd.conf 
[root@stw2 vsftpd]# systemctl restart vsftpd

在这里插入图片描述

客户端:
lftp 192.168.100.20:/pub> mkdir dir1
mkdir ok, `dir1' created
lftp 192.168.100.20:/pub> ls
drwx------    2 14       50              6 Aug 14 12:25 dir1
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
-rw-------    1 14       50              0 Aug 14 12:23 file2
3、设置允许匿名用户访问FTP服务器时能够对/var/ftp/pub目录中的文件或目录进行重命名或删除操作
服务器:
[root@stw2 vsftpd]# vim /etc/vsftpd/vsftpd.conf 
[root@stw2 vsftpd]# systemctl restart vsftpd

在这里插入图片描述

客户端:
lftp 192.168.100.20:/pub> ls
drwx------    2 14       50              6 Aug 14 12:25 dir1
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
-rw-------    1 14       50              0 Aug 14 12:23 file2
lftp 192.168.100.20:/pub> mv file2 file222
rename successful
lftp 192.168.100.20:/pub> ls
drwx------    2 14       50              6 Aug 14 12:25 dir1
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
-rw-------    1 14       50              0 Aug 14 12:23 file222
lftp 192.168.100.20:/pub> rm file222
rm ok, `file222' removed
lftp 192.168.100.20:/pub> ls
drwx------    2 14       50              6 Aug 14 12:25 dir1
-rw-r--r--    1 0        0               0 Aug 14 12:14 file1
FTP用户
在服务器中创建三个用户并给密码:
[root@stw2 ~]# useradd ftpuser1
[root@stw2 ~]# useradd ftpuser2
[root@stw2 ~]# useradd ftpuser3
[root@stw2 ~]# echo redhat | passwd --sdin ftpuser1
passwd: bad argument --sdin: unknown option
[root@stw2 ~]# echo redhat | passwd --stdin ftpuser1
Changing password for user ftpuser1.
passwd: all authentication tokens updated successfully.
[root@stw2 ~]# echo redhat | passwd --stdin ftpuser2
Changing password for user ftpuser2.
passwd: all authentication tokens updated successfully.
[root@stw2 ~]# echo redhat | passwd --stdin ftpuser3
Changing password for user ftpuser3.
passwd: all authentication tokens updated successfully.

注意:通过FTP用户访问FTP服务器时,默认访问的主目录为FTP用户家目录,此时FTP用户可以在自己的家目录下上传文件、下载文件、创建目录、重命名文件或者目录、删除文件或目录,同时FTP用户可以切换至其他目录中访问

服务器:
[root@stw2 ~]# cd /home
[root@stw2 home]# ls
ftpuser1  ftpuser2  ftpuser3  stw
[root@stw2 home]# cd ftpuser1
[root@stw2 ftpuser1]# touch file1
客户端:访问
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
上传
[root@stw3 ~]# touch file2
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
lftp ftpuser1@192.168.100.20:~> put file2
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file2
下载
[root@stw3 ~]# ls
anaconda-ks.cfg  Documents  file2                 Music     Public     Videos
Desktop          Downloads  initial-setup-ks.cfg  Pictures  Templates
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file2
-rw-r--r--    1 0        0               0 Aug 14 12:43 file3
lftp ftpuser1@192.168.100.20:~> get file1
lftp ftpuser1@192.168.100.20:~> exit
[root@stw3 ~]# ls
anaconda-ks.cfg  Documents  file1  initial-setup-ks.cfg  Pictures  Templates
Desktop          Downloads  file2  Music                 Public    Videos
删除、重命名
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file2
-rw-r--r--    1 0        0               0 Aug 14 12:43 file3
lftp ftpuser1@192.168.100.20:~> rm file3
rm ok, `file3' removed
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file2
lftp ftpuser1@192.168.100.20:~> mv file2 file222
rename successful
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file222
2、设置FTP用户访问FTP服务器时,将所有FTP用户访问的目录限制在自己的主目录中,不允许FTP用户访问其他目录( FTP用户对自己的家目录不能有写入的权限)
服务器:
[root@stw2 vsftpd]# vim /etc/vsftpd/vsftpd.conf 
[root@stw2 vsftpd]# systemctl restart vsftpd

在这里插入图片描述

客户端:
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file222
lftp ftpuser1@192.168.100.20:/> cd ..
lftp ftpuser1@192.168.100.20:/> cd ..
lftp ftpuser1@192.168.100.20:/> cd /home
cd: Access failed: 550 Failed to change directory. (/home)
3、设置FTP用户访问FTP服务器时,将部分FTP用户访问的目录限制在自己的主目录中,其他FTP用户仍然可以访问其他目录。
如果限制ftpuser2和ftpuser3用户访问的目录限制在自己的家目录中,ftpuser1可以访问其他目录
服务器:
[root@stw2 vsftpd]# vim /etc/vsftpd/vsftpd.conf 
[root@stw2 vsftpd]# systemctl restart vsftpd
[root@stw2 ~]# cd /etc/vsftpd/
[root@stw2 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@stw2 vsftpd]# vim chroot_list
[root@stw2 vsftpd]# systemctl restart vsftpd

在这里插入图片描述

在这里插入图片描述

客户端:ftpuser1不能离开,ftpuser2、ftpuser3可以离开
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file222
lftp ftpuser1@192.168.100.20:/> cd ..
lftp ftpuser1@192.168.100.20:/> cd ..
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser2
Password: 
lftp ftpuser2@192.168.100.20:~> ls
lftp ftpuser2@192.168.100.20:~> cd ..
cd ok, cwd=/home
lftp ftpuser2@192.168.100.20:/home> ls
drwx------    3 1001     1001          106 Aug 14 12:47 ftpuser1
drwx------    3 1002     1002           78 Aug 14 12:30 ftpuser2
drwx------    3 1003     1003           78 Aug 14 12:30 ftpuser3
drwx------    3 1000     1000           78 Apr 11  2018 stw
lftp ftpuser2@192.168.100.20:/home> 
服务器:
[root@stw2 vsftpd]# systemctl restart vsftpd
[root@stw2 vsftpd]# vim /etc/vsftpd/vsftpd.conf 

在这里插入图片描述

客户端:ftpuser1可以离开,ftpuser2和ftpuser3不能离开
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file222
lftp ftpuser1@192.168.100.20:~> cd ..
cd ok, cwd=/home
lftp ftpuser1@192.168.100.20:/home> ls
drwx------    3 1001     1001          106 Aug 14 12:47 ftpuser1
drwx------    3 1002     1002           78 Aug 14 12:30 ftpuser2
drwx------    3 1003     1003           78 Aug 14 12:30 ftpuser3
drwx------    3 1000     1000           78 Apr 11  2018 stw[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser2
Password: 
lftp ftpuser2@192.168.100.20:~> ls
lftp ftpuser2@192.168.100.20:/> ls   
lftp ftpuser2@192.168.100.20:/> cd ..
lftp ftpuser2@192.168.100.20:/> cd ..
lftp ftpuser2@192.168.100.20:/>
将文件恢复默认

在这里插入图片描述

两个配置文件中都是默认禁止访问ftp(/etc/vsftpd/ftpusers、/etc/vsftpd/user_list)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

任意一个中的用户都禁止访问ftp
客户端:
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user root
Password: 
lftp root@192.168.100.20:~> ls
ls: Login failed: 530 Permission denied.          
lftp root@192.168.100.20:~> exit
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
ls: Login failed: 530 Login incorrect.          
将/etc/vsftpd/user_list中的userlist_deny=NO加入配置文件中那么就是允许/etc/vsftpd/user_list中的用户访问ftp

在这里插入图片描述

/etc/vsftpd/user_list:

在这里插入图片描述

/etc/vsftpd/ftpusers:

在这里插入图片描述

客户端:
[root@stw3 ~]# lftp 192.168.100.20
lftp 192.168.100.20:~> user ftpuser1
Password: 
lftp ftpuser1@192.168.100.20:~> ls
-rw-r--r--    1 0        0               0 Aug 14 12:38 file1
-rw-r--r--    1 1001     1001            0 Aug 14 12:42 file222
lftp ftpuser1@192.168.100.20:~> 
http://www.dtcms.com/a/330645.html

相关文章:

  • Inconsistent vendoring detected. Please re-run “go mod vendor“.
  • QML开发:画布元素
  • 数学建模-非线性规划模型
  • Spring AI PagePdfDocumentReader 全解析:基于 Apache PdfBox 的按页 PDF 读取实战
  • PDF压缩原理详解:如何在不失真的前提下减小文件体积?
  • 高分辨率PDF压缩技巧:保留可读性的最小体积方案
  • PDF 段落提取利器:Spring AI 的 ParagraphPdfDocumentReader 实战
  • 【办公自动化】如何使用Python操作PPT和自动化生成PPT?
  • pdf文件流或者本地文件读取
  • OSI七层模型和TCP/IP协议簇
  • elasticsearch冷热数据读写分离!
  • Qt TCP 客户端对象生命周期与连接断开问题解析
  • ESXI 6.7服务器时间错乱问题
  • 面试题之项目中git如何进行管理
  • 计算机如何进行“卷积”操作:从图像到矩阵的奥秘
  • 星空开源MES(万界星空科技)——专业、通用、开源、免费的MES系统
  • AM32电调学习-使用Keil编译uboot
  • 医疗AI问答系统实战:知识图谱+大模型的融合应用开发
  • 带环链表详解:环形链表检测与入环节点查找
  • 推荐三个国内开源数据治理工具
  • Python3 详解:从基础到进阶的完整指南
  • 第四天~什么是ARXML?
  • CV 医学影像分类、分割、目标检测,之【肺结节目标检测】项目拆解
  • pytorch学习笔记-加载现有的网络模型(VGG16)、增加/修改其中的网络层(修改为10分类)
  • AI测试自动化:智能软件质量守护者
  • 观察者模式(C++)
  • CV 医学影像分类、分割、目标检测,之【3D肝脏分割】项目拆解
  • Flutter 顶部导航标签组件Tab + TabBar + TabController
  • 汽车生产线白皮书:稳联技术Profinet转Ethernet IP网关通信高效性
  • 中介者模式和观察者模式的区别是什么