服务程序
该部分笔记将记录:与 FTP 服务搭建有关的内容,以及相关问题的解决方案。
Filezilla Server
Download FileZilla Server for Windows
通过 Filezilla Server 应用,他带有图形化界面,我们能够快速部署 FTP Server 服务。
# 07/24/2021 目前,仅支持 Windows 操作系统。
3CDaemon(FTP / TFTP)
3CDaemon 2.0 – Download
它也是个图形化软件,能够让我们快速部署 TFTP, FTP, Syslog server 服务。
vsftpd
vsftpd – Secure, fast FTP server for UNIX-like systems
这是我们在企业中比较常用的 FTP Server 服务。
PURE-FTPD
https://www.pureftpd.org/project/pure-ftpd https://github.com/jedisct1/pure-ftpd/ 01/04/2020 Star 282
ProFTPD
http://proftpd.org/ https://github.com/proftpd/proftpd/ 01/04/2020 Star 257[……]
「FTP」- 常见问题处理
「Huawei VRP」- 配置 FTP 服务
参考 .chm 文档,里面记录配置 FTP 访问的详细过程。
关闭 FTP 服务:undo ftp server
配置命令介绍
# 开启FTP服务器端功能
[Huawei]ftp [ ipv6 ] server enable
# 配置FTP本地用户
[Huawei]aaa
[Huawei]local-user user-name password irreversible-cipher password
[Huawei]local-user user-name privilege level <level> # 必须将用户级别配置在3级或者3级以上,否则FTP连接将无法成功
[Huawei]local-user user-name service-type ftp
[Huawei]local-user user-name ftp-directory directory[……]
「vsftpd」- Secure, fast FTP server for UNIX-like systems
vsftpd, FTP Server, Probably the most secure and fastest FTP server for UNIX-like systems
注意:本文介绍的 vsftpd 是基于 vsftpd-3.0.3 版本
相关链接
vsftpd – Secure, fast FTP server for UNIX-like systems
参考文献
vsftpd Homepage Change Log 鳥哥的 Linux 私房菜 / 第二十一章、檔案伺服器之三: FTP 伺服器[……]
「vsftpd」- 基本概念
用户类型
在vsftpd中,有三种类型用户: 1)匿名用户:配置一个匿名帐号,该帐号可查看、可下载、但不能上传(需要设置)。 2)本地用户:配置一个本地用户,登录后只能进入自己的家目录中,并且可以上传、修改文件。 3)虚拟用户:配置一个虚拟帐号,登录后只能进入自己的家目录中,并且可以上传、修改文件。
注意「虚拟用户」功能不能与「本地用户」功能同时使用,参见vsftpd.conf中guest_enable的说明。[……]
「vsftpd」- 安装
从仓库中直接安装(推荐)
CentOS 7.5 and vsftpd 3.0.2
#!/bin/sh
yum install -y vsftpd
使用源码编译安装
环境概述
系统环境:Ubuntu 16.04 TLS 安装路径:/usr/local/vsftpd 上传目录:/mnt/ftp
第一步、下载源码包
去官网下载源码包
第二步、安装相关依赖
libcap with PAM,Linux-PAM,OpenSSL
#!/bin/sh
##########################
# Ubuntu 16.04 TLS
##########################
# 安装libcap-2.25 with PAM
apt-get install libpam-cap
# 安装Linux-PAM-1.3.0
apt-get install libpam0g-dev libpam0g
# 安装OpenSSL-1.0.2k
apt-get install libssl-dev libssl1.0.0
第三步、构建编译安装
可查看源码目录下的INSTALL文件
#!/bin/sh
# 解压进入源码目录
cd /path/to/source
# 执行构建命令
# 注意,不要使用make install命令,是因为安装路径不符合我的期望。
make
# 安装主程序
install -v -m 755 vsftpd /usr/local/vsftpd/vsftpd
# 安装默认配置文件
install -v -m 644 vsftpd.conf /usr/local/vsftpd
# 安装用户手册
mkdir -pv /usr/local/vsftpd/man/man{5,8}
install -v -m 644 vsftpd.8 /usr/local/vsftpd/man/man8
install -v -m 644 vsftpd.conf.5 /usr/local/vsftpd/man/man5
第四步、创建用户及组
#!/bin/sh
# 运行vsftpd用户的进程
groupadd -g 47 vsftpd
useradd -c “vsftpd User” -d “/dev/null” -g “vsftpd” -s “/bin/false” -u 47 vsftpd
vsftpd,FTP服务的主程序文件。用于创建vsftpd服务进程。
简单示例(EXAMPLES)
vsftpd -olisten=NO /etc/vsftpd.conf -oftp[……]
「vsftpd」- 配置与管理
问题描述
我们需要搭建 FTP 服务进行文件的上传下载。
该笔记将记录:如何使用 vsftpd 搭建 FTP 服务,实现文件上传与下载。
解决方案
第一步、系统环境、路径等相关信息
创建 FTP 根目录:/mnt/ftp
install -v -d -m 0755 /mnt/ftp
第二步、配置文件修改(vsftpd.conf)
添加公共配置到vsftpd.conf中:
cat >> /usr/local/vsftpd/vsftpd.conf << “EOF”
# 后台运行vsftpd服务。
background=YES
# vsftpd独立运行
listen=YES
# vsftpd无需访问文件系统时,使用此文件夹
secure_chroot_dir=/usr/local/vsftpd/empty
EOF
第三步、有关本地用户的配置
要启用本地登录,按照如下说明进行配置:
# 添加组,并创建本地用户,然后设置登录密码。
groupadd ftp
useradd -s /bin/false -c “FTP Local User” -d /mnt/ftp -g ftp ftp-localuser
passwd ftp-localuser
# 修改配置,允许本地用户登录,并且允许写入
cat >> /usr/local/vsftpd/vsftpd.conf << “EOF”
# 允许本地用户登录
local_enable=YES
# 允许本地用户写入
write_enable=YES
# 本地用户登录后,将其限制在家目录中。
chroot_local_user=YES
# 允许写入。(我不知道为什么手册里没有介绍这个参数,如果不加该参数,chroot_local_user=YES后,本地用户无法登录)
allow_writeable_chroot=YES
EOF
# 修改访问权限,允许ftp-localuser创建、修改、查看文件。
chmod g+rwx /mnt/ftp
第四步、设置虚拟用户
创建/usr/local/vsftpd/vsftpd.vuser.conf文件 该文件保存了虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。比如:
cat >> /usr/local/vsftpd/vsftpd.vuser.conf << “EOF”
ftp-virtualuser
ftp-virtualuser-passwd
EOF
生成虚拟用户口令认证文件
# 生成口令文件需要[……]
「vsftpd」- 配置匿名下载(与上传)
内容简介
本文将介绍使用vsftpd搭建匿名FTP站点,允许用户下载资源。我们还将介绍如何配置以允许匿名上传(当然不建议该行为)
环境概述
操作系统:CentOS Linux release 7.5 软件版本:vsftpd: version 3.0.2 安装方式:YUM
设置匿名下载
第一步、修改配置文件
我们使用默认配置文件,但是需要修改配置文件:(1)设置listen=YES,(2)并设置listen_ipv6=NO,使其监听IPv4地址。配置文件内容如下:
# grep -v -E ‘^#|^\s*$’ /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=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
第二步、重启服务
保存并退出,然后重启服务即可。
附加说明
默认FTP根目录为文件系统的/var/ftp/目录。
允许匿名上传(不推荐)
第一步、修改配置文件
如果需要允许匿名用户上传,需要修改配置文件(1)设置write_enable=YES,(2)设置anon_upload_enable=YES。配置文件内容如下:
# grep -v -E ‘^#|^\s*$’ /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
第二步、创建写入目录
由于匿名用户无法上传文件到根目录无法,所以只能创建新目录:
#!/bin/sh
mkdir -pv “/var/ftp/upload”
chown ftp:ftp “/var/ftp/upload”
第三步、[……]
「vsftpd」- 实现:特定用户帐号上传,其他用户只能下载(WIP)
问题描述
在进行产品交付时,我们使用 FTP 提供下载:1)内部帐号,上传到各子目录中,2)客户登录帐号,只能访问自己的目录,并且能进行下载且无法上传。
该笔记将记录:如何实现,某个用户上传,而其他用户只能下载。
解决方案
这里只记录关键配置:
# 前台运行(可选)
background=NO
# 禁止匿名访问,允许本地访问,允许客人(虚拟用户)访问
anonymous_enable=NO
local_enable=YES
guest_enable=YES
# 使虚拟用户具有与本地用户相同的权限
virtual_use_local_privs=YES
# 使用 chroot 以禁止用户访问系统
chroot_local_user=YES
allow_writeable_chroot=YES
# 所有人禁止写入,实现只能下载
write_enable=NO
# 为用户设置各自的家目录,
user_sub_token=$USER
local_root=/home/vsftpd/$USER
# 为用户使用自己的配置文件
user_config_dir=/etc/vsftpd/user_config.d/
通过 /etc/vsftpd/user_config.d/<username> 配置,只为需要上传的用户创建,内容如下:
write_enable=YES
参考文献
Manpage of VSFTPD.CONF security – vsftp: why is allow_writeable_chroot=YES a bad idea? – Server Fault[……]
「vsftpd.conf」
vsftpd.conf,vsftpd的配置文件。
配置文件描述
该配置文件用户控制vsftpd的行为。默认在/etc/vsftpd.conf查找该文件。可以在命令行中以参数的形式指定配置文件。此行为非常有用,因为你可能会使用高级的inetd(如xinetd)在每个虚拟主机的基础上启动具有不同配置文件的vsftpd。
配置文件格式
井号(#)开始的行为注释行,会被忽略。
指令的格式为:
option=value
警告:option,=,value这三者之间是不能由空格的。
每个设置都有默认值,可以在配置文件中进行修改。
布尔值选项
ascii_upload_enable When enabled, ASCII mode data transfers will be honoured on uploads.
默认值: NO
ascii_download_enable When enabled, ASCII mode data transfers will be honoured on down‐ loads.
默认值: NO
async_abor_enable When enabled, a special FTP command known as “async ABOR” will be enabled. Only ill advised FTP clients will use this feature. Additionally, this feature is awkward to handle, so it is disabled by default. Unfortunately, some FTP clients will hang when can‐ celling a transfer unless this feature is available, so you may wish to enable it.
默认值: NO
background 启用时,vsftpd以“监听”模式启动,即在后台运行。 默认值: NO
check_shell Note! This option only has an effect for non-PAM builds of vsftpd. If disabled, vsftpd will not check /etc/shells for a valid user shell for local logins.
默认值: YES
chmod_enable When enabled, allows use of the SITE CHMOD comm[……]
「vsftpd」- 常见错误汇总
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
问题描述 在以匿名用户身份并使用ftp命令连接vsftpd服务时,产生500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误。
问题原因 导致该问题的原因有很多。在我们的场景中,该问题是由于目录权限错误导致的。
用户及组可以具有写入权限,但是其他用户不能具有写入权限。
解决办法 修改目录权限,去掉其他用户的写入权限(chmod o-w “/path/to/dir”)。
500 OOPS: vsftpd: not found: directory given in ‘secure_chroot_dir’:xxxxxxx
响应: 500 OOPS: vsftpd: not found: directory given in ‘secure_chroot_dir’:/usr/share/empty 错误: 严重错误: 无法连接到服务器
553 Could not create file
问题描述:在使用匿名帐号进行上传时,产生553 Could not create file错误。
问题原因:在我们的场景中,该问题是由于权限错误导致的。匿名用户上传需要开启anon_upload_enable=YES参数。
解决办法:修改配置/etc/vsftpd/vsftpd.conf文件,设置anon_upload_enable=YES参数。
550 Failed to open
问题描述:在使用ftp命令进行下载文件时,产生550 Failed to open file.错误提示。
问题原因:可能是文件自身问题,但更多是因为权限错误,导致运行FTP进程的用户无法读取文件。
解决办法:修改文件权限,使实际读取文件的用户具有对该文件的读取权限。
550 Permission denied
问题描述:在使用匿名帐号进行上传时,产生550 Permission denied错误。
问题原因:在我们的场景中,我们需要允许匿名用户上传,因此需要开启 anon_upload_enable=YES 参数。
解决办法:修改配置 /etc/vsftpd/vsftpd.conf 文件,设置 anon_upload_enable=YES 参数。
Connection attempt failed with “EAI_NONAME – Neither nodename nor servname provided, or not known”
没有[……]
「vsftpd」- 530 Login incorrect
问题描述
在登录vsftpd服务时,产生530 Login incorrect错误。
问题原因
还未深入探究。
解决办法
vim /etc/vsftpd/vsftpd.conf pam_service_name=ftp
service vsftpd restart — You are disabling default access control via PAM, because default “ftp” has no rules. The default pam_service_name=vsftp uses the file /etc/pam.d/vsftpd. This file by default requires FTP users to have a shell listed in /etc/shells and requires them not to be listed in /etc/ftpusers. — By default vsFTPd uses the file /etc/pam.d/vsftpd. This file by default requires FTP users to have a shell listed in /etc/shells and requires them not to be listed in /etc/ftpusers. If you check those 2 things your probably find what the problem is. — I did not need to change the vsftpd.conf. Only needed to make sure that a shell was set in my /etc/passwd file, that also was lited in /etc/shells.
So basically after useradd without a shell I needed to make sure the home directory was created and that the user had /bin/bash as it’s shell.
参考文献
vsftpd: 530 Login incorrect VSFTPD configuration problems with 12.04[……]
「vsftpd」- Remove directory operation failed
问题描述
在执行目录删除时,产生如下提示:
Command: RMD deliver-master
Response: 550 Remove directory operation failed.
问题原因
当服务器进行查看,发现目录存在 dot file(我们常说的隐藏文件,以点(.)开头的文件)
解决方法
修改 vsftpd.conf 配置(如下),以强制显示所有的 dot file,并重启服务,再次进行删除:
force_dot_files=YES
参考文献
Enable display of hidden dot files in VSFTPD | Shkodenko[……]
「ftp(1)」- ftp: connect: Connection refused(vsftpd)
问题描述
我们使用 vsFTPd 搭建 FTP 服务,以容器方式运行,并使用被动模式。
在连接 ftp 服务时,我们使用 ftp(1) 命令,但是出现 Connection refused 错误:
# ftp -4 -p ftp.example.com 21
Connected to ftp.example.com.
220 (vsFTPd 3.0.2)
Name (ftp.example.com:k4nz): ftp-read
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (127,0,0,1,78,90).
ftp: connect: Connection refused
ftp> close
221 Goodbye.
ftp> quit
但是,Filezailla 客户端能够成功连接 FTP 服务。
原因分析
为了排查问题,我们在华为交换机上搭建 FTP 服务(只是为了快捷搭建 FTP 测试服务),以被动模式运行。此时,ftp(1) 命令能够成功访问 FTP 并下载文件。
通过 Wireshark 抓包,我们对比两个 FTP 交互过程。
我们发现在 vsFTPd 中,在 FTP Server 对 PASV 响应中,Passive port 是正常的,但是 Passive IP Address 字段为 127.0.0.1 地址。 这导致 ftp(1) 使用该地址时,无法连接到 FTP 服务。
而 Filezilla 能够成功连接 vsFTPd 服务,是因为 Filezilla 并未使用该字段,而直接使用远程 FTP Server 地址(这是客户端的特殊行为)。
而返回 127.0.0.1 地址,是因为我们错误的配置 pasv_address=127.0.0.1 地址,而 Filezilla 客户端的特殊行为,让我们没有测试出该错误。
解决方案
针对我们的环境,我们需要修改 vsftpd.conf 配置文件,设置 pasv_address=1.2.3.4 参数。这里 1.2.3.4 是服务器的公网地址。
我们是容器部署,如果为指定 pasv_address 参数,则默认会被 vsftpd 设置为网卡地址(容器网卡地址),所以必须显式指定。
参考文献
Manpage of VSFTPD.CONF ftp – vsftpd conditional[……]
「vsftpd」- 当使用NFS挂载时,上传/下载特别慢
内容简介
解决问题:当使用NFS挂载点作为FTP目录时,上传/下载特别慢。
问题描述
在系统中,运行vsftpd服务,并使用NFS挂载点作为vsftpd文件上传目录。
出现的问题是上传/下载超时。并且,在上传时,文件可以创建成功,但是大小为零。
系统环境
操作系统:
CentOS release 6.9 (Final)
vsftpd:
version 2.2.2 (vsftpd -v)
NFS:
vers=3 (nfsstat -m)
问题原因
# 问题诊断
在执行动作(比如上传)时:
(1)首先VSFTPD请求NFS客户端,要求上传之前锁定文件。
(2)然后NFS客户端发出lock调用。
(3)但是服务端NFS v3并不支持文件锁定,而产生失败。
(4)客户端进行重试,最后超时。
可以观察NFS的日志(/var/log/messages)发现这一点。
# 附加说明
由于NFS v2、NFS v3协议不支持文件锁定,所与文件锁有关的调用可能都会失败。但是NFS v2、NFS v3支持NLM(Network Lock Manager)协议,它为通过NFS共享的文件提供「Unix记录锁定」,使客户端能够与其他客户端同步它们的I/O请求,以确保数据的完整性。(这里有一些技术细节我并没有弄清楚,可能正常启动rpc.lockd与rpc.statd就可以正常使用文件锁了,所以我遇到的问题可能是服务没有正常运行。)
但是NFS v4支持文件锁,但是不支持NLM协议。通过NFS v4进行挂载(mount -t nfs -overs4),使用PHP的flock()进行测试,能够正常获取锁。
解决办法
最好的做法当然是使用NFS v4协议挂载。总要有个“但是”:情况复杂,很多服务器都是NFS v3挂载,双协议混合使用又未经过测试,弄不好NFS服务还要升级。
为了解决问题,在挂载时使用nolock(mount -onolock)选项进行重新挂载。
相关链接
Linux NFS Overview, FAQ and HOWTO Documents flock(2) versus fcntl(2) over a NFS On the Brokenness of File Locking
参考文献
!!! FTP put/get is slow on mapr nfs mount point !!! 11.2[……]
「HTTP」 – Hypertext Transfer Protocol
URI, Uniform Resource Identifier
URI(Universal Resource Identifier)是统一资源标识符,它标识了资源的具体位置,用于标识一个特定的资源。
URI 只代表资源的实体,不代表资源的形式。
URL, Uniform Resource Locator
统一资源定位符,URL是一种 URI,可以用来表示一个资源,而且还指明了如何定位这个资源,如 http://www.ietf.org/rfc/rfc2396.txt%EF%BC%8Cftp://ftp.is.co.za/rfc/rfc1808.txt%E3%80%82 URL(Uniform Resource Locator,统一资源定位符),是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息包括指出文件的位置以及浏览器应该怎么处理它;
关于URI和URL的关系:URL为URI的子集,URL必须是绝对路径,而URI可以是绝对路径也可以是相对路径。
如 http://127.0.01:8080/AppName/rest/product/1 为 URL,而 AppName/rest/product/1 为URI。
参考文献
Wikipedia/Hypertext Transfer Protocol[……]
「HTTP」- 用于调试的HTTP代理
抓包工具
JMeter
Charles
Zed Attack Proxy
proxystrike
mitmproxy
Acunetix
Netsparker
w3af
WebScarab
Nikto
Fiddler
目前(08/06/2017)只有Windows版本的
Burp Suits
用JAVA语言开发的。Burp Suits是一个Web安全测试的套件。其各种工具可以无缝集成在一起来支持整个测试过程。该软件提供了代理功能。
有免费版的和专业版的。
Homepage: http://portswigger.net/index.html Free Download: https://portswigger.net/burp/freedownload
Paros
用JAVA语言开发的。用过,但是有的时候会出问题,比如界面卡死什么的。
https://sourceforge.net/p/paros/code/ http://paros.cvs.sourceforge.net/viewvc/paros/
参考文献
SourceForge/Paros[……]
「HTTP」- HTTP/2
解决方案
HTTP/2 是 HTTP 协议的第二个主要版本,最初命名为 HTTP2.0,主要基于 SPDY 协议;
原理简述
SPDY(SPeeDY)是谷歌开发的基于 TCP 协议的应用层协议。目标是优化 HTTP 协议的性能,通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。SPDY 协议的核心思想是尽量减少 TCP 连接数。SPDY 并不是一种用于替代 HTTP 的协议,而是对 HTTP 协议的增强;
性能增强的核心:二进制传输
在 HTTP/1 中,数据是通过文本的方式传输。数据基于文本的方式传输存在缺陷,这是由于文本的表现形式有多样性,需要考虑各种场景才能达到健壮性;
在 HTTP/2 中,但是二进制则不同,只有 0 和 1 的组合,因此选择二进制传输,实现方便且健壮;
特性特征
HTTP2.0 的特点是:在不改动 HTTP 语义、方法、状态码、URI 及首部字段的情况下,大幅度提高 web 性能;
HTTP/2 其他增强: 1)头部压缩:采用 HPACK 算法压缩头部,减少头部大小提升性能; 2)多路复用:每条请求消息可以继续细分为帧交错发送,然后在另一端重新组装为帧。在 HTTP/1.1 中当客户端在一个 TCP 连接同时发起多个请求时,服务器必须按顺序依次响应每个请求,后续的请求可能被阻塞; 3)服务器推送:服务器除了可以响应客户端请求,还可以向客户端推送额外的资源; 4)优先级:HTTP/2 设计了复杂的优先级排定规则,浏览器可以一次请求多个资源,指定一些优先级信息来帮助服务器确定应该如何处理这些资源,避免资源处理的相互竞争;[……]
「HTTP/2.0」- 概念术语
多路复用
在 HTTP/2 协议中,HTTP 消息被分解独立的帧(Frame),交错发送,帧是最小的数据单位。每个帧会标识属于哪个流(Stream),流由多个数据帧组成,每个流拥有一个唯一的 ID,一个数据流对应一个请求或响应包;
如上图所示,client 正在向 server 发送数据流 5 的帧,同时 server 也正在向 client 发送数据流 1 和数据流 3 的一系列帧。一个连接上有并行的三个数据流,HTTP/2 可基于帧的流 ID 将并行、交错发送的帧重新组装成完整的消息;
通过以上机制,HTTP/2 就解决了 HTTP/1 的请求阻塞、连接无法复用的问题,实现了多路复用、乱序发送;[……]
「IRC」- Internet Relay Chat
参考文献
Wikipedia/Internet Relay Chat[……]
「Linux」- 搭建 IRC 服务(Ubuntu)
问题描述
我们需要使用 IRC 的即时通知(我们使用 Linux 版本,其他即时通讯软件,要么没有 Linux 客户端,要么已经在使用(我们使用 Slack 办公),要么配置繁琐,总之我们有这样的需求)
该笔记将记录:如何搭建 IRC 服务
解决方案
第一步、安装服务
apt-get install inspircd
第二步、修改配置
修改 /etc/inspircd/inspircd.conf 配置:
<bind address=”<0.0.0.0>” port=”<6667>” type=”clients”>
下面为非必要配置:
<server name=”irc.example.com” description=”Example IRC Server” network=”EXAMPLEIRC”>
第三步、启动服务
systemctl start inspircd.service
参考文献
Deploying an IRC Server on Ubuntu | Sam Hewitt[……]
「IRC」- 创建带有密码的频道(Channel with Password)
问题描述
我们需要创建私有的 Channel 供内部通信、消息提示使用。
因此需要为我们的 Channel 设置密码。
该笔记将记录:如何为 IRC Channel 设置密码访问
解决方案
如果需要为 Channel 设置密码,需要该 Channel 的 OP 用户进行操作。
执行如下命令设置 Channel 密码:
/MODE #<Channel Name> +k <Channel Password>
密码保护的 Channel 登录方法:
/JOIN #<Channel Name> <Channel Password>
参考文献
How do I make an IRC Channel with password? – Stack Overflow[……]
「IRC」- 发送多行消息
问题描述
我们希望在 IRC 客户端中,可以发送多行消息(即单条消息有多行内容),因为我们使用“多行的单条消息”来描述某个问题。
但是,在经过查找之后,我们发现 IRC 并不支持多行消息: java – Linebreak IRC protocol – Stack Overflow Insert line breaks into an IRC message – Stack Overflow
但是办法总是有的,我们的目的是将消息区分开,所以我们可以给消息添加边框。
解决方案
使用 Boxes 命令,或者其他命令,为消息添加边框:
# boxes -d stone << MSG
> Last build (#11), 6 mo 2 days ago
> Last stable build (#11), 6 mo 2 days ago
> Last successful build (#11), 6 mo 2 days ago
> Last failed build (#6), 6 mo 3 days ago
> Last unsuccessful build (#7), 6 mo 3 days ago
> Last completed build (#11), 6 mo 2 days ago
> MSG
+———————————————–+
| Last build (#11), 6 mo 2 days ago |
| Last stable build (#11), 6 mo 2 days ago |
| Last successful build (#11), 6 mo 2 days ago |
| Last failed build (#6), 6 mo 3 days ago |
| Last unsuccessful build (#7), 6 mo 3 days ago |
| Last completed build (#11), 6 mo 2 days ago |
+———————————————–+
注意事项
我们的需求具有特殊性,在 Jenkins Pipeline 中发送 IRC 消息,所以这种方案是可以接受的。
参考文献
terminal – How can I create a message box from the command line? – Unix & Linux Stack Exchange printf – b[……]
「IRC」- 昵称注册(学习笔记)
问题描述
在使用 FreeNode 节点进入 #debian 频道时,我们遇到如下提示:
mbpk4nz has changed mode: +i
18:44 Error(477): #debian Cannot join channel (+r) – you need to be identified with services – see https://freenode.net/kb/answer/registration
在阅读 https://freenode.net/kb/answer/registration 内容后,我们了解到有关昵称注册的内容
该笔记将记录:昵称注册的学习笔记,以及相关问题处理。
第一步、注册帐号
有些 Channel 要求在说话前,必须先注册。以下为注册流程: 1)选择“主帐号”进入频道,虽然不能说话,但是不影响连接 freenode 节点 2)选择我们希望使用的昵称:/nick <nickname> 3)注册我们选择的昵称:/msg NickServ REGISTER <password> <youremail@example.com> 4)此时,邮箱将收到验证邮件。如果 24 小时未验证,则注册失败,帐号将被释放;
除了注册之外,还可以使用“昵称组” —— 即将多个昵称绑定到同个帐号,进行随意切换(小号、Cloak、隐藏身份): 1)在完成注册帐号之后…… 2)切换新的昵称:/nick <nickname02> 3)认证到主帐号:/msg NickServ IDENTIFY <nickname> <password> 4)添加到昵称组:/msg NickServ GRLOUP
但是,如果是机器人帐号,建议使用单独的帐号,而不是昵称组。
第二步、登录帐号
使用如下命令进行帐号密码登录:
/connect chat.freenode.net 6697 <YourNick>:<YourPassword>
如果 IRC 客户端支持 SASL 功能(类似记住帐号密码),则可以无需每次输入帐号密码。
比如在 HexChat 中,如下方法设置 SASL 登录: 1)在 Menubar / HexChat / Network List 中(Ctrl+S),选择节点,Edit… 2)User name: <Your Username> 3)Login Method: SASL (username + password) 4)Password: <Your Password> 5)当配置成功后,在连接[……]
「IRC」- Popular IRC Networks
问题描述
该笔记将记录:常用的 IRC 服务器
解决方案
chat.freenode.net:6697 / non-SSL: 6667
参考文献
mIRC: IRC Networks and Servers freenode[……]
「NIS」- Network Information Service
NIS,Network Information Service
用于在多台主机之间分发配置数据,也称做 YP(Yellow Pages)[……]
「RDP」- Remote Desktop Protocol
RDP,Remote Desktop Protocol,远程桌面协议。
参考文献
Wikipedia/Remote Desktop Protocol[……]
「xrdp」- 通过 Windows 远程 Linux 桌面
xrdp
xrdp,是 RDP 协议的服务端实现,基于 FreeRDP 和 rdesktop 的工作,xrdp 使用 RDP(远程桌面协议)向用户呈现图形化界面。该项目提供一个功能齐全的 RDP 服务端,能够接受来自 rdesktop、freerdp、微软自己的远程桌面客户端的连接。与 Windows NT/2000/2003/2008/2012 服务器不同,xrdp 不会显示 Windows 桌面,而是显示 X Window 桌面。
基本原理
xrdp 并不直接提供桌面的显示功能,而是使用Xvnc或X11rdp来管理X Session,并显示桌面
RDP Client
RDP的客户端,用于连接RDP Server。
RDP Server
xrdp,RDP的服务端,用于接受来自于RDP Client的连接请求,xrdp可以接受freerdp、rdesktop、Windows内建的远程桌面的连接,并向用户显示一个登录界面,该界面用于输入Username、Password并选择桌面管理模块。
xrdp包含RDP、Security、MCS、ISO、TCP层、一个简单的窗口管理器、一些控件。它是一个多线程单进程的服务进程,正是在这个单进程中,进行着会话的中央管理。中央管理包括会话投影、管理给用户的弹出窗口。
xrdp 由 xrdp.ini 配置文件控制。
在RDP Server和RDP Client之间有3个安全级别。低、中、高:
低:40位,从Client到Server的数据是加密的;
中:40位,双向加密;
高:128位,双向加密;
xrdp支持的3个加密级别在xrdp.ini文件中配置。在Client连接之前,RSA密钥交换使用Client和Server的随机值来创建RC4密钥。
桌面管理模块在运行时才进行加载,以提供真正的功能。可以创建许多不同的模块来向用户展示多种不同的桌面中的一种。这些可加载模块用以节省内存,并且支持GPL和非GPL模块。
多线程来提供最佳的用户性能。一个Client不会导致整体性能下降。使用任何模块进行会话投影也需要一个多线程进程。模块不必考虑投影,投影由xrdp负责。例如,可以使用相同的投影工具来映射VNC、RDP、自定义模块会话。
用于发送弹窗给任何用户的xrdp的内建窗口管理器与桌面管理模块无关,可以在任何模块下运行,也可以用作提供连接错误、提示。
xrdp可以连接到与xorgxrdp驱动程序在本地创建的X.org会话,或者到VNC X11服务器,并转发到另一台RDP服务器。
桌面管理模块
libvnc 用在xrdp中的VNC模块。libvnc提供了到VNC S[……]
「RFB」- Remote Frame Buffer
参考文献
Wikipedia/RFB protocol[……]