Windows11下WSL安装openEuler2403SP1版本
前言近些年微软推出了WSL子系统,可以在Windows下方便的使用Linux,充分利用主机的资源,无需再单独通过vmvare启动虚拟机。
Windows Subsystem for Linux(WSL)是微软在 Windows 10 和 Windows 11 上推出的功能,允许用户直接在 Windows 系统中运行 原生 Linux 二进制可执行文件,而无需传统的虚拟机(如 VMware、VirtualBox)或双系统引导。WSL 提供了与 Linux 内核高度兼容的子系统,使开发者、系统管理员和普通用户能够更方便地在 Windows 上使用 Linux 工具和环境。
openEuler作为新一代的国产操作系统,提供了原生的WSL版本,可以在Windows下非常容易的安装起来。
安装1.下载openEuler最新版本的WSL,当前是openEuler 2403 SP1:
https://dl-cdn.openeuler.openatom.cn/openEuler-24.03-LTS-SP1/WSL/openEuler-WSL-24.03.zip
2.解压后安装证书:DistroL ...
Snyk漏洞数据库功能介绍
https://security.snyk.io/网站介绍
https://security.snyk.io/ 是 Snyk 漏洞数据库的公开访问入口。它是 Snyk 公司提供的一项核心服务,旨在为开发者、安全团队和整个社区提供全面、准确且可操作的开源软件漏洞信息。
以下是该网站的主要介绍和功能:
核心功能:漏洞搜索引擎
主要目的: 允许用户搜索和浏览已知的开源软件漏洞。
搜索方式:
按漏洞标识符搜索: 例如 CVE-2021-44228 (Log4Shell), CVE-2018-11776 (Struts2 RCE)。
按软件包名称搜索: 例如 log4j-core, lodash, react, requests。
按生态系统/包管理器搜索: 支持广泛的生态系统,包括 npm, PyPI, Maven, NuGet, Go, RubyGems, Linux (Debian, RHEL, Ubuntu 等), Docker 容器镜像等。
按关键词搜索: 搜索漏洞描述中的关键词。
筛选功能: 可以按漏洞严重性等级、生态系统、利用状态、漏洞类型等条件进行筛选。
提 ...
Windows WSL功能及使用指南
介绍一下Windows wsl
Windows Subsystem for Linux(WSL)是微软在 Windows 10 和 Windows 11 上推出的功能,允许用户直接在 Windows 系统中运行 原生 Linux 二进制可执行文件,而无需传统的虚拟机(如 VMware、VirtualBox)或双系统引导。WSL 提供了与 Linux 内核高度兼容的子系统,使开发者、系统管理员和普通用户能够更方便地在 Windows 上使用 Linux 工具和环境。
WSL 的主要版本1. WSL 1
架构:将 Linux 系统调用转换为 Windows 内核调用,无需真正的 Linux 内核。
特点:
轻量级,启动快。
文件系统性能较差(尤其是大量小文件操作)。
不支持完整的 Linux 内核功能(如 Docker 需要额外配置)。
2. WSL 2
架构:基于 轻量级虚拟机(Hyper-V),运行真正的 Linux 内核。
特点:
接近原生 Linux 性能(文件系统、进程管理等大幅优化)。
支持 Docker 等依赖 Linux 内核的功能。
需要启用 Hyper-V(部分 ...
中断上下文中调用pfn_to_page和phys_to_pfn
pfn_to_page、phys_to_pfn能否在中断上下文中调用
在Linux内核中,pfn_to_page 和 phys_to_pfn 函数通常可以在中断上下文中安全调用。以下是详细分析:
1. phys_to_pfn
功能:将物理地址(phys_addr_t)转换为页帧号(Page Frame Number, PFN)。
实现:12// include/linux/pfn.h#define phys_to_pfn(phys) ((unsigned long)((phys) >> PAGE_SHIFT))
安全性:
这是一个简单的位操作(右移 PAGE_SHIFT 位),不涉及任何锁、内存分配或复杂计算。
完全可在中断上下文中使用。
2. pfn_to_page
功能:将PFN转换为对应的 struct page 指针。
实现:依赖内核的内存模型(CONFIG_SPARSEMEM、CONFIG_FLATMEM 等),但主流实现是安全的:
FLATMEM(简单系统):12// arch/arm/include/asm/memory.h#define pfn_t ...
Linux seccomp机制原理详解
Linux seccomp机制原理
Linux seccomp(secure computing)是一种内核安全机制,用于严格限制进程可用的系统调用(syscalls)。它的核心目标是通过减少内核攻击面来增强安全性。当一个进程(或其子进程)进入 seccomp 模式后,它只能调用被明确允许的极少数系统调用。任何尝试调用未授权的系统调用都会立即被内核终止(默认行为)。
核心原理:
系统调用过滤:
Linux 应用程序的所有特权操作(文件访问、网络通信、进程管理等)都通过系统调用请求内核服务。
攻击者常常利用程序漏洞(如缓冲区溢出)执行任意代码,并尝试调用危险的系统调用(如 execve, socket, ptrace, keyctl)来提升权限、突破沙箱或进行其他恶意操作。
seccomp 允许为进程定义一个过滤器规则集,明确指定哪些系统调用是允许的,哪些是禁止的。只有白名单上的调用才能被执行。
基于 BPF 的过滤引擎:
seccomp 的现代实现(称为 seccomp-bpf)利用 Berkeley Packet Filter (BPF) 作为其过滤引擎。
开发者编写一个 ...
Linux查找全局可写文件命令
利用linux find命令,帮忙写一个组合命令搜索Linux系统中全局可写文件,排除掉/proc和/sys目录
要搜索Linux系统中全局可写的文件(包括目录),同时排除 /proc 和 /sys 目录,可以使用以下组合命令:
1sudo find / -path /proc -prune -o -path /sys -prune -o ! -type l -perm -0002 -print 2>/dev/null
命令详解:
sudo以管理员权限运行,确保能访问所有系统文件。
find /从根目录开始搜索。
排除目录逻辑
-path /proc -prune -o:若路径是 /proc,则跳过整个目录(-prune),否则(-o)继续后续条件。
-path /sys -prune -o:同上,跳过 /sys 目录。
筛选目标文件
! -type l:排除符号链接(因为符号链接的权限无关紧要)。
-perm -0002:匹配其他用户(others)有写权限的文件(权限位 0002 表示 other 可写)。
输出与错误处理
...
Linux查看文件类型命令
查看文件类型的命令
在 Linux 和 Unix 系统中,查看文件类型的主要命令是 **file**。以下是详细用法:
1. 基本用法1file 文件名
示例:
1234file image.jpg# 输出:image.jpg: JPEG image data, ...file script.sh# 输出:script.sh: Bourne-Again shell script, ...
2. 查看多个文件1file file1.txt file2.png
3. 查看目录下所有文件1file *
4. 特殊选项
**-i**:显示 MIME 类型 12file -i document.pdf# 输出:document.pdf: application/pdf; charset=binary
**-b**:简洁输出(不显示文件名) 12file -b archive.zip# 输出:Zip archive data, ...
**-L**:跟随符号链接(查看链接指向的实际文件) 1file -L symlink
其他相关命令
**ls -l**:通过首字符识别基本类型 1 ...
Python实现JSON转Excel教程
利用python实现json转execl
要将JSON数据转换为Excel文件,可以使用Python的pandas库,它提供了高效的数据处理能力。以下是详细的实现步骤:
步骤1:安装依赖库1pip install pandas openpyxl
pandas:用于数据处理和Excel文件操作
openpyxl:作为Excel写入引擎(pandas依赖)
步骤2:实现代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import jsonimport pandas as pdfrom pathlib import Pathdef json_to_excel(input_path, output_path, sheet_name="Sheet1", encoding="utf-8"): """ 将JSON文件转换为Excel文件 参数: i ...
利用linux find命令找到非二进制的文件,排除掉 /pro
利用linux find命令找到非二进制的文件,排除掉 /proc /sys目录
服务器繁忙,请稍后再试。
利用linux find命令找到非二进制的文件,排除掉 /proc /sys目录
在Linux中,使用find命令结合file工具可以查找非二进制文件(通常是文本文件),并通过-prune选项排除/proc和/sys目录。以下是完整命令:
12345find / \( -path /proc -o -path /sys \) -prune -o -type f -exec sh -c ' for f; do file -i "$f" | grep -q "text/" && printf "%s\n" "$f" done' sh {} +
命令详解:
排除目录:
\( -path /proc -o -path /sys \):匹配/proc或/sys路径。
-prune:排除这 ...
Linux memremap接口使用指南
Linux memremap接口用法及示例
memremap 是 Linux 内核提供的一个函数,用于灵活地将物理地址范围映射到内核虚拟地址空间。它是对传统 ioremap 函数的增强,提供了对内存类型(如设备内存、写合并内存)的更好控制。它主要在驱动程序中用于访问设备内存(如寄存器、帧缓冲区)或特殊类型的系统内存。
核心功能:
物理到虚拟地址映射: 将给定的物理地址区域 (phys_addr, size) 映射到内核的虚拟地址空间。
内存类型控制: 通过 flags 参数指定映射的内存类型,这对访问设备内存、写合并内存或普通内存至关重要,影响 CPU 缓存行为。
替代部分 ioremap: 对于设备内存映射,memremap 通常比 ioremap 更灵活和推荐。
头文件:
1#include <linux/io.h>
函数原型:
1void *memremap(phys_addr_t phys_addr, size_t size, unsigned long flags);
参数:
phys_addr:要映射的物理起始地址。
size:要映射的区域大小(字节数 ...
Linux内核mmgrab、mmdrop、mmput函数用法详解
mmgrab、mmdrop mmput函数用法
在 Linux 内核开发中,mmgrab()、mmdrop() 和 mmput() 是用于管理 struct mm_struct(进程地址空间描述符)引用计数的核心函数。以下是它们的详细用法和区别:
1. mmgrab()
功能:增加 mm_struct 的用户引用计数(mm->mm_users)。
使用场景:
需要短期访问进程内存空间时(如内核线程处理用户请求)。
确保目标 mm_struct 在操作期间不被释放。
示例:123456struct mm_struct *mm = get_task_mm(task); // 获取目标任务的 mm_struct(已增加引用)if (mm) { mmgrab(mm); // 显式增加引用计数(可选,因 get_task_mm 已增加) // 安全操作 mm(如访问页表) mmput(mm); // 操作完成后减少引用}
注意:
mmgrab() 仅增加计数,不检查计数是否为零。
2. mmput( ...
Linux kmap用法及示例详解
Linux kmap用法及示例
kmap 是 Linux 内核中用于将高端内存(High Memory)页面临时映射到内核虚拟地址空间的 API。它在 32 位系统(地址空间有限)中尤为重要,64 位系统中通常直接使用线性映射。
核心概念
高端内存(High Memory)在 32 位 Linux 中,内核虚拟地址空间有限(通常 1GB)。当物理内存 > 896MB 时,超出部分称为高端内存,无法永久映射到内核空间,需动态映射。
kmap 作用为高端内存页面分配一个临时内核虚拟地址,使内核能访问其内容。
映射限制映射槽位有限,需及时用 kunmap 释放。
函数原型1234567#include <linux/highmem.h>// 映射页面到内核地址空间void *kmap(struct page *page);// 解除映射void kunmap(struct page *page);
使用步骤
获取目标页的 struct page*(如通过 alloc_page() 或页面缓存)。
调用 kmap(page) 获取内核虚拟地址。
通过返回的虚拟地址访 ...
Linux seccomp机制及示例代码
Linux seccomp介绍及demo示例
Linux seccomp 介绍seccomp(Secure Computing Mode) 是 Linux 内核的安全机制,用于限制进程可执行的系统调用(syscalls)。通过过滤系统调用,seccomp 能有效减少内核暴露的攻击面,提升应用安全性。它有两种工作模式:
严格模式(strict mode)只允许 read(), write(), _exit(), sigreturn() 四个系统调用,其他调用会触发 SIGKILL。
过滤模式(filter mode / seccomp-bpf)使用 BPF(Berkeley Packet Filter)规则 自定义允许/禁止的系统调用,支持精细控制(如参数检查、返回错误码而非终止进程)。
示例:使用 libseccomp 的过滤模式 Demo场景说明创建一个程序,仅允许:
退出进程(exit_group)
内存分配(brk,由 malloc 触发)
向终端输出(write)
从终端读取(read)
禁止其他所有系统调用(如文件操作)。
代码实现12345 ...
seccomp异常排查与修复指南
seccomp异常时的维测
遇到 seccomp(Secure Computing Mode)异常 时,通常表现为进程因违反 seccomp 规则而被内核终止(常见信号 SIGSYS 或 SIGKILL),日志中会有相关记录。以下是系统的维测步骤和关键点:
1. 确认异常现象
日志定位:
检查系统日志(/var/log/syslog、/var/log/messages 或 journalctl):12journalctl -k --grep="seccomp"grep -i "seccomp" /var/log/syslog
典型日志示例:1audit: type=1326 ... syscall=xxx ... seccomp=action=KILL ...
进程信号:
若进程崩溃,用 dmesg 或 journalctl 检查是否因 SIGSYS(非法系统调用)终止。
2. 获取触发的系统调用信息
从日志提取关键字段:
syscall=:触发的系统调用号(如 231 代表 exit_group)。
arch=:CPU 架构 ...
果壳铃铛使用注意事项总结
果壳铃铛有没有啥注意事项
“果壳铃铛”这个名字听起来像是一个特定品牌或产品的名称,而不是一个通用类别(比如“婴儿铃铛”或“宠物铃铛”)。因此,最准确的注意事项肯定来自产品本身的说明书或官方渠道。
不过,基于“铃铛”这个物品的常见特性,我可以给你一些通用性的注意事项和建议,无论它是给婴儿、宠物、装饰、还是其他用途:
安全第一:
小零件风险: 如果铃铛体积较小,或者上面有容易脱落的小部件(如小珠子、挂绳末端装饰等),绝对不能让婴幼儿单独玩耍,存在误吞窒息风险。同样,对喜欢啃咬物品的宠物也存在风险。
材质安全: 确认材质是否安全无毒,特别是给婴儿或宠物使用的。塑料是否有异味?金属是否容易生锈?涂料是否容易脱落被误食?
结构稳固: 检查铃铛本身是否坚固,连接部分(如挂绳、挂钩)是否牢靠,避免在使用中突然断裂或脱落造成意外(比如砸到人或宠物,或者小零件掉落)。
尖锐边缘: 检查是否有毛刺、锐利的边缘或尖角,可能划伤皮肤。
使用对象:
婴儿玩具: 如果是婴儿玩具铃铛:
务必在成人监护下使用。
选择符合婴儿玩具安全标准(如中国的GB 6675,欧盟的EN 71,美国的ASTM F963)的 ...