08 vsftpd 父子进程通讯

前言

在前面的 vsftpd 登录过程的调试vsftpd 的主动模式和被动模式 中提到了一些 vsftpd 的多进程之间的交互方式  

是通过 socket 来进行通讯的, 呵呵 我们这里 大致的来看一下 相关的业务处理  

 

 

基于 socket 的通讯 

以 vsf_two_process_start 为例, 我们看一下 是怎么基于 socket 进行通讯的  

priv_sock_init 里面初始化了两个 fd, parent_id, child_fd, 用于 之后的父子进程进行通讯 

然后之后 父子进程 分别清理了一下自己不关心的另外的一个 fd, priv_sock_set_parent_context, priv_sock_set_cihld_context 

从程序上来说, 只要一方持有一个 fd 两者就可以进行通讯了 

 

priv_sock_init 里面, 创建了一对 socket, 分别放到了 session->parent_fd, session->child_fd 

 

清理掉自己不关心的另外一个 fd 

 

 

vsf_two_process_start fork 的父子进程通讯 

这里是在 登录的时候, 用户录入了 用户名 + 密码之后, 子进程吧 把 用户名 + 密码 + 其他选项, 带上发送给 父进程, 请父进程验证, 以及走后面的流程  

子进程这里, 没有使用 ssl 的情况, 如果验证通过了 进程就退出了了 

 

父进程这里, 拿到用户名密码之后 走校验的处理, 校验通过 进入下一个阶段用户的相关业务交互 

 

 

common_do_login fork 的父子进程的通讯

这边的 就主要是 一些业务上的处理了 

如下是 common_do_login 的 fork 出来的子进程的相关业务处理, 主要包含了如下业务, 至于调用的, 可以参照 vsftpd 登录过程的调试vsftpd 的主动模式和被动模式 

1. PRIV_SOCK_CHOWN : 匿名用户上传的文件的 owner 的更新 

2. PRIV_SOCK_GET_DATA_SOCK : 主动连接给定的远程的 主机 + 端口, 返回 socket_fd 

3. PRIV_SOCK_PASV_CLEANUP : 一些主动模式,被动模式设计的业务处理之前, 之后清理掉 pasv_listen_fd, 比如 PASV, PORT, EPRT 处理之前, RETR, LIST, 上传 命令之后 

4. PRIV_SOCK_PASV_ACTIVE : 判断当前是否处于被动模式下面, PASV 命令会发送 PRIV_SOCK_PASV_LISTEN 会监听一个端口, 如果 pasv_listen_fd 合法, 则表示处于 被动模式 

5. PRIV_SOCK_PASV_LISTEN :  被动模式下, 客户端发送 PASV 命令过来, 服务器需要监听一个端口, 然后告知客户端来连接 

6. PRIV_SOCK_PASV_ACCEPT : 被动模式下,  客户端来连接服务端监听的这个端口, 获取 socket, 然后进行交互 

 

vsftpd 的主动模式和被动模式 里面的 "但是 被动模式这边, 服务端创建数据服务在某个端口监听, 这个流程上面是一笔带过的, 这时候就需要 抽象的去思考 或者 你自己去了解了, 客户端连接服务端的数据端口, 这个是在代码中有很明显的体现的 "

其中被动模式这边 服务端创建服务在某个端口监听, 是可以通过 上面的 PRIV_SOCK_PASV_LISTEN, PRIV_SOCK_PASV_ACCEPT 来学习了解的 

也可以参照 vsftpd 的对于 控制端口 的监听, 以及业务处理进行了解 

 

 

 

 

参考

 vsftpd 登录过程的调试 

vsftpd 的主动模式和被动模式

 

 

 

### openEuler系统中vsftpd守护进程的配置与使用 在openEuler系统中,`vsftpd`(Very Secure FTP Daemon)是一种高性能且安全的FTP服务器软件。以下内容详细介绍了如何在openEuler系统中安装、配置和管理`vsftpd`守护进程。 #### 安装vsftpd 首先需要确保系统中已安装`vsftpd`软件包。可以通过以下命令完成安装: ```bash sudo yum install vsftpd ``` 此命令会从默认的yum源下载并安装`vsftpd`软件[^1]。 #### 配置文件详解 `vsftpd`的主要配置文件位于`/etc/vsftpd/vsftpd.conf`。通过编辑该文件可以实现对FTP服务的各种功能设置。例如: - **匿名访问**:如果允许匿名用户访问FTP服务器,可以在配置文件中添加或修改以下参数: ```bash anonymous_enable=YES ``` 如果仅限于本地用户访问,则应将上述参数设置为`NO`。 - **本地用户权限**:为了使本地用户能够上传文件,需启用写权限: ```bash write_enable=YES ``` - **chroot限制**:为了增强系统的安全性,可以限制用户只能访问其主目录。这可以通过以下参数实现: ```bash chroot_local_user=YES ``` 此外,还需要指定一个包含用户名列表的文件,其中的用户将被限制在其主目录内: ```bash chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list ``` - **被动模式端口范围**:FTP协议通常需要主动和被动两种模式的支持。为避免防火墙干扰,可指定被动模式使用的端口范围: ```bash pasv_min_port=10000 pasv_max_port=10100 ``` #### 启动与管理vsftpd服务 安装并配置完成后,可以使用以下命令启动`vsftpd`服务: ```bash sudo systemctl start vsftpd ``` 为确保服务在系统重启后自动启动,还需运行以下命令: ```bash sudo systemctl enable vsftpd ``` 若需要检查服务状态,可以执行以下命令: ```bash sudo systemctl status vsftpd ``` 当需要停止或重启服务时,分别使用以下命令: ```bash sudo systemctl stop vsftpd sudo systemctl restart vsftpd ``` #### 防火墙配置 为了确保FTP服务能够正常工作,可能需要调整防火墙规则以允许相关端口的流量。例如,开放默认的FTP端口21以及被动模式端口范围: ```bash sudo firewall-cmd --add-port=21/tcp --permanent sudo firewall-cmd --add-port=10000-10100/tcp --permanent sudo firewall-cmd --reload ``` #### 测试与验证 完成以上步骤后,可以通过FTP客户端连接到服务器以验证配置是否正确。例如,使用`ftp`命令行工具或图形化客户端进行测试。 ### 注意事项 - 确保所有配置更改后重新启动`vsftpd`服务以使更改生效。 - 在生产环境中,建议使用SSL/TLS加密以提高传输安全性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值