当前位置: 首页 > news >正文

做网站的赢点公司整站优化工具

做网站的赢点公司,整站优化工具,wordpress做学校网站,宝塔wordpress ip访问近日,我将一个基于eBPF实现的SandFS中的eBPF部分摘除了,形成了一个单纯的SandFS框架: https://github.com/marywangran/sandfs_with_no_ebpf 纳尼?eBPF大红大紫之时,我竟然反其道而行之,这不犯了形而上学的…

近日,我将一个基于eBPF实现的SandFS中的eBPF部分摘除了,形成了一个单纯的SandFS框架:
https://github.com/marywangran/sandfs_with_no_ebpf

纳尼?eBPF大红大紫之时,我竟然反其道而行之,这不犯了形而上学的错误了吗?

没错,事实上我摘除它的原因是因为这个原生的eBPF-based-SandFS在我的两个开发环境中均没有编译通过:

  • CentOS 7-3.10内核:llvm 8.0.1未安装成功,因为glibc版本太低。
  • Ubuntu 19.10-5.3内核,SandFS-Kernel编译失败,没时间折腾。

然而我又非常喜欢SandFS这个框架:

  • 没有修改VFS本身的代码,而是通过实现一个wrap fs来嫁接eBPF字节码。
    我想让它运行起来,我在去深圳的火车上就想让它运行起来。

同时,我又特别特别喜欢Netfilter,于是我就想让为SandFS嫁接一个类似的Filter,来完成我无能为力的eBPF Program的功能,就这样。


完成代码后,暂时没有时间写类似iptables的用户态程序用来灌入策略,那就写了几个内核态的测试case,完成下面的小功能:

  1. 用户zhaoya的uid为1000,以zhaoya登录一次不能读取超过10字节的文件内容,一次只能读取最多10字节。
  2. 不能往任何文件里写skinshoe这个单词。
  3. 不能读取根目录下名称为key的文件。

效果如下:
在这里插入图片描述
其中testread的代码如下:

// gcc testread.c -o testread
#include<stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>int main(int argc, char **argv)
{int fd;int len, ret;char buf[1024] = {0};len = atoi(argv[2]);fd = open(argv[1], O_RDONLY);ret = read(fd, buf, len);perror("read");printf("%s\n", buf);return 0;
}

我的三个测试case代码如下:

#define TEST
#ifdef TESTstatic int test_read_func(unsigned int hook, struct sandfs_args *args, void *priv, int *handled)
{int ret = FS_ACCEPT;struct sandfs_args *largs = args;kuid_t id;size_t count;struct cred *cred;cred = (struct cred *)largs->args[SANDFS_IDX_CRED].value;id = cred->uid;count = *((size_t *)largs->args[SANDFS_IDX_COUNT].value);if (id.val == 1000 && count > 10) {printk("#### test read deny request\n");ret = FS_DROP;}*handled = 1;return ret;
}static int test_write_func(unsigned int hook, struct sandfs_args *args, void *priv, int *handled)
{int ret = FS_ACCEPT;struct sandfs_args *largs = args;size_t count;char *buf;count = largs->args[SANDFS_IDX_BUF].size;buf = (char *)largs->args[SANDFS_IDX_BUF].value;if (strnstr(buf, "skinshoe", count)) {printk("#### test write deny request\n");ret = FS_DROP;}*handled = 1;return ret;
}static int test_lookup_func(unsigned int hook, struct sandfs_args *args, void *priv, int *handled)
{int ret = FS_ACCEPT;struct sandfs_args *largs = args;size_t len;char *path;len = largs->args[SANDFS_IDX_PATH].size;path = (char *)largs->args[SANDFS_IDX_PATH].value;if (!strncmp(path, "/key", len)) {printk("#### test lookup deny request\n");ret = FS_DROP;}*handled = 1;return ret;
}static struct vfs_rule test_read_rule = {.name = "test read",.func = test_read_func,.hooknum = SANDFS_READ,
};static struct vfs_rule test_write_rule = {.name = "test write",.func = test_write_func,.hooknum = SANDFS_WRITE,
};static struct vfs_rule test_lookup_rule = {.name = "test lookup",.func = test_lookup_func,.hooknum = SANDFS_LOOKUP,
};
#endif

完成的代码在sandfs_with_no_ebpf的devel分支,等待实现了用户态配置程序之后再进行一次merge:
https://github.com/marywangran/sandfs_with_no_ebpf

当然,很多人会觉得这个东西没有意义,没有技术含量,太简单,这些都无所谓,它的意义是特定于我自己的:

  • 可以精细化特定mount namespace中的文件系统访问控制。
  • 过年回家前治愈无聊缓解乏力。
  • 有时间还能写写用户态配置程序,学学怎么编程。

对于不会编程的我来讲,这就是小惊喜,小收获了。

PS:我依然喜欢用####来做打印前缀,因为它一目了然,容易在日志文件中快速匹配。可能是我不懂更正规的做法吧,希望有人能教我。


浙江温州皮鞋湿,下雨进水不会胖!

http://www.lbrq.cn/news/2714329.html

相关文章:

  • 哈尔滨网站备案网站seo诊断优化方案
  • wordpress 标签模板下载短视频seo优化排名
  • 做网站被忽悠算诈骗吗广东疫情最新情况
  • 化妆品购物网站开发的意义热搜关键词查询
  • 企业做网站设计沈阳关键词快照优化
  • wordpress 主题公园河南整站关键词排名优化软件
  • 一网科技有限公司seo独立站
  • 门户网站 开发语言线上购买链接
  • 广东省广州市白云区白云湖街道山西seo和网络推广
  • 3d效果图多少钱一张青岛关键词推广seo
  • 烟台定制网站建设公司比较好的网络优化公司
  • 如何制作公司appseo工作流程图
  • 盐城注册公司流程和费用重庆seo优化公司
  • 网络网站租福州seo兼职
  • 学编程的步骤windows优化大师提供的
  • 怀化医保网站电子商务网站推广
  • 做外汇都要看什么网站快照网站
  • 靖江有帮助做苏宁易购网站的公司吗今天最新的新闻头条
  • 12306网站如何做解绑推广app是什么工作
  • 餐馆餐饮装修设计网站搜索优化技巧
  • 招生代理平台网站seo优化案例
  • 郑州企业网站seo如何推广普通话
  • 网站邮件发送功能怎么做免费做网站网站
  • 车陂手机网站建设报价海外seo推广公司
  • 怎么加入网站做微商城网络推广哪个平台好
  • 网站开发实习报告广州seo网站推广
  • 做网站和彩票的同步开奖怎么做广告推广代运营公司
  • 青岛个人接网站建设百度网盘在线登录入口
  • axure开始怎么做网站首页培训班报名
  • 江苏cms建站系统搜索引擎优化的根本目的
  • C#WPF实战出真汁01--项目介绍
  • C#WPF实战出真汁03--登录界面设计
  • Linux编程--进程
  • 阿里云TranslateGeneral - 机器翻译SDK-自己封账单文件版本—仙盟创梦IDE
  • GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序