文件传输协议FTP(File Transfer FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。
FTP协议
FTP是TCP/IP的协议簇协议之一,其主要功能是借助网络实现远距离主机间的文件传输。
Vsftpd (Very Secure FTP)是linux系统的常用软件。
Vsftpd在yum源中的名称就是叫做vsftpd
yum install -y vsftpd* //*代表下载所有关于vsftpd的软件包
Vsftpd的用户类型主要分为匿名用户、本地用户和虚拟用户。
(1)匿名用户:如果Vsftpd服务器提供匿名访问功能,默认的匿名访问用户为anonymous或ftp,密码为空,匿名用户登录后进入到工作目录是/var/ftp
(2)本地用户:本地用户信息存储在/etc/passwd文件中,本地用户输入用户名和密码后可登录vsftpd,并且直接进入该用户的宿主目录。
(3)虚拟用户:旨在vsftpd服务器中拥有账号,并且该账号只能用于文件传输服务的专有用户,也称guest用户。该类用户可以通过输入用户名和密码进行授权登录。
FTP服务器的运行模式基于服务器、客户端,服务器安装完Vsftpd软件包后,可以通过客户端进行测试。
1.首先下载vsftpd与其相关的服务
yum install -y vsftpd* ftp*
2.然后打开ftp服务的端口,使防火墙放行ftp服务
firewall-cmd --zone=public --add-port=21/tcp --per
systemctl restart vsftpd firewalld
3.在虚拟机上以匿名用户身份进行测试,使用ftp命令,后面输入本机的ip地址,用户名是ftp,密码是空,登录过程如下。
[root@linux2 ~]# ftp 192.168.123.102
Connected to 192.168.123.102 (192.168.123.102).
220 (vsFTPd 3.0.2)
Name (192.168.123.102:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> ls
以上命令中的192.168.123.102是vsftpd服务器的ip地址
终端打印信息“230 Login successful. ”说明登录成功
命令 | 说明 |
---|---|
ls | 查看服务器当前目录的文件 |
mkdir 【目录名】 | 在服务器新建目录 |
put 文件名 | 向服务器上传指定的一个文件 |
mput 文件名列表 | 向服务器上传多个文件 |
chmod | 改变服务器中的文件权限 |
?或help | 显示内部命令的帮助信息 |
open 域名或IP地址 | 建立于指定服务器的连接 |
close | 终止远端的进程,返回命令状态 |
bye或quit | 推出服务器 |
配置基本的Vsftpd服务器比较简单,只需要正确安装了Vsftpd软件,直接启动Vsftpd并放行端口就行了,但是如果想要更进一步的搭建Vsftpd服务,那就要掌握Vsftpd服务器的配置文件。
文件 | 说明 |
---|---|
/etc/vsftpd/vsftpd.conf | Vsftpd服务器主配置文件 |
/etc/vsftpd/ftpusers | 禁止访问Vsftp服务器的用户名单 |
/etc/vsftpd/user_list | 指定用户能否访问FTP服务器取决于userlist_deny选项的设置 |
/etc/vsftpd/chroot_list | 目录访问控制文件 |
下面对这几个文件进行详细说明
vsftpd.conf位于/etc/vsftpd目录下,与大多数配置文件一样,vsftpd.conf文件中以符号”#“开始注释信息,我们可以用Vim等工具对它进行修改。在Vsftpd中去掉注释,显示该文件的配置内容如下:
[root@linux2 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
下面对该文件中的常用选项进行介绍,合理使用这些选项是保障FTP安全稳定的前提
选项 | 说明 |
---|---|
anonymous_enable | 设置是否允许匿名用户登录服务器 |
local_enable | 设置是否允许本地用户登录服务器 |
write_enable | 设置是否允许写操作 |
local_umask | 设置本地用户创建文件的umask值 |
anon*_upload_enable* | 设置是否允许匿名用户上传文件 |
anon*_mkdir_write_enable* | 设置是否允许匿名用户建立目录 |
xferlog_enable | 是否激活日志功能 |
chown_uploads | 修改匿名用户上传文件的所有者 |
chown_username=whoever | 启用chown_uploads=YES时,指定为主用户账户,whoever表示你的ftp用户 |
chroot*_local_user* | 设置是否将所有用户限制在其主目录 |
chroot*_list_enable* | 设置是否启用限制用户的名单 |
chroot*_list_file* | 设置是否限制/排除主目录下的用户名单,限制/排除有chrootlocaluser值决定 |
allow*_writeable_choot* | 设置chroot目录的写权限 |
/etc/vsftpd/ftpusers文件用于指定不能访问vsftp服务器的用户列表,此文件在格式中采用每个用户一行的形式,其中包含的用户通常是系统的超级用户和系统用户
/etc/vsftpd/userlist 文件也用于保留用户列表,指定的用户能否访问vsftp服务取决于userlistdeny选项的参数,当userlist_deny选项的参数=YES时,此文件中写入的所有用户都将无法登录vsftp服务,想都别想,但是当userlist_deny=No时,这些用户就起来了,那就表示只有这些用户能够访问vsftp服务,所以一定要注意这个选项的参数。非常重要。
如果要限制一些指定的本地用户不能访问FTP服务,则可以添加以下内容来做到:
进入/etc/vaftpd/vsftpd.conf 末行添加
userlist_enable=YES
userlist_deny=YES
userlistfile=/etc/vsftpd/user_list
进入/etc/vsftpd/user_list 添加你需要拒绝访问的本地用户
toto (意为指定用户 每个指定用户单独占一行)
如果需要指定几个本地用户才能访问FTP服务,则可以添加以下内容来做到:
进入/etc/vaftpd/vsftpd.conf 末行添加
userlist_enable=YES
userlist_deny=NO
userlistfile=/etc/vsftpd/user_list
进入/etc/vsftpd/user_list 添加你需要拒绝访问的本地用户
toto (意为指定用户 每个指定用户单独占一行)
默认情况下,匿名用户会被锁定在默认FTP目录中,而本地用户却可以访问自己主目录以外的内容,出于安全考虑,通过chroot_list文件可以限制用户只能访问其主目录,也可以实现使用不同哟ing胡不仅能访问自己的目录也可以访问主目录以外的内容。
chrootlist文件设计chrootlocaluser和chroot*_list_enable两个选项*
chroot*_list_file默认指向/etc/ sftpd/chroot_list*
chroot_list文件的功能有两个
当chroot*_list_enable=YES时,chroot_list中的用户只能在本目录中*
当chroot*_list_enable=NO时,chroot_list中的目录可以访问除主目录以外的内容*
前面介绍了Vsftpd服务器的安装,启动及主要的配置文件,下面通过具体的实例来介绍该服务器的具体应用。
本次实验环境为Centos7 服务器的IP地址为192.168.123.101 主机名为linux1
第一步:安装Vsftp服务及开启该服务
yum install -y vsftpd
systemctl restart vsftpd
使用ftp匿名用户登录,如下所示:
[root@linux2 ~]# ftp 192.168.123.101
Connected to 192.168.123.101 (192.168.123.101).
220 (vsFTPd 3.0.2)
Name (192.168.123.101:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> ls
227 Entering Passive Mode (192,168,123,101,101,29).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 6 Oct 13 2020 pub
226 Directory send OK.
登录成功,使用ls命令浏览默认的FTP目录 (/var/ftp)
1、首先在FTP默认目录/var/pub中创建两个文本文件1.txt和2.txt
[root@ayaka ~]# cd /var/ftp/pub/
[root@ayaka pub]# touch 1.txt
[root@ayaka pub]# touch 2.txt
[root@ayaka pub]# ls
1.txt 2.txt2、在客户端上进入/pub目录
ftp> ls
227 Entering Passive Mode (192,168,123,101,75,103).
150 Here comes the directory listing.
-rw-r–r-- 1 0 0 0 May 09 10:37 1.txt
-rw-r–r-- 1 0 0 0 May 09 10:37 2.txt
将Vsftpd服务器上文件下载到客户端
进入pub目录 使用get命令将文件1.txt与2.txt下载到当前目录下,下载成功的过程如下
220 (vsFTPd 3.0.2)
Name (192.168.123.101:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,123,101,25,132).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 50 May 09 10:54 1.txt
-rw-r--r-- 1 0 0 0 May 09 10:37 2.txt
226 Directory send OK.
ftp> !pwd
/root
ftp> get 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,123,101,145,74).
150 Opening BINARY mode data connection for 1.txt (50 bytes).
226 Transfer complete.
50 bytes received in 0.000134 secs (373.13 Kbytes/sec)
ftp> !ls
1 1.txt anaconda-ks.cfg
ftp>
测试在Vsftp服务器创建目录
ftp> mkdir toto
550 Permission denied.
ftp
通过以上操作可以得出:在默认情况下,匿名用户一般只有从服务器服务器下载文件的权限,不能上传文件或进行其它操作
那如何让他变得有权限呢,接下来我们来配置vsftpd使得有上传文件或进行其它操作
更改vsftpd.conf文件,开启匿名用户上传,创建目录权限
将如下两个参数取消注释
29 #anon_upload_enable=YES //允许匿名文件上传文件
34 #anon_mkdir_write_enable=YES //允许匿名用户建立目录
取消注释后保存并退出 重启vsftpd服务让它生效
systemctl restart vsftpd
创建匿名用户上传目录
需要在/var/ftp目录下创建一个目录,修改目录的权限,让匿名用户具有写权限
[root@ayaka pub]# mkdir /var/ftp/hub
[root@ayaka pub]# chmod o+w /var/ftp/hub
上传目录
使用put命令把本地文件上传到FTP服务器上,具体过程如下。
[root@linux2 ~]# ftp 192.168.123.101
Connected to 192.168.123.101 (192.168.123.101).
220 (vsFTPd 3.0.2)
Name (192.168.123.101:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd hub //进入目录hub
250 Directory successfully changed.
ftp> !ls //执行本机Shell命令,显示当前内容
1 1.txt anaconda-ks.cfg file1.txt
ftp> put 1 //上传文件1
local: 1 remote: 1
227 Entering Passive Mode (192,168,123,101,176,227).
150 Ok to send data.
226 Transfer complete.
1664 bytes sent in 0.000814 secs (2044.23 Kbytes/sec)
ftp> ls -l //查看hub目录中的文件列表
227 Entering Passive Mode (192,168,123,101,85,50).
150 Here comes the directory listing.
-rw------- 1 14 50 1664 May 09 11:26 1
226 Directory send OK.
ftp> mkdir tomato //创建目录
257 "/hub/tomato" created //创建目录成功
ftp> ls
227 Entering Passive Mode (192,168,123,101,99,18).
150 Here comes the directory listing.
-rw------- 1 14 50 1664 May 09 11:26 1
drwx------ 2 14 50 6 May 09 11:35 tomato
226 Directory send OK.
ftp>
本地用户是在FTP服务器上拥有用户账户的用户,相当于FTP服务器中的真实实际用户,其通过输入自己的账号和口令来进行授权登录,当用户成功登录服务器后,其登录目录为用户的主目录,用户的权限对该主目录的操作权限,可以下载也可以上传文件。
下面我们将用实例来介绍本地用户登录服务器下载,上传文件的过程。
本地用户访问Vsftp服务器,本例Vsftp服务器的ip地址为192.168.123.101 客户端主机名为Client
Vsftp服务器建立用户ftpuser,并在用户的家目录建立文件toto和yoyo 命令如下
[root@ayaka pub]# useradd ftpuser
[root@ayaka pub]# echo “123” | passwd --stdin ftpuser //设置ftpuser的密码为123
[root@ayaka pub]# su - ftpuser //登录用户ftpuser
[ftpuser@ayaka ~]$ touch toto.txt
[ftpuser@ayaka ~]$ touch yoyo.txt
使用本地用户登录Vsftpd服务器后,其登录目录为用户的主目录/home/ftpuser,具体过程如下
[root@linux2 ~]# ftp 192.168.123.102
Connected to 192.168.123.102 (192.168.123.102).
220 (vsFTPd 3.0.2)
Name (192.168.123.102:root): ftpuser
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> ^Z
[2]+ 已停止 ftp 192.168.123.102
[root@linux2 ~]#
[root@linux2 ~]# ftp 192.168.123.101
Connected to 192.168.123.101 (192.168.123.101).
220 (vsFTPd 3.0.2)
Name (192.168.123.101:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,123,101,56,176).
150 Here comes the directory listing.
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 toto.txt
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 yoyo.txt
226 Directory send OK.
ftp> pwd
257 "/home/ftpuser"
ftp>
创建目录
用户ftpuser创建目录tomato,具体操作如下
ftp> mkdir tomato
257 "/home/ftpuser/tomato" created
ftp> ls
227 Entering Passive Mode (192,168,123,101,244,9).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 6 May 09 11:52 tomato
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 toto.txt
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 yoyo.txt
226 Directory send OK.
ftp>
上传本地文件
用户ftpuser上传本地文件到服务器指定目录,具体操作如下:
ftp> !ls -l
总用量 16
-rw-r--r--. 1 root root 1664 10月 23 2020 1
-rw-r--r--. 1 root root 50 5月 9 18:56 1.txt
-rw-------. 1 root root 1295 5月 7 19:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 7 5月 9 19:20 file1.txt
ftp> !pwd
/root
ftp> put anaconda-ks.cfg //上传本地文件
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,123,101,101,125).
150 Ok to send data.
226 Transfer complete.
1295 bytes sent in 0.00108 secs (1194.65 Kbytes/sec)
ftp> ls -l //浏览远程目录,验证上传文件是否为本地文件
227 Entering Passive Mode (192,168,123,101,149,213).
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 1295 May 09 11:55 anaconda-ks.cfg
drwxr-xr-x 2 1000 1000 6 May 09 11:52 tomato
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 toto.txt
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 yoyo.txt
226 Directory send OK.
ftp>
下载服务器文件到本地
用ftpuser下载文件toto到本地当前目录下,下载文件yoyo到本地目录/tmp下,并且重命名为toto.bak 具体操作如下
ftp> get toto
local: toto remote: toto
227 Entering Passive Mode (192,168,123,101,206,168).
550 Failed to open file.
ftp> ls
227 Entering Passive Mode (192,168,123,101,98,221).
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 1295 May 09 11:55 anaconda-ks.cfg
drwxr-xr-x 2 1000 1000 6 May 09 11:52 tomato
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 toto.txt
-rw-rw-r-- 1 1000 1000 0 May 09 11:44 yoyo.txt
226 Directory send OK.
ftp> get toto.txt //下载文件到本地目录
local: toto.txt remote: toto.txt
227 Entering Passive Mode (192,168,123,101,46,209).
150 Opening BINARY mode data connection for toto.txt (0 bytes).
226 Transfer complete.
ftp> !ls -l //浏览本地目录,验证下载文件操作是否成功
总用量 16
-rw-r--r--. 1 root root 1664 10月 23 2020 1
-rw-r--r--. 1 root root 50 5月 9 18:56 1.txt
-rw-------. 1 root root 1295 5月 7 19:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 7 5月 9 19:20 file1.txt
-rw-r--r--. 1 root root 0 5月 9 19:59 toto.txt
// 下载文件yoyo.txt 到 本地目录/tmp下 并重命名为yoyo.bak
tp> get yoyo.txt /tmp/yoyo.bak
local: /tmp/yoyo.bak remote: yoyo.txt
227 Entering Passive Mode (192,168,123,101,46,136).
150 Opening BINARY mode data connection for yoyo.txt (0 bytes).
226 Transfer complete.
ftp> lcd /tmp 进入本地目录/tmp
Local directory now /tmp
ftp> !ls //浏览验证本地目录是否有yoyo.bak
ks-script-e7_otA yoyo.bak
systemd-private-7da9c4fa89d64f18a66b1cf3053c3ff6-chronyd.service-JoFutU yum.log
vmware-root_797-4257069498
ftp>
文章浏览阅读5.8k次。在大数据的发展当中,大数据技术生态的组件,也在不断地拓展开来,而其中的Hive组件,作为Hadoop的数据仓库工具,可以实现对Hadoop集群当中的大规模数据进行相应的数据处理。今天我们的大数据入门分享,就主要来讲讲,Hive应用场景。关于Hive,首先需要明确的一点就是,Hive并非数据库,Hive所提供的数据存储、查询和分析功能,本质上来说,并非传统数据库所提供的存储、查询、分析功能。Hive..._hive应用场景
文章浏览阅读496次。Zblog是由Zblog开发团队开发的一款小巧而强大的基于Asp和PHP平台的开源程序,但是插件市场上的Zblog采集插件,没有一款能打的,要么就是没有SEO文章内容处理,要么就是功能单一。很少有适合SEO站长的Zblog采集。人们都知道Zblog采集接口都是对Zblog采集不熟悉的人做的,很多人采取模拟登陆的方法进行发布文章,也有很多人直接操作数据库发布文章,然而这些都或多或少的产生各种问题,发布速度慢、文章内容未经严格过滤,导致安全性问题、不能发Tag、不能自动创建分类等。但是使用Zblog采._zblog 网页采集插件
文章浏览阅读2.4k次,点赞2次,收藏2次。restUI页面提交1.1 添加上传jar包1.2 提交任务job1.3 查看提交的任务2. 命令行提交./flink-1.9.3/bin/flink run -c com.qu.wc.StreamWordCount -p 2 FlinkTutorial-1.0-SNAPSHOT.jar3. 命令行查看正在运行的job./flink-1.9.3/bin/flink list4. 命令行查看所有job./flink-1.9.3/bin/flink list --all._flink定时运行job
文章浏览阅读1k次,点赞2次,收藏6次。这个项目是基于STM32的LED闪烁项目,主要目的是让学习者熟悉STM32的基本操作和编程方法。在这个项目中,我们将使用STM32作为控制器,通过对GPIO口的控制实现LED灯的闪烁。这个STM32 LED闪烁的项目是一个非常简单的入门项目,但它可以帮助学习者熟悉STM32的编程方法和GPIO口的使用。在这个项目中,我们通过对GPIO口的控制实现了LED灯的闪烁。LED闪烁是STM32入门课程的基础操作之一,它旨在教学生如何使用STM32开发板控制LED灯的闪烁。_嵌入式stm32闪烁led实验总结
文章浏览阅读63次。本文介绍了安装和部署Debezium的详细步骤,并演示了如何将Debezium服务托管到systemctl以进行方便的管理。本文将详细介绍如何安装和部署Debezium,并将其服务托管到systemctl。解压缩后,将得到一个名为"debezium"的目录,其中包含Debezium的二进制文件和其他必要的资源。注意替换"ExecStart"中的"/path/to/debezium"为实际的Debezium目录路径。接下来,需要下载Debezium的压缩包,并将其解压到所需的目录。
文章浏览阅读4.4k次。需求:在诗词曲文项目中,诗词整篇朗读的时候,文章没有读完会因为屏幕熄灭停止朗读。要求:在文章没有朗读完毕之前屏幕常亮,读完以后屏幕常亮关闭;1.权限配置:设置电源管理的权限。
文章浏览阅读2.3k次。目标检测简介、评估标准、经典算法_目标检测
文章浏览阅读6.3k次,点赞4次,收藏9次。实训时需要安装SQL server2008 R所以我上网上找了一个.exe 的安装包链接:https://pan.baidu.com/s/1_FkhB8XJy3Js_rFADhdtmA提取码:ztki注:解压后1.04G安装时Microsoft需下载.NET,更新安装后会自动安装如下:点击第一个傻瓜式安装,唯一注意的是在修改路径的时候如下不可修改:到安装实例的时候就可以修改啦数据..._sqlserver 127 0 01 无法连接
文章浏览阅读7.4k次。1. Object.keys(item); 获取到了key之后就可以遍历的时候直接使用这个进行遍历所有的key跟valuevar infoItem={ name:'xiaowu', age:'18',}//的出来的keys就是[name,age]var keys=Object.keys(infoItem);2. 通常用于以下实力中 <div *ngFor="let item of keys"> <div>{{item}}.._js 遍历对象的key
文章浏览阅读2.2w次,点赞51次,收藏310次。粒子群算法求解路径规划路径规划问题描述 给定环境信息,如果该环境内有障碍物,寻求起始点到目标点的最短路径, 并且路径不能与障碍物相交,如图 1.1.1 所示。1.2 粒子群算法求解1.2.1 求解思路 粒子群优化算法(PSO),粒子群中的每一个粒子都代表一个问题的可能解, 通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。 在路径规划中,我们将每一条路径规划为一个粒子,每个粒子群群有 n 个粒 子,即有 n 条路径,同时,每个粒子又有 m 个染色体,即中间过渡点的_粒子群算法路径规划
文章浏览阅读353次。所谓稳健的评估指标,是指在评估的过程中数据的轻微变化并不会显著的影响一个统计指标。而不稳健的评估指标则相反,在对交易系统进行回测时,参数值的轻微变化会带来不稳健指标的大幅变化。对于不稳健的评估指标,任何对数据有影响的因素都会对测试结果产生过大的影响,这很容易导致数据过拟合。_rar 海龟
文章浏览阅读607次,点赞2次,收藏7次。–基于STM32F103ZET6的UART通讯实现一、什么是IAP,为什么要IAPIAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了,如果在设备使用过程中需要进行应用代码的更换、升级等操作的话,则可能需要将设备返回原厂并拆解出来再使用J-Link重新烧录代码,这就增加了很多不必要的麻烦。站在用户的角度来说,就是能让用户自己来更换设备里边的代码程序而厂家这边只需要提供给_value line devices connectivity line devices