不积跬步,无以至千里;
 不积小流,无以成江海。

0%

Linux搭建配置vsftp+本地用户|虚拟用户创建


前言

​ 最近正在写设计模式的案例结合,由于需要补充spring源码知识,现在正在看spring源码深度解析以结合设计模式创作,估计设计模式这篇需要要写很长一段时间了😅😅~~

​ 工作中由于测试环境服务器到期需要变更服务器,服务环境需要重新搭建,同事搭建vsftp一直有问题,于是自己研究了三天终于搭建成功了(原来以为很简单,但是搭建中才发现各种权限问题,认证问题😅😅),谨此记录整理+归纳总结。

​ 服务器系统:centos7.9 vsftpd版本: version 3.0.2

我的github主页地址: https://xdj68.github.io
vsftpd 官网地址:https://security.appspot.com/vsftpd.html


一、VSFTP简介

​ FTP 是 File Transfer Protocol(文件传输协议)的英文简称, 用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。

​ vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的 FTP 服务器。

​ vsftpd在千兆以太网上速度可以达到86MB/s,稳定性非常优秀,仅仅采用单机部署方式连续不间断工作24小时传输数据可达2.6TB,平均并发连接为1500用户,峰值可达最大4000用户。安全性非常高,采用了进程分离架构,不同任务进程彼此独立运行,进程均以最小权限运行,使用chroot权限机制,防止客户访问非法共享目录。除此之外,vsftpd 还包括以下特性:

  • 基于IP的虚拟服务器
  • 支持PAM或 xinetd/tcp_wrappers的认证方式
  • 支持两种运行方式:独立和Xinetd
  • 虚拟用户结合数据库的用户验证
  • 每个用户独立配置文件
  • 速率限制
  • IPV6支持
  • 支持SSL加密传输

​ FTP是仅基于TCP的服务,不支持UDP。 FTP传输使用2个端口,一个数 据端口和一个命令端口。通常来说这两个端口是21(命令端 口)和20(数据端口)。FTP存在俩种模式:主动模式和被动模式。

  • PORT(主动)模式

​ 所谓主动模式,指的是FTP服务器“主动”去连接客户端的数据端口来传输数据,其过程具体来说就是:客户端通过访问服务端的21端口,然后客户端分配一个端口供ftp服务端获取数据,然后服务端通过20端口主动到客户端指定端口获取数据,20为服务器的出向端口

此模式,防火墙只需要开放21端口的对外访问策略

  • PASV(被动)模式

​ 所谓被动模式,指的是FTP服务器“被动”等待客户端来连接自己的数据端口,其过程具体是:客户端通过访问服务端的21端口,然后客户端提交PASV命令,让服务端分配一个用于传输数据的端口,此端口范围为vsftpd.conf配置的pasv_min_port-pasv_max_port,然后客户端通过分配的端口上传数据。(注意此模式下的FTP服务器不需要开启tcp 20端口)

此模式,防火墙需要开放21端口的对外访问策略和pasv_min_port - pasv_max_port端口范围内的访问策略


阅读全文 »

Hexo迁移版本升级+nvm管理nodejs版本配置


前言

已经好久没有更新github主页上hexo推送的博客了(虽然没人看苦笑😂😂),作为耕宏男孩强身健体的同时,咋们也要做博客男孩,平时多记录下开发经验和学习知识,遇到问题就不需要慌忙打开百度搜索,直接打开博客浏览复习一遍效果更好。俗话说好记性不如烂笔头,看千万次不如写一次,妙手前提是练好本手,不然写出代码就是俗手(蹭高考作文热点😃😃)

我的github主页地址 https://xdj68.github.io


一、Hexo是什么?

Hexo是快速、简洁且高效的博客框架,具有以下特点

  • 极速生成
  • 支持 GitHub Flavored Markdown 和大多数 Octopress 插件
  • 一键部署到 GitHub Pages、Heroku 等。
  • 强大的 API,可无限扩展
  • 数百个主题和插件

二、安装开发环境

因为工作电脑上(windows10系统)现有的nodejs版本项目不敢随意升级,发现可以用nvm版本管理器来控制管理nodejs和npm版本。磨刀不误砍柴功,工欲善其事,必先利其器,工具用的顺,每天早下班。nvm安装百度了一大堆但安装却遇到了问题不太一样,最后自己还是凭经验解决了,希望自己走过的坑(我已躺好)对大家有帮助就好🤣🤣。

1.nvm安装

下载地址https://github.com/coreybutler/nvm-windows
                  Releases中下载nvm-setup.exe请片描述


关键步骤
安装会出现俩个目录,一个是的NVM目录,另一个是Symlink目录,NVM目录装的是NVM相关包和配置,Symlink目录用于建立相应版本的nodejs文件夹的符号链接(还好看过一点linux shell指令大全🤣🤣)这俩个目录要保证目录内部是空的.之前nodejs的Symlink的安装目录非空导致出现以下问题:

1
exit code 145:文件目录非空;

新建文件为空目录

比如我是
H:/Nodejs/mvn
H:/Nodejs/nodejs
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

环境变量是自动添加的很贴心~~

exit code 1:没有权限;

CMD或者git bash 右键以管理员模式运行

2.nodejs安装

安装完nvm以下命令依次执行,先查看nvm版本,再下载安装nodejs版本,最后选择使用nodejs版本

1
2
3
4
5
6
7
8
9
nvm -v  查看nvm版本
nvm ls 查看当前nodejs版本
nvm ls available 查看可获得的nodejs版本 可选LTS稳定版本
nvm install/nvm unisntall <version> 安装卸载版本
nvm use <version> 使用版本
node -v nodejs版本
npm-v npm版本
npm config set prefix "H:\Nodejs\node_global" 设置全局路径
npm config set cache "H:\Nodejs\node_cache" 设置全局缓存

安装全部正常完成如下图所示
在这里插入图片描述
在这里插入图片描述

3.hexo安装

安装完hexo后,新建Blog空文件夹作为博客主文件夹,Blog文件夹中初始化hexo,下载next主题存放于./themes/next文件夹

1
2
3
4
5
npm install -g hexo 安装hexo
hexo -v 查看hexo版本
hexo init Blog Blog文件夹中初始化hexo
cd Blog 进入Blog 文件夹
git clone https://github.com/theme-next/hexo-theme-next themes/next git下载next主题

三.hexo配置发布和next主题配置

1.hexo文章发布

hexo 支持markdown文件的渲染并以html格式在/Blog/public文件夹内生成相应文件
markdown文件编辑器推荐 Typora
写完博客后只要将文件后缀为.md文件复制到/Blog/source/ _posts 中即可
hexo 配置发布主要以下命令

命令 描述
hexo generate 或 hexo g 生成静态文件
hexo server 或者 hexo s 启动hexo服务,默认情况下,访问网址为: http://localhost:4000/
hexo deploy 或者hexo d 部署静态文件
hexo clean 清除缓存文件 (db.json) 和已生成的静态文件 (public) 在某些情况(尤其是更换主题后),如果发现您对站点的更改无论如何也不生效,您可能需要运行该命令
阅读全文 »


[原文]PLA responds after shots fired at border area

cmd-markdown-logo

India urged to stop dangerous actions, pull back troops that have trespassed

The Chinese military was “forced to take countermeasures” to maintain stability on the border with India after Indian troops trespassed at the southern end of Pangong Tso Lake on Monday and fired warning shots at Chinese border patrols, Senior Colonel Zhang Shuili, spokesman for the People’s Liberation Army Western Theater Command, said on Tuesday.

It was the second time that Indian troops had violated the Chinese border in eastern Ladakh in China’s Tibet autonomous region in the past two weeks.

In Monday’s incident, the PLA personnel were about to negotiate with the Indian side when they were fired upon by Indian soldiers, Zhang said in a statement.

Zhang called the shots a serious violation of relevant agreements between the two countries and a “serious military provocation” that had escalated tension and could easily lead to misunderstandings.

The two sides had previously agreed not to use firearms at the border. They were the first shots reported to have been fired there in 45 years.

As a result, the Chinese border troops “were forced to take necessary countermeasures to get the situation under control”, he said.

He urged the Indian side to immediately stop its dangerous actions, pull back troops that had entered Chinese territory, strictly restrain the behavior of its front-line servicemen and seriously investigate and punish those who fired on the Chinese soldiers to ensure similar incidents do not occur again.

The PLA Western Theater Command will uphold its duty and mission to staunchly safeguard national sovereignty, Zhang said.

Foreign Ministry spokesman Zhao Lijian said at a regular news briefing on Tuesday that China has lodged solemn representations to India both through diplomatic and military channels.

“China always emphasizes that both sides should peacefully settle their differences through dialogue and consultation, and confrontation won’t benefit either side,” he told reporters in Beijing, adding that he hopes the two sides can reach consensus on disengagement as soon as possible.

The incident came three days after the two countries’ defense ministers met in Moscow and agreed to deescalate the border situation.

During their meeting, Chinese State Councilor and Defense Minister Wei Fenghe stressed that China cannot lose one inch of its territory and that Chinese troops are completely determined, able and ready to safeguard its sovereignty and territorial integrity.

阅读全文 »

远程通信技术 Webservice JMS RPC和RMI的区别


一、RMI 远程方法调用

RMI(Remote Method Invocation)远程方法调用。能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。使用代表:EJB

RMI远方法程调用步骤:

  • 1、客户调用客户端辅助对象stub上的方法
  • 2、客户端辅助对象stub打包调用信息(变量、方法名),通过网络发送给服务端辅助对象skeleton
  • 3、服务端辅助对象skeleton将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象
  • 4、调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象skeleton
  • 5、服务端辅助对象将结果打包,发送给客户端辅助对象stub
  • 6、客户端辅助对象将返回值解包,返回给调用者
  • 7、客户获得返回值

二、RPC 远程过程调用

RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 使用代表:Dubbo
一次RPC调用的过程大概有10步:

  • 1、执行客户端调用语句,传送参数

  • 2、调用本地系统发送网络消息

  • 3、消息传送到远程主机

  • 4、服务器得到消息并取得参数

  • 5、根据调用请求以及参数执行远程过程(服务)

  • 6、执行过程完毕,将结果返回服务器句柄

  • 7、服务器句柄返回结果,调用远程主机的系统网络服务发送结果

  • 8、消息传回本地主机

  • 9、客户端句柄由本地主机的网络服务接收消息

  • 10、客户端接收到调用语句返回的结果数据

    三、RMI与RPC的区别

  • 1、方法调用方式不同:
    RMI调用方法,RMI中是通过在客户端的Stub对象作为远程接口进行远程方法的调用。每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口(stub)上,那么这个新方法就不能被RMI客户方所调用。
    RPC调用函数,RPC中是通过网络服务协议向远程主机发送请求,请求包含了一个参数集和一个文本值,通常形成“classname.methodname(参数集)”的形式。这就向RPC服务器表明,被请求的方法在“classname”的类中,名叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后通过网络协议发回。

  • 2、适用语言范围不同:
    RMI只用于Java,支持传输对象。
    RPC是基于C语言的,不支持传输对象,是网络服务协议,与操作系统和语言无关。

  • 3、调用结果的返回形式不同:
    RMI是面向对象的,Java是面向对象的,所以RMI的调用结果可以是对象类型或者基本数据类型。
    RPC的结果统一由外部数据表示(External Data Representation,XDR)语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由XDR定义的数据类型才能被传递,可以说RMI是面向对象方式的Java RPC。

阅读全文 »

欢迎使用 Cmd Markdown 编辑阅读器


我们理解您需要更便捷更高效的工具记录思想,整理笔记、知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown:

  • 整理知识,学习笔记
  • 发布日记,杂文,所见所想
  • 撰写发布技术文稿(代码支持)
  • 撰写发布学术论文(LaTeX 公式支持)

cmd-markdown-logo

除了您现在看到的这个 Cmd Markdown 在线版本,您还可以前往以下网址下载:

Windows/Mac/Linux 全平台客户端

请保留此份 Cmd Markdown 的欢迎稿兼使用说明,如需撰写新稿件,点击顶部工具栏右侧的 新文稿 或者使用快捷键 Ctrl+Alt+N


什么是 Markdown

Markdown 是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档:譬如您正在阅读的这份文档。它使用简单的符号标记不同的标题,分割不同的段落,粗体 或者 斜体 某些文字,更棒的是,它还可以

1. 制作一份待办事宜 Todo 列表

  • 支持以 PDF 格式导出文稿
  • 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
  • 新增 Todo 列表功能
  • 修复 LaTex 公式渲染问题
  • 新增 LaTex 公式编号功能

2. 书写一个质能守恒公式[^LaTeX]

$$E=mc^2$$

3. 高亮一段代码[^code]

1
2
3
4
5
6
7
@requires_authorization
class SomeClass:
    pass

if __name__ == '__main__':
    # A comment
    print 'hello world'
1
2
3
4
5
6
7
@requires_authorization
class SomeClass:
    pass

if __name__ == '__main__':
    # A comment
    print 'hello world'

4. 高效绘制 流程图

1
2
3
4
5
6
7
8
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end

st->op->cond
cond(yes)->e
cond(no)->op
1
2
3
4
5
6
7
8
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end

st->op->cond
cond(yes)->e
cond(no)->op

5. 高效绘制 序列图

1
2
3
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
1
2
3
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!

6. 高效绘制 甘特图

1
2
3
4
5
6
7
8
9
10
11
12
13
    title 项目开发流程
    section 项目确定
        需求分析       :a1, 2016-06-22, 3d
        可行性报告     :after a1, 5d
        概念验证       : 5d
    section 项目实施
        概要设计      :2016-07-05  , 5d
        详细设计      :2016-07-08, 10d
        编码          :2016-07-15, 10d
        测试          :2016-07-22, 5d
    section 发布验收
        发布: 2d
        验收: 3d
1
2
3
4
5
6
7
8
9
10
11
12
13
        title 项目开发流程
    section 项目确定
        需求分析       :a1, 2016-06-22, 3d
        可行性报告     :after a1, 5d
        概念验证       : 5d
    section 项目实施
        概要设计      :2016-07-05  , 5d
        详细设计      :2016-07-08, 10d
        编码          :2016-07-15, 10d
        测试          :2016-07-22, 5d
    section 发布验收
        发布: 2d
        验收: 3d

7. 绘制表格

| 项目        | 价格   |  数量  |
| ——–   | —–:  | :—-:  |
| 计算机     | $1600 |   5     |
| 手机        |   $12   |   12   |
| 管线        |    $1    |  234  |

| 项目        | 价格   |  数量  |
| --------   | -----:  | :----:  |
| 计算机     | \$1600 |   5     |
| 手机        |   \$12   |   12   |
| 管线        |    \$1    |  234  |
阅读全文 »