Linux搭建ftp服务器

ftp:利用文件传输协议,用来不同服务器之间的文件传输。

ftp搭建

环境准备:一台centos7.9服务器,可以联通外网。

1:下载vsftpd工具

bash 复制代码
#前置条件
systemctl stop firewalld
setenforce 0
#开始下载
yum install vsftpd -y
rpm -qi vsftpd
systemctl start vsftpd
netstat -anpt |grep vsftpd
#默认端口为21

2:下载客户端工具

bash 复制代码
yum install ftp lftp -y

3:进入配置文件目录

bash 复制代码
[root@ftp vsftpd]# ll
总用量 24
-rw-r--r-- 1 root root    6 8月  15 15:20 chroot_list  #这里是后期新创建的,后续会说是做什么的
-rw------- 1 root root  125 6月  10 2021 ftpusers  #黑名单
-rw------- 1 root root  361 6月  10 2021 user_list #黑名单或白名单
-rw------- 1 root root 5411 8月  15 15:51 vsftpd.conf #著配置文件目录
-rwxr--r-- 1 root root  338 6月  10 2021 vsftpd_conf_migrate.sh
vsftpd.conf配置文件

是否允许匿名用户ftp登录,YES代表允许,NO不允许 anonymous_enable=YES

是否允许本地登录 local_enable=YES

是否有写的权利 write_enable=YES

日志文件位置 xferlog_file=/var/log/xferlog 采用标准的日志格式

4: 限制用户只能在自己的家目录访问

如果让普通用户可以随便切换目录的话及其不安全

所以一般可以修改配置文件将用户限制在自己的家目录

在 vsftpd.conf 配置文件里面修改以下配置

chroot_list 文件默认不存在,需要在 /etc/vsftpd/下新建

在vsftpd.conf添加如下配置

bash 复制代码
#对本地用户限制在自己的家目录里
chroot_local_user=YES  
#启用限制名单
chroot_list_enable=YES
#具体的名单路径,这个名单的用户不受限制,可以随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list
#这个目录没有,需要自己新建。

5:创建用户进入客户端测试

默认情况下不允许root用户登录 vsftpd 使用的用户名和密码就是linux系统里面使用分用户和密码,不需要单独新建

bash 复制代码
#新建一个用户进行测试
useradd ceshi
echo "ceshi" | passwd --stdin ceshi
#这里有一个小坑,就是我后续使用这个用户登录发现没法上传文件,这里最好给ceshi的家目录权限大一点
chmod 777 /home/ceshi

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls   #查看自身目录下的文件
227 Entering Passive Mode (192,168,198,129,201,209).
150 Here comes the directory listing.
drwxr-xr-x    2 1002     1003            6 Aug 15 07:29 test.txt
226 Directory send OK.
ftp> !ls  #查看本地目录内容
anaconda-ks.cfg  dist		   m1		      test.txt
backup		 docker		   m2		      ultrax.sql
calico.yaml	 Dockerfile	   nginx
check_mysqld.sh  java		   sprinboot-vue.jar
checkMysql.sh	 kube-flannel.yml  sysconfigure.sh
ftp> cd /root   #切换目录,这里报错了
550 Failed to change directory.
ftp> 

这里报错是因为我们限制用户不能随意的切换目录访问,这里如果想要切换目录,在chroot_list中讲用户名称添加进去就可以了

bash 复制代码
vim chrrot_list
ceshi
#一定记得重启!!!
systemctl restart vsftpd

我们接着上面的说

bash 复制代码
ftp> cd /var
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,198,129,21,205).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Apr 11  2018 adm
ftp> cd /home/ceshi
250 Directory successfully changed.
ftp> pwd
257 "/home/ceshi"
ftp> !ls  #查看本地目录内容
anaconda-ks.cfg  dist		   m1		      test.txt
backup		 docker		   m2		      ultrax.sql
calico.yaml	 Dockerfile	   nginx
check_mysqld.sh  java		   sprinboot-vue.jar
checkMysql.sh	 kube-flannel.yml  sysconfigure.sh
ftp> put test.txt  #上传文件到ftp服务器
local: test.txt remote: test.txt
227 Entering Passive Mode (192,168,198,129,210,80).
150 Ok to send data.
226 Transfer complete.
6 bytes sent in 0.00198 secs (3.03 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,198,129,175,174).
150 Here comes the directory listing.
drwxr-xr-x    2 1002     1003            6 Aug 15 07:29 111
-rw-r--r--    1 1002     1003            6 Aug 15 08:22 test.txt
226 Directory send OK.
ftp> get 机柜信息.txt   #下载文件到本地,默认/root目录
local: 机柜信息.txt remote: 机柜信息.txt
227 Entering Passive Mode (192,168,198,129,195,39).
150 Opening BINARY mode data connection for 机柜信息.txt (104 bytes).
226 Transfer complete.
104 bytes received in 4.9e-05 secs (2122.45 Kbytes/sec)
ftp> 

windows测试

在文件夹上输入: ftp:/@192.168.198.129/,

这种方式是匿名访问,默认在/var/ftp/pub路径,如果向指定用户如下图进行登录:

输入账户密码进行登录。

登录之后就可以传输文件了。
注意:

删除目录时,如果目录是非空(FTP 协议默认不允许删除非空目录,需递归删除)

相关推荐
GeW15 小时前
新质生产力路线图Linux、数据库、国产化替代一次讲透
linux
aningx17 小时前
cachyos 从 GRUB 切换到 rEFInd
linux
第404号工位19 小时前
40块钱二手瘦客户端,如何跑满家庭物联网中枢?(拒绝Docker爆盘实录)
linux·架构·node.js
对象存储与RustFS19 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
骑着蜗牛撵大象32720 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
众壹新能源科技21 小时前
逆变器自带无功不够用,加装5MVar SVG后功率因数从0.85回到0.99
运维·人工智能·自动化
..Dauntless..21 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
裕晟资质规划21 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
QMCY_jason21 小时前
x86 ubuntu2204 无gui 安装 openeuler 2203 aarch64版本
linux·运维·服务器
重生之小比特21 小时前
【Linux系统】12 进程程序替换 自定义Shell 命令行解释器
linux·运维·服务器