1.利用内部进程间通信模块来完成nobody进程与ftp服务进程之间的通信
-
目的:nobody进程协助ftp服务进程与可客户端建立数据连接通道,而不是ftp服务进程与客户端直接建立数据通道,因为ftp服务进程没有这样的权限来完成这样的任务,而需要nobody进程协助完成
-
capabilities
man 7 capabilities
增加权限的方法:capset函数,man 2 capset
让nobody进程具有bind特权端口的权限 -
eg:
ftpproto.c
int get_port_fd(session_t *sess)
int get_transfer_fd(session_t *sess)
privparent.c
static void privop_pasv_get_data_sock(session_t *sess)
void minimize_privilege(void)
common.h
#include <linux/capability.h>
#include <sys/syscall.h>//系统调用的头文件,man syscall
- 测试:
客户端打开port模式
服务端