FTP 共享资源库系统资源
一、了解ftp
FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一,我们现在也一直有在用着FTP协议来进行各种文件的传输,FTP为我们提供了一种可靠的方式在网络上进行文件的共享。
二、准备虚拟机
本地镜像使用centos-1908。也就是说挂载的镜像是centos-1908,点开你的虚拟机设置看看配置的对不对。
三、vsftpd部署安装
1 2 | systemctl stop firewalld //关闭防火墙 setenforce 0 //关闭se |
1)配置 yum 源
把 yum 源去掉换成本地的 yum 源。把新的 yum 源输入进去就行。
1 2 3 4 5 6 7 | mv/etc/yum.repos.d/* /media/ //移除原有的yum源 vim /etc/yum.repos.d/lcoal.repo //在这个文件里添加yum源 [centos] name=centos baseurl=file: ///opt/centos gpgcheck=0 enabled=1 |
1 2 3 4 5 | mkdir -p /opt/centos //创建一个目录mount /dev/sr0 /opt/centos //将那个镜像挂在到cetos这个目录//查看挂载情况 [root@ftp ~]# ls /opt/centos CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL //查看 yum 源是否正常 |
[root@ftp ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
源标识 源名称 状态
!base/7/x86_64 CentOS-7 - Base 0
centos centos 0
!extras/7/x86_64 CentOS-7 - Extras 0
!updates/7/x86_64 CentOS-7 - Updates 0
repolist: 0
这样 yum 源已经弄好了。
2)下载vsftp
查看完端口后是21端口就对了。
//下载 vsftpd net-tools
[root@ftp ~]#yum install -y vim vsftpd net-tools
//启用vsftpd
[root@ftp ~]#systemctl start vsftpd
//查看端口
[root@ftp ~]# netstat -ntlp |grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 1769/vsftpd
查看配置文件里的内容。
listen=YES:是否以独立运行的方式监听服务
listen_address=192.168.x.x:设置监听的 IP 地址
listen_port=21:设置监听 FTP 服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用户
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一 IP 地址的并发连接数
guest_enable=YES:启用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf :虚拟用户使用的配置文件目录
allow_writeable_chroot=YES:允许写入用户主目录
常用的匿名 FTP 配置项:
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的 FTP 根目录
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率(字节/秒)
常用的本地用户 FTP 配置项:
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的 FTP 根目录
chroot_local_user=YES:是否将用户禁锢在主目录
四、配置虚拟用户
1)配置用户名密码
进入配置文件里创建一个存放密码的文件
1 | vim /etc/vsftpd/users.conf //创建 users.conf 进入这个文件 |
文件里面写用户名和密码,第一行是用户名第二行是密码(默认:奇数列是用户名、偶数列是密码)
给密码加密
1 2 3 | db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db //密码加密 vim /etc/vsftpd/users.conf //查看密码被加密后的情况 chmod 600 users.db //给 users.db 授权(只有这里面的用户去读写)chmod 600 users.* //授权(文件里面的用户授权) |
2)创建系统用户
1 2 | useradd vsftpd -d /home/vsftpd -s /sbin/nologin //创建用户 (-d:指定用户所在目录 -s:指定一下不能登录 ) chmod -R 777 /home/vsftpd //给上面的文件授权(777:可以上传、下载) |
1 | vim /etc/pam.d/vsftpd //修改里面的文件 |
放到这里的话会避免很多的错误。
3)修改主配置文件
1 | vim /etc/vsftpd/vsftpd.conf //修改主配置文件 |
现在配置的是 yunjisuan 如果还要使用那个就也把那个这样配置一下即可。
// 创建子配置文件目录
[root@localhost ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
//进入创建的文件
[root@localhost ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf
//进入文件里添加配置
[root@localhost vsftpd_user_conf]# vim yunjisuan
local_root=/home/vsftpd/xmcsxy # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
anon_upload_enable=YES # 是否允许登陆用户有上传权限。
write_enable=YES # 是否允许登陆用户有写权限。
1 2 3 4 | # 重启服务,使配置文件生效 [root@localhost vsftpd_user_conf]# systemctl restart vsftpd [root@localhost vsftpd_user_conf]# systemctl enable vsftpd Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.w |
五、链接ftp
我使用的是 xftp 你们还可以使用其他的软件去链接。链接上之后直接就可以直接去测试了,上传一下文件啊、下一下啊什么的。
六、Linux下使用ftp
1 2 3 | yum install -y lftp //现在 lftp lftp liao1@127.0.0.1 //输入后回车 会让输入密码 输入密码后 ls 查看能否查看,能查看即为成功。 |
LFTP内部命令:
ls 显示远端文件列表(!ls 显示本地文件列表)。
cd 切换远端目录(lcd 切换本地目录)。
get 下载远端文件。
mget 下载远端文件(可以用通配符也就是 *)。
pget 使用多个线程来下载远端文件, 预设为五个。
mirror 下载/上传(mirror -R)/同步 整个目录。
put 上传文件。
mput 上传多个文件(支持通配符)。
mv 移动远端文件(远端文件改名)。
rm 删除远端文件。
mrm 删除多个远端文件(支持通配符)。
mkdir 建立远端目录。
rmdir 删除远端目录。
pwd 显示目前远端所在目录(lpwd 显示本地目录)。
du 计算远端目录的大小
! 执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)
lcd 切换本地目录
lpwd 显示本地目录
alias 定义别名
bookmark 设定书签。
exit 退出ftp
七、黑白名单
ftpusers:
如果创建了用户,设置了密码,将用户名添加到ftpusers中,则无法登录ftp服务。
user_list:
根据配置,可以是白名单,也可以是黑名单。userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
为了说明这个问题,我们来建立两个测试用户:
test1: 在user_list中
test2:不在user_list中
然后我们分别给两个配置项取不同的值,分4种Case进行测试:
Case 1: userlist_enable=YES, userlist_deny=YES
test1: 拒绝登入
test2: 允许登录
Case 2: userlist_enable=YES, userlist_deny=NO
test1: 允许登录
test2:拒绝登录(如user_list文件开头的注释所述,甚至不会提示输入密码,即无登入提示框,直接拒绝连接)
Case 3: userlist_enable=NO,userlist_deny=NO
test1: 允许登录
test2: 允许登录
Case 4: userlist_enable=NO,userlist_deny=YES
test1: 允许登录
test2: 允许登录
当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)