精华内容
下载资源
问答
  • 关于Linux内核月报LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。限于篇幅,只会对...

    关于Linux内核月报

    Linux阅码场

    Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。

    限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅码场社区添砖加瓦。

    本期月报主要贡献人员:

    张健、廖威雄、chenwei、夏天

    往期链接:

    Linux阅码场 - Linux内核月报(2020年06月)

    Linux阅码场 - Linux内核月报(2020年07月)

    Linux阅码场 - Linux内核月报(2020年08月)

    Linux阅码场 - Linux内核月报(2020年09月)

    阅码场征稿Linux阅码场征集Linux工程师一线研发心得;工程师、高校学生老师、科研院所研研究人员对Linux某一技术要点深入分析的稿件。您的文章将获得近十万一线Linux工程师的广泛受众。投稿要求:原创且从未在任何媒体、博客、公众号发表过的文章。高屋建瓴、深刻全面地论述一个技术点或者面。投稿请微信联系小月:linuxer2016录取的稿件,我们也会奉上微薄的稿酬聊表寸心,稿费标准为300-500元/篇。
    
    

    一、 体系结构相关

    1.1 ARM/arm64 set_fs

    补丁集1:ARM: remove set_fs callers and implementation

    补丁集2:arm64: remove set_fs() and friends

    当你在内核代码中看到fs,你会想到什么?文件系统?然鹅,图样图森破,今天要说的fs其实是x86的fs寄存器[1]。0.1版本的内核引入了set_fs,用于设置用户空间(`set_fs(USER_DS)`)和内核空间(`set_fs(KERNEL_DS)`)的地址范围。原本set_fs仅仅是设置x86的fs寄存器,后续其它架构也沿用了set_fs的名称。如果仅仅是名称困惑也还好,问题是set_fs看起来是在做保护,这同样

    是一个攻击点。如果从内核返回用户空间时没有设置相应的限制`set_fs(USER_DS)`,用户空间获得了不受限制内存空间的能力。2010年(CVE-2010-4258)和2016年分别有过类似的报道。

    基于set_fs加固[2]似乎是个办法,但是由于会影响内核系统调用性能被否决。于是,只有一个选择——移除set_fs。emm,三年前,这是三年前社区讨论的结果。今年Christoph Hellwig继续了自己当初的提议,目前内核core code部分工作已经完成,剩余还需要各个体系结构完成修改这个月ARM和ARM64两个架构补丁正在提交review。

    ARM64方面,除了clean up代码,需要处理涉及内核和用户空间切换的代码,主要涉及SDEI,PAN和UAO三部分。ARM方面,除了删除set_fs代码,还需要处理oabi的几个系统调用。

    参考资料
    [1]https://lwn.net/Articles/722267/
    [2]https://lwn.net/Articles/721305/

    1.2 KASan for ARM

    Kernel Address SANitizer (KASAN)是一个动态的内存错误detector,主要检查越界和use-after-free。目前X86,ARM64,RISC-V,PowerPC等架构均已支持。

    Linus Walleij本月发送了KASan for Arm的第十四版补丁——这是ARM架构对KASan的支持——和上个月的补丁相比,Linus修复了自己在高通APQ8060平台的crash,他希望也能修复Florian和Ard报告的issue。

    ARM64的KASan正在增加基于硬件tag内存错误检测。这个系列补丁把Memory Tagging Extension (MTE)的能力应用于KASan,在每次内存分配时生成随机的tag,并在每次内存访问时,由MTE自动检查。如果不匹配则产生tag fault,并有KASan报出该错误。

    (补丁名称:kasan: add hardware tag-based mode for arm64)

    1.3 Carry forward IMA measurement log on kexec on ARM64

    内核各个体系结构实现既有共性又有特性,往往后来者会考虑把先前某个架构的实现修改的更为通用化。之前我们在内核月报中介绍的RISC-VNUMA工作就是基于ARM64的工作。今天这个补丁集也是类似的情况。

    IMA(Integrity Measurement Architecture)是内核完整性的两大组成部分之一。IMA可以在文件执行或打开时检查其完整性。对于kexec(kexec支持从当前内核启动新的内核):IMA可以检查其内核,initramfs和命令行。Lakshmi的四个补丁是补齐当前ARM64不支持的这个能力。

    1.4 除了上面的补丁,10月还有不少值得关注的补丁。例如

    • Introduce the TDP MMU

    目的是提高TB级内存虚拟机的热迁移性能。TDP的含义是:two dimensional paging。目前TDP MMU已经用于google 拥有416个vCPU的12TiB m2-ultramem-416 VM中提供必要的热迁移性能。

    这项工作的动机是需要并行处理非常大的虚拟机里的page fault。当VM具有数百个vCPU和TB的内存时,KVM的MMU锁遭受极端竞争,从而导致guest OS里面page fault处理的soft-lockup或巨大延迟。

    • Add support for Asymmetric AArch32 systems

    目的是在系统只有部分arm64 CPU支持aarch32 EL0运行环境时,在用户空间可以使用aarch32应用。备注:arm64 CPU可以有两种运行环境(EE:Execution Environment),分别是aarch64和aarch32。

    • PKS: Add Protection Keys Supervisor (PKS) support

      这是和PKU(用户空间Memory Protection Keys)类似的内核工作,预计的使用场景有trusted keys和PMEM。

    二. Core-kernel相关

    2.1 可睡眠tracepoints

    现在的Tracers因为没法处理page faults,导致了无法访问用户态的数据,然而这有时是个需求。

    这个系列的patch在tracepoint框架实现了一套能让tracers处理page faults的框架,未来各种tracer会做相应修改.

    2.2 Core scheduling v8

    Core scheduling是一个允许信任的进程在共享资源的cpus上同时运行的特性,主要目的是想不禁止SMT功能的同时,消除core-level层面的侧信道攻击。

    默认情况下,这个特性不会改变现在的任何调度行为。需要用户决定哪些tasks可以在同一个core同时运行,比如可以设定当一个进程A在运行时,同一个core的hyperthreads要么是idle,要么只能运行进程A信任的进程。

    2.3 KFENCE v5: 一个低采样的内存错误检测工具

    KFENCE的主要特点是想用尽量低的性能牺牲来采样线上的各种内存错误,跟KASAN比起来,KFENCE的精度虽然没那么高,但是KFENCE对性能影响小,可以在产品环境大量部署,从而也能检测出内存bug。

    这个系列Patch给arm和x86架构都增加了KFENCE支持。

    三、文件系统和Block Layer

    3.1 块请求过滤与块设备快照模块

    * 补丁:https://lwn.net/Articles/834867/

    * veeamsnap:

    https://github.com/veeam/veeamsnap/

    补丁作者来自 veeam ,一个提供 Linux 的备份方案的企业。长期以来以一个内核树外模块(veeamsnap)的形式提供块设备备份服务,这次的提交算是尝试将其主功能模块合入主分支。

    补丁实现了两个功能,分别是blk-filter和blk-snap:

    • blk-filter实现了对块设备 BIO 请求的截流,而且是在 BIO请求非常早的时候就拦截了,完全不影响请求处理队列。除了对整个存储介质截流之外,其还支持截断特定的块设备,既以分区为单位。还有一个特点,其支持动态启用、禁用过滤功能。在块设备加载时,可以自动开始对 BIO 请求过滤;当块设备被移除时,过滤器也会自动移除。

    • blk-snap实现了快照和块更改跟踪功能。毫无疑问,其依赖于 blk-filter。它旨在创建任何块设备的备份副本,而不使用设备映射器。快照是临时的,在备份过程完成后将被销毁。更改的块跟踪允许增量和差异备份副本。

    3.2 btrfs新增支持4K子页读写

    * 补丁:https://lwn.net/Articles/834872/

    补丁主要是让 64K 页大小的系统可以挂载 4K 扇区大小的btrfs,以及在这状态下支持正常的读写。

    64 K 页大小在一些小数据下会造成内部空间浪费,如果可以有更小的操作粒度,可以大大缓解空间浪费的情况。因此才需要支持 4K 子页的操作。作者测试后足够稳定,认为可以执行子页面大小的纯元数据操作,例如 reflink。作者在压缩和非压缩的情况下验证了读数据子页,验证了元数据的子页读和写,也验证了非压缩情况下的全页写。

    这补丁其实还有不少的事儿要做,以及还有不少挑战。例如没实现写入子页的数据(非元数据),例如子页数据的回写支持 iomap。

    四、 虚拟化

    4.1 KVM protected memory extension

    == 背景和相关问题 ==

    现在有许多的硬件特性(例如MKTME、SEV)可以防止虚拟机的内存受到主机上未授权的访问。这个补丁集提出了一个纯软件的特性,可以缓解一些相同的主机端只读攻击。

    == 这个补丁集缓解了什么? ==

    - 主机内核“意外”访问虚拟机数据(考虑下speculation)

    - 主机内核导致对虚拟机数据的访问(write(fd &guest_data_ptr, len))

    - 主机用户空间访问虚拟机数据(比如通过篡改的QEMU)

    - 通过篡改的QEMU设备模拟器来提升虚拟机的特权

    == 这个补丁集没有缓解什么? ==

    - 主机的内核被完全篡改。内核将再次映射页面

    - 基于硬件的攻击

    第二版的RFC补丁集解决了大部分的反馈意见。

    但仍然没有找到一个好的方案来解决重新启动和KEXEC。在这些的操作中,需要取消对所有内存的保护,这样做和我们这个特性的目标是相矛盾的。

    在不保护重启(或KEXEC)所需要的内容之前,清理大部分内存耗时很长且容易出错的。也许我们应该声明这些操作不被支持?

    == 序列概览 ==

    通过硬件特性对虚拟机的数据进行加密,然后确保只有正确的虚拟机才能解密,从而保护虚拟机数据。这样做的副作用是使内核直接映射和用户空间映射(QEMU等使用)变得无用。

    但是,这告诉了我们一些非常有用的信息:对于普通的虚拟机操作,内核映射和用户空间映射有时候都不是真正必要的。

    在我们这个补丁集中,我们不使用加密,而是简单地解除内存映射。与允许访问密文相比,它的一个优点是错误的访问会引起异常,从而被捕获,而不是像加密数据一样,简单地返回垃圾数据。

    4.2 KVM: Dirty ring interface

    该补丁在10月份更新了两次,都是将v15 rebase到最新的KVM分支。这个工作是在Lei Cao <lei.cao@stratus.com> Paolo Bonzini 之前所做的KVM dirty ring接口工作的继续。

    这个新的dirty ring接口是虚拟机回收脏页的另外一种方法。在很多方面,它都不同于已有的dirty logging接口,主要有:

    • 数据格式: 脏数据现在是环形格式而不再是bitmap格式,所以用来同步脏数据日志的bit不再依赖于虚拟机内存的大小,而是数据脏的速度。另外,新的dirty ring是每个vCPU独享,而dirty bitmap则是所有vCPU共享一份,dirty bitmap是per-VM的。

    • 数据拷贝:脏页的同步不再需要拷贝数据,相反,dirty ring通过页面共享 (通过在vcpu_fd上的mmap)在用户空间和内核空间共享

    • 接口: 当我们想再次将收集到的脏页重置为保护模式时,新的dirty ring使用了新的KVM_RESET_DIRTY_RINGS ioctl接口,而不是使用原有的KVM_GET_DIRTY_LOG、KVM_CLEAR_DIRTY_LOG接口。而为了收集dirty bit,我们只需要读取dirty ring中的数据,不再需要调用ioctl接口。

    (END)

    更多精彩,尽在"Linux阅码场",扫描下方二维码关注
    
    
    展开全文
  • 关于Linux内核月报LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。限于篇幅,只会对...

    关于Linux内核月报

    Linux阅码场

    Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。

    限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅码场社区添砖加瓦。

    本期月报主要贡献人员:

    张健、廖威雄、chenwei、柱子、王立辰、M.J、转角遇到猫、冥王、李帅

    第一期链接:

    Linux阅码场 - Linux内核月报(2020年06月)

    Linux阅码场 - Linux内核月报(2020年07月)

    目录:

    1. 体系结构相关

     1.1 Add UEFI support for RISC-V

     1.2 Control-flow Enforcement

     1.3 Unify NUMA implementation between ARM64& RISC-V

     1.4 x86/uaccess: Use pointer masking to limit uaccess speculation

    2. Core Kernel

     2.1 Generalizing bpflocalstorage

     2.2 tailcalls in BPF subprograms

    2.3 io_uring: add restrictions to support untrusted applications and guests

     2.4 Core-sched v6+: kernel protection and hotplug fixes

    3. 设备驱动相关

     3.1 Intel Platform Monitoring Technology

     3.2 Net: add support for threaded NAPI polling

    4. 内存管理

    4.1 memcg: Enable fine-grained per process memory control

    4.2 huge vmalloc mappings

    4.3 Support high-order page bulk allocation

    5.文件系统和Block IO
    5.1 ext4: add free-space extent based allocator 
    
    5.2 virtiofs: Add DAX support
    
    5.3 xfs:解决2038年时间戳上限
    5.4 block/bpf:用eBPF实现IO请求的过滤
    5.5 fs:新增支持读写的Linux NTFS
    
    6.网络
    6.1 在MPTCP中引入SYN Cookie功能
    6.2 BPF
    7.虚拟化和容器
    7.1 Enable Linux guests on Hyper-V on ARM64
    7.2 Remove 32-bit Xen PV guest support
    7.3 HSM driver for ACRN hypervisor
    7.4 mm/virtio-mem: support ZONEMOVABLE
    7.5 Support virtio cross-device resources
    7.6 KVM:Add virtualization support of split lock dection
    7.7 KVM: PKS Virtualization support
    

    当前内核版本:

     Linux 5.8 (August 2, 2020)

    - 开发版本Linux 5.9-rc2 (August 23, 2020)

    1. 体系结构相关

    本月x86,ARM64,RISC-V三大架构都有更新,有之前提到过的

    • MTE补丁(由ARM64的maintainer Catalin继续更新)

    • RISC-V的UEFI支持

    • Intel的硬件控制流完整性(CFI: Control Flow Integrity )技术(CET: Control-flow Enforcement)

    • 还有tglx发起的超大(38个)补丁集“x86, PCI, XEN, genirq …: Prepare for device MSI”

    1.1 Add UEFI support for RISC-V

    更新最频繁的是Atish Patra的Add UEFI support for RISC-V [1],一个月内更新了三次。和七月相比,目前的工作已经支持了Linux启动和runtime services。其中runtime services已经通过Linux启动和fwts( FirmwareTestSuite [2])测试。RISC-V的EFI支持同时复用了部分ARM64runtime的代码。

    [1] Add UEFI support for RISC-V https://lwn.net/Articles/829130/

    [2] FirmwareTestSuite https://wiki.ubuntu.com/FirmwareTestSuite

    1.2 Control-flow Enforcement

    CET技术(控制流强制技术)是英特尔推出的一项用于阻止ROP和JOP攻击JOP的安全技术。CET技术的原理是使用影子寄存器,追踪线程堆栈中的调用及返回地址,在程序返回或调用时做校验匹配,若有问题则抛出异常。详细细节可参考"Intel 64 and IA-32 Architectures Software Developer'sManual"。目前Yu-cheng新增了shadow stack 部分和 indirect branch tracking, ptrace,并测试运行稳定。

    1.3 Unify NUMA implementation between ARM64& RISC-V

    这个系列patch通过复用ARM64的NUMA实现让RISC-V也能支持NUMA系统。

    1.4 x86/uaccess: Use pointer masking to limit uaccess speculation

    2018年的Spectre变种1(bounds-check bypass),借助边界检查时cpu会投机访问(speculate access),实现攻击。之前x86在 copy_from_user中使用LFENCE减缓这种攻击。但是LFENCE有点重了。

    来自Redhat的Josh把LFENCE替换为 array_index_nospec,后者原本的用途是数组访问越界时,把index被钳位为0,从而避免攻击者访问原本不允许访问的超过数组范围的地址。由于64位内核中,用户空间地址为低地址(以一串0开头),内核为高地址(以一串1开头)。如果给 array_index_nospec传入0和用户地址的最大范围( user_addr_max()),当攻击者试图从用户空间传入内核地址(即大于 user_addr_max()的地址时,该地址会被 array_index_nospec设为0。从而避免了攻击者从用户空间“偷到”内核的数据。

    2. Core Kernel

    Core Kernel主要是bpf相关的更新比较多。

    2.1 Generalizing bpflocalstorage

    该补丁意在使一些BPF程序类型使用bpfskstorage来抽象套接字对象。这些抽象是通过对象的生命周期来管理的,目的是使BPF程序更加简单,并且不容易出错和泄漏。本补丁主要实现:

    1. 概括了bpfskstorage基础结构,以使其易于实现其他对象的本地存储

    2. 为inode实现本地存储

    3. 使bpf_ {sk,inode} _storage都可用于LSM程序

    2.2 tailcalls in BPF subprograms

    目前BPF对BPF程序本身的调用和尾部调用是互斥的,但是该补丁成功让他们可以同时工作,即让尾部调用可以和BPF子程序同时工作。该补丁通过在开始和结束阶段丢弃未使用的被调者保存的push/pop寄存器数值,从而提升AF-XDP的运行速度。其最终结果是提升了15%左右的性能。该补丁的缺陷在于它将会对利用尾部调用的BPF程序产生负面影响,但是影响不大。总而言之,从长远来看:利大于弊。

    2.3 io_uring: add restrictions to support untrusted applications and guests

    该补丁添加了一些限制条件,从而使不受信任的应用程序和用户能够访问iouring。其想法是在操作中添加一些限制(sqe操作码和标志位,注册操作码),这样能够允许不受信任的应用和用户安全的使用iouring队列。

    2.4 Core-sched v6+: kernel protection and hotplug fixes

    该补丁增加系统的安全性,是V6核心调度逻辑的延续。它增加了用户模式进程和访客之间系统调用和中断的隔离。而这是当其他用户或者访客使用HT,在HT下安全进入内核模式的关健。该系列补丁还解决了当选择下一个task的时候,cpusmtmask改变导致的CPU热插拔问题。

    • 该问题的根本原因在于:虽然内核调度避免了用户模式下的超线程之间的攻击,但是当某个超线程进入内核时,内核调度逻辑并没有做任何追踪处理。这就导致了MDS和L1TF攻击在超线程并发执行时有机可乘。该系列补丁实现了跟踪进入及退出内核的线程。从而增加了对保护所有syscall和IRQ内核模式条目的支持。

    • 性能测试:sysbench用于测试该补丁的性能。使用4核8线程的虚拟机并同时运行2个sysbench测试程序。每个sysbench运行4个任务:sysbench --test = cpu --cpu-max-prime = 100000 --num-threads = 4运行。比较以下各种组合的性能结果。以下指标是“每秒事件数”:

    条件结果
    Coresched已禁用sysbench-1 / sysbench-2 => 175.7 / 175.6
    启用Coreched,两个sysbench都标记追踪sysbench-1 / sysbench-2 => 168.8 / 165.6
    已启用Coresched,已标记追踪sysbench-1,未标记追踪sysbench-2sysbench-1 / sysbench-2 => 96.4 / 176.9
    关闭sysbench-1 / sysbench-2 => 97.9 / 98.8

    同时标记追踪两个sysbench时,性能下降约4%。对于带标记/未标记的情况,带标记的情况会受到影响,因为当它进入内核时,它总是会停顿。但这并不比smtoff差。

    3. 设备驱动相关

    3.1 Intel Platform Monitoring Technology

    英特尔平台监控技术(Intel Platform Monitoring Technology,简称PMT),是一种枚举和访问 硬件监控功能的架构.随着用户对硬件的遥测技术越来越感兴趣,这就要求工程师不仅要弄清楚硬件是如何 测量和收集数据的,还要清楚数据如何传输并且可视.这些通常都需要特殊工具来实现,这也就要求用户 管理多套不同的工具,以便在其系统上收集不同种类的监视数据.如果在内核驱动里实现这些功能,就要 经常维护,并随着硬件更新而时刻改变.

    PMT提供了一种通过硬件不可知框架从设备发现和读取遥测数据 的解决方案,该框架允许在不需要内核或软件工具补丁的情况下对系统进行更新.

    PMT定义了几个功能来支持从硬件收集监控数据,所有这些都可以作为带有Intel厂商代码的PCIE指定厂 商扩展能力(DVSEC)的单独实例被发现.DVSEC ID唯一.并为每个ID提供BAR偏移,偏移内包括GUID、 特性类型、偏移量和长度,以及适用的配置设置,GUID唯一地标识了监视器数据的寄存器空间,同时通 过xml提供开放出来的寄存器列表.这允许供应商执行固件更新,可以改变映射(例如,添加新的指标), 而不需要对驱动程序或软件工具进行任何更改.

    3.2 Net: add support for threaded NAPI polling

    NAPI轮询(polling)工作方式已被大多数设备(尤其是 802.11设备)所支持,但轮询工作通常被某个cpu 绑定,非常容易引起一些非常繁忙的cpu将大部分时间花在软中断/软中断上,而一些cpu则是空闲的.

    线程化的NAPI基于工作队列来实现,所有的API几乎相同,除了用netif_threaded_napi_add代替了原来的netif_napi_add.

    使用MT7621进行的测试,同时使用线程化的NAPI + 一个用于tx调度的线程可以将LAN->WLAN吞吐量提高10-50%. 没有线程化的NAPI的吞吐量非常不一致,这取决于运行tx调度线程的CPU. 通过测试,线程化的NAPI工作更加稳定.

    4. 内存管理

    4.1 memcg: Enable fine-grained per process memory control

    Memory Controller(cgroup内存控制器)可用于控制和限制任务使用的物理内存。如果使用的物理内存超过限制,Memory Controller会尝试回收内存。通常,Memory Controler可以将占用的物理内存限制在最大值以下。

    有时,物理内存回收的速率赶不上分配的速率。在这种情况下,占用的物理内存会持续增加。当达到最大限制或者系统可用内存不足时,将调用OOM Killer杀死某些进程,以释放更多的内存。但是通常无法控制杀死哪个进程,OOM Killer会随机杀死进程。杀死一些拥有重要资源,且还没有释放资源的进程,可能会在之后引起其它的系统问题。

    在内存不足时,不希望OOM Killer随机杀死进程的用户,可以通过prctl(2)使用本补丁提供的内存控制工具。本工具可以在超过内存限制时,执行一些缓解措施。

    当前支持的缓解措施包括以下内容:

    1. 对于分配或处理内存的某些系统调用返回ENOMEM

    2. 减慢物理内存回收被消耗赶上的过程

    3. 向进程发送特定信号

    4. 杀死进程

    4.2 huge vmalloc mappings

    在定义了 HAVE_ARCH_HUGE_VMAP 和支持 PMD vmaps的平台,让vmalloc会先尝试分配PMD大小的页面,然后在fallback到小的页面,目前只支持带了PAGE_KERNEL参数的分配。

    作者在POWER9用`git diff`做了测试,显示TLB misses下降了30倍(59,800 -> 2,100) CPU cycles也减少了0.54%。

    当然这个会带来更多的内存浪费,因此加了一个启动参数nohugevmalloc禁止这个行为。

    4.3 Support high-order page bulk allocation

    有些特殊场景需要批量的分配特定大小的页,比如需要分配
    4800 * order-4 pages。当有内存压力时是很难分配到order-4这样的连续
    内存页的,一个办法是通过CMA的方式,但是CMA有可能会太慢了:
    
    
     * 4800 of order-4 * cma_alloc is too slow
    
    这个Patch引入了一个新的函数alloc_pages_bulk()来解决这个问题:
    
    
    int alloc_pages_bulk(unsigned long start, unsigned long end,                       unsigned int migratetype, gfp_t gfp_mask,                       unsigned int order, unsigned int nr_elem,                       struct page **pages);
    5. 文件系统和Block IO
    5.1 ext4: add free-space extent based allocator 
    此patch为ext4文件系统引入了新的multiblock 分配器,即增强版本的空闲块管理策略,旨在加快系统运行速度和加强可拓展性,减少由于分配导致的瓶颈。此patch基于Kadekodi S. 和Jain S.的论文 "Taking Linux Filesystems to the Space Age: Space Maps in Ext4"。
    5.2 virtiofs: Add DAX support
    这个补丁系列给virtiofs文件系统添加了DAX(Direct Access)特性支持。该特性允许客户机在使用virtiofs文件系统时绕过客户机的页面缓存,同时允许客户机将主机上的页面缓存直接映射到客户机地址空间。
    当需要访问一个文件的页面时,客户机会发送一个请求来映射该页面(在主机的页面缓存中)到QEMU地址空间中。从客户机内部看来,这就是一个由virtiofs设备控制的物理内存的一个区域。并且客户机可以使用DAX直接映射这个物理内存区域,从而获得对主机上的文件数据的访问。
    在非常多的情况下,这样做可以大大加快访问速度。同时,这样做还可以节省大量内存,因为文件数据不再需要在客户机的页面缓存中保存备份,并且它可以从主机页面缓存中直接被访问。
    该补丁系列的大部分修改都局限于fuse/virtiofs两个模块。但是为了能够访问共享内存区域,对通用DAX基础架构和virtio也进行一些修改。
    5.3 xfs:解决2038年时间戳上限
    在xfs的原先设计中,inode timestamps 是一个 signed 32-bit 的秒计数器,quota timers 是 unsigned 32-bit 的秒计数器,0 都表示 Unix 的纪元 1970年1月1日。
    
    在这样的定义下,inode timestamps 可以表示范围:
    ‍-(2^31-1) (13Dec1901) through (2^31-1) (19Jan2038)
    quata timers 可以表示时间范围:
    0(1Jan1970) through (2^32-1) (7Feb2106).
    在2038年,xfs 的 inode 时间戳就没法记录时间了。为了解决这个问题,补丁重新设计了时间戳的定义,加宽了计数范围。补丁把 inode timestamps 调整为 unsigned 64-bit 类型的纳秒计数器,从1901年开始。quota timers 则是 a34-bitunsignedsecond counter right shifted two bits,且 capped at the maximum inode timestamp value。
    因此,新的 inode 时间戳范围是:
    0(13Dec1901) through (2^64-1/ 1e9) (2Jul2486)
    理论上 quota timers 可以达到
    0 (1 Jan 1970) through (((2^34-1) + (2^31-1)) & ~3) (16 Jun 2582)
    考虑到 quota 最大不超过 inode 时间戳,因此 quota timer最大是:
    max((2^64-1 / 1e9) - (2^31-1), (((2^34-1) + (2^31-1)) & ~3) (2 Jul 2486).
    5.4 block/bpf:用eBPF实现IO请求的过滤原始的BPF(Berkeley Packet Filter)可用于网络包的过滤,全新的 eBPF(externed BPF)提供了更多的功能,一方面,它已经为内核追踪(Kernel Tracing)、应用性能调优/监控、流控(Traffic Control)等领域带来了激动人心的变革;另一方面,在接口的设计以及易用性上,eBPF 也有了较大的改进。
    
    此补丁的作者利用eBPF实现了IO请求的过滤,在作者提供的的实例中 /samples/bpf/protect_gpt*.c 通过使用IO过滤器阻止写前34个扇区的形式保护GUID分区表。
    过滤 IO 的 eBPF 的实例代码如下:
    SEC("io_filter")int run_filter(struct bpf_io_request *io_req){  if (io_req->sector_start < GPT_SECTORS && (io_req->opf & REQ_OP_MASK) != REQ_OP_READ)    return IO_BLOCK;  else    return IO_ALLOW;}
    为了实现这功能,补丁新增了 eBPF program type BPFPROGTYPEIOFILTER 和 attach type BPFBIOSUBMIT。这功能通过 submit_bio() 的 make_generic_requests_check() 检查 eBPF 程序的返回来判断 IO请求是丢弃( IO_BLOCK)还是接纳( IO_ALLOC)。
    5.5 fs:新增支持读写的Linux NTFSWindow有几个广为流传的文件系统,分别是Fat32、NTFS、exFAT,但因为种种原因,在Linux平台上长期以来都没做到完美支持。Linux在很早之前就支持vfat(fat32)的读写了,在前段时间也开源了exFAT的源码,唯独Linux上NTFS只能读不能完美支持写数据。终于,支持读写的 Linux NTFS 要来了。
    
    如补丁作者表述的, Thisisfully functional NTFSRead-Writedriver. 这是一个全功能的NTFS。
    6. 网络
    本月更新两个方面:
    MPTCP中引入SYN Cookie功能,增强网路安全性。
    使BPF可以区分MPTCP的字节流,并在tcp的header option中引入BPF功能。
    6.1 在MPTCP中引入SYN Cookie功能
    MPTCP(MultiPathTCP)是一个还比较年轻的技术,其目的是允许传输控制协议(TCP)连接使用多个路径(比如:主机多地址)来最大化信道资源使用。其核心思想是定义一种在两个主机之间建立连接的方式,而不是在两个接口之间(例如标准TCP)
    SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。大概原理是在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。 在引入中面临着key如何存储来验证他正确的问题,本次采用b方案解决:将nonces存储在某地struct joinentry,用来验证MPJOIN ACK和对应的socket请求。
    6.2 BPF
    
    • BPF区分TCP sockets and MPTCP subflow sockets.
      bpf(Berkeley Packet Filter)伯克利包过滤器,其虽然叫伯克利但针对的却是网络,目的是为了提供一种过滤包的方法,可以通过用户空间经过BPF解析后传给内核。不太熟悉小伙伴可以粗的类比为Thunderbird中的Filter过滤器,去筛选处理邮件。只是BPF要过滤的不是邮件而是网路字节流。后来2013年升级后的版本叫做ebpf主要用于两个领域,一个是内核跟踪和事件监控,另外一个应用领域是网络编程。由于之前BPFPROGTYPESOCKOPS钩子上无法区分普通TCP套接字(TCP sockets)和MPTCP子流套接字(MPTCP subflow sockets),这次提交三个补丁后,可以对子流(subflow)套接字进行精细控制。区分它允许使用BPF程序在来自同一MPTCP连接(套接字标记、TCP拥塞算法等)by BPF programs.

    • bpf-tcp-header-opts: 在之前成功将TCP拥塞控制算法写入BPF一样,可以节约时间去测试/发布新的四种拥塞算法(congestion control algorithm)。现在要把tcp header option引入到BPF中: 增加了新的BPF的API并用BPFPROGTYPESOCKOPS去分析TCP hearder.搞了一个结构体来包含saved_syn,其中0813a84156 ("bpf: tcp: Allow bpf prog to write and parse TCP header option")是核心patch.

    7. 虚拟化和容器

    7.1 Enable Linux guests on Hyper-V on ARM64

    该补丁系列支持将Linux客户操作系统运行在Arm64架构Hyper-V创建的虚拟机里。在arch/arm64/hyperv中新增的arm64特定代码用于Hyper-V虚拟硬件的初始化,包括它的中断和hypercall机制。现有的用于Hyper-V的VMbus和虚拟设备的架构无关驱动程序也可以为Arm64平台进行编译,但也仅仅是可以工作的阶段。Hyper-V的相关代码,只有在CONFIGHYPERV内核配置选项被打开时,才会被编译并包含到内核映像和模块中去。

    在Arm64架构的Hyper-V虚拟机中运行Linux客户机需要的工作还有一些地方还在进行中:

    • Arm64架构的Hyper-V目前运行时的页面大小为4K字节,但允许客户机使用16K或者64K字节大小的页面。然而,在Hyper-V虚拟设备的Linux驱动程序中,客户机系统使用的页面大小被假设为4K字节。这个补丁集为客户机系统使用更大的页面先做一些基础工作,后续会有跟多的补丁来更新这些驱动程序。

    • Hyper-V vPCI驱动程序(drivers/pci/host/pci-hyperv.c)因为包含有x86/x64特定的代码,并不能在Arm64平台上编译。这个驱动将在晚些时候被修复用以使能Arm64上的vPCI设备。*在一些情况下,来自x86/x64的术语也被带到了Arm64的代码中(“MSR”、“TSC”)。Hyper-V没有使用更通用的术语来替代它们,还是保留使用x86/x64中的术语。这个问题将在Hyper-V 更新TLFS用法时得到解决。

    7.2 Remove 32-bit Xen PV guest support
    这个计划的长期目标是将Xen PV客户机替换为PVH客户机。现在该计划的第一个受害者出现了,是x86_32位PV客户机,因为这种类型的客户机现在已经很少使用了。目前Xen在x86上需要64位CPU支持,并且从官方版本2.04开始的Grub2已经能正式支持PVH客户机。因此已经没有必要在Linux中继续支持32位的PV客户机。另外,Meltdown的缓解措施在32位的PV客户机上并不可用,因此从安全的角度来看,放弃这种类型的客户机也是有意义的。(译注:不同于Arm,Xen在x86上支持以下3种类型的客户机:PV Guest,HVM和PVH。下图是这三种类型的客户机推出时间线。
    
    

    PV Guest推出的时间最早,它不依赖于硬件的虚拟化支持,客户机OS通过Xen提供的PV接口完成OS特权操作。HVM伴随着硬件虚拟化技术诞生,客户机OS可以通过硬件提供的虚拟化支持,透明地完成OS特权操作。但是外设仍然需要依赖于QEMU等emulator进行模拟。PVH是最近几年推出的,它仍然需要硬件虚拟化技术支持,但不再依赖QEMU进行设备模拟,而是通过PV driver进行IO操作。PVH具有轻量化高性能的特点,缺点是对旧的OS支持基本没有。)

    7.3 HSM driver for ACRN hypervisor

    ACRN是一种Type-1类型的虚拟机管理器软件栈,它可以直接运行在裸硬件上,广泛适合于各种物联网和嵌入式设备解决方案。

    通过一个特权Service VM,ACRN实现了一个混合虚拟机管理器架构。Service VM管理User VM的系统资源(如CPU、内存等)和I/O设备。它支持多个User VM,每个虚拟机都可以运行Linux、Android或Windows操作系统。Service VM和User VM都是ACRN的虚拟机。下图展示了ACRN的架构。

    ACRN中只有一个Service VM,它可以运行Linux操作系统。在一个典型的场景,Service VM伴随着ACRN Hypervisor启动时自动启动。然后运行在Service VM中的ACRN userspace可以通过与ACRN Hypervisor服务模块 (HSM,Hypervisor Service Module )通信来启动/停止User VM。ACRN Hypervisor服务模块(HSM)类似一个中间件,它允许ACRN userspace和Service VM操作系统内核与ACRN Hypervisor通信并管理不同的User VM。这个中间件层提供以下功能:-向hypervisor发出hypercall来管理User VM:

    • VM /vCPU的管理

    • 内存的管理

    • 设备透传

    • 中断注入 -处理User VM发出的I/O请求。-通过HSM 字符设备导出ioctl接口 -导出函数给内核其它模块调用 因为ACRN聚焦于嵌入式设备,所以它也不支持某些特性。比如

    • ACRN不支持虚拟机迁移

    • ACRN不支持CPU迁移 该补丁向内核添加ACRN Hypervisor服务模块 (HSM,Hypervisor Service Module )代码。

    7.4 mm/virtio-mem: support ZONEMOVABLE
    

    在之前引入virtio -mem的时候,ZONEMOVABLE的语义在当时是相当地不明确,这就是为什么我们需要特别处理ZONEMOVABLE,因为这样可以防止部分插入的内存块出现在ZONEMOVABLE中。

    但是现在,ZONEMOVABLE的语义变得更清楚了(我们在patch#6中对它做了文档说明),所以我么可以开始在ZONEMOVABLE中支持部分插入的内存块,允许部分插入的内存块在ZONE_MOVABLE上线和断开。这样可以避免内存块的上线时突然失败的意外,因为virtio-mem还没有将它们完全填充完毕。

    这对测试特别有用,但同时也为virtio-mem的优化铺平了道路,允许更多内存被可靠地断开。清理hasunmovablepages()和setmigratetypeseparation()两个函数。在文档中更好地描述了ZONEMOVABLE是如何与不同类型的不可移动页面交互的(memory offlining vs. alloccontig_range())。

    7.5 Support virtio cross-device resources
    

     这个补丁集是按照链接[1]中的提案实现了VIRTIO跨设备的资源共享。他将会被用于将VIRTIO资源导入到VIRTIO-VIDEO驱动中。VIRTIO-VIDEO驱动还在讨论中,可以参考链接[2]。链接[3]是正在考虑的在VIRTIO-VIDEO驱动程序中添加支持的补丁。它正在使用的API是这个补丁集的v3版本,但是更新它所做的更改相对来说不会太多。这个补丁集新增了一种dma-bufs,它支持查询底层virtio对象的UUID,同时支持从virtgpu导出资源。

    [1] https://markmail.org/thread/2ypjt5cfeu3m6lxu
    [2] https://markmail.org/thread/p5d3k566srtdtute
    [3] https://markmail.org/thread/j4xlqaaim266qpks

    7.6 KVM:Add virtualization support of split lock dection

     这个补丁系列的目标是在KVM中添加split lock detection的虚拟化支持。(译注:split lock是一种内存或者总线锁,一旦一个CPU使用该锁,其它的CPU或者设备都无法访问内存或者总线)。因为split lock detection的实现是和CPU型号紧耦合的,而虚拟机的CPU型号又是由VMM配置的。因此我们选择采用半虚拟化的方式来向客户机暴露并列举CPU的型号。

    7.7 KVM: PKS Virtualization support

    这个RFC补丁系列引入了KVM对PKS的支持,补丁中有些定义依赖于PKS内核补丁。

    PKS (Protection Keys for Supervisor Pages,特权页面的保护密钥)是保护密钥体系架构的一个扩展特性,用于以支持限制特定线程在特权页面上的访问权限。(译注:PKS将内核地址空间中的每个页面和一个Protection Key关联起来。Protection Key一共16个,因此内核页面被划分为16个区域,每个区域都可以独立配置权限。修改这些区域的权限策略会比直接修改这些页面的权限设置会更加高效)

    PKS的工作原理与现有的PKU(用户页面保护)相似。它们都是在系统完成原有的访问权限检查之后再执行一个额外的检查。如果访问权限被违反了,则会触发#PF并且PFEC.PK状态位将被设置。PKS引入MSR IA32PKRS来管理特权页面保护密钥的权限。MSR包含16对ADi和WDi位。每一对ADi/WDi可以将权限通知到整组具有相同PKS密钥的页面中,该密钥被保存在页表项的bits[62:59]。目前IA32PKRS并没有被XSAVES架构支持。这个补丁集的目的是在KVM中添加PKS的虚拟化支持。它实现了PKS CPUID枚举,vmentry/vmexit配置,MSR公开,嵌套虚拟化的支持等。目前,PKS还不支持影子页表。关于PKS的详细信息可以在最新的“Intel 64 and IA-32 Architectures Software Developer's Manual”手册中找到。

    (END)

    Linux阅码场原创精华文章汇总

    更多精彩,尽在"Linux阅码场",扫描下方二维码关注

    展开全文
  • Linux修改root密码

    万次阅读 2018-07-03 17:26:10
    今天给大家介绍一个小操作,之前在安装虚拟机的时候当时感觉为了自己的安全在设置密码的时候设置了一个和复杂的密码, 每次登陆,每次需要权限的时候都会把密码输入一遍并且linux下为了保护密码,经常你输入的时候是...

    今天给大家介绍一个小操作,之前在安装虚拟机的时候当时感觉为了自己的安全在设置密码的时候设置了一个和复杂的密码, 每次登陆,每次需要权限的时候都会把密码输入一遍并且linux下为了保护密码,经常你输入的时候是不显示你输入了多少个,所以过于复杂的密码十分的繁琐,并且相对于我这种个人用户而言,也没有什么黑客来入侵我的电脑,所以就想把自己linux下权限密码进行一下更改,这里就介绍一下linux是怎么来更改自己账户的密码的。

     Linux不同于我们的window他是通过指令来进行操作的,所以更改密码这种事也不是通过点点鼠标就能完成的,这里是需要通过特殊的指令才进行修改。

     

    首先我们打开一个指令终端然后输入

    sudo passwd  用户名

    我的用户名自然就是hanani了,这里一定要注意中间的单词并不是password这个单词,这里是passwd

     

    之后输入新密码,再次确认新密码,之后就提示修改成功了,这里我将我的密码改成了一位的,linux并不和我们之前的设置密码一样需要一定的难度,我目前还没遇到过什么限制,这里为了方便直接设置成了一位,我认为平时用来联系的大家都可以改的相对简单一些,毕竟方便了很多。

    展开全文
  • linux下忘记密码修改数据库mysql密码

    千次阅读 2017-04-05 15:15:03
    linux下mysql的root密码忘记解决方1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以...

    1.首先确认服务器处于安全的状态;

    也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。

    2.修改MySQL的登录设置:

    vi /etc/my.cnf 
    

    在[mysqld]的段中加上一句:skip-grant-tables
    例如:

    [mysqld] 
    datadir=/var/lib/mysql 
    socket=/var/lib/mysql/mysql.sock 
    skip-grant-tables 
    

    保存并且退出vi。

    3.重新启动mysql服务器

     /etc/init.d/mysqld restart 
    

    我的是mariadb ,所以重启服务是:systemctl restart mariadb.service

    4.登录并修改MySQL的root密码

    /usr/bin/mysql 
    

    看看是不是进来了!

    mysql> USE mysql ; 
    
    mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ; 
    
    mysql> flush privileges ; 
    
    mysql> quit 
    

    5.将MySQL的登录设置修改回来

     vi /etc/my.cnf 
    

    删除skip-grant-tables,保存并且退出vi。

    6.重新启动mysql服务器

    区分一下,如果是mysql那么,重启服务是:

    /etc/init.d/mysqld restart 
    

    如果是mariadb,那么重启服务是:

    sudo systemctl restart mariadb.service
    

    试试新的密码,是不是可以了!

    在这里插入图片描述

    展开全文
  • Linux修改密码提示鉴定令牌操作错误

    万次阅读 2018-09-19 11:22:27
    修改Linux下一个用户的密码,输入passwd fmuser,提示鉴定令牌操作错误: 查看/etc/group /etc/passwd /etc/shadow文件权限 输入: lsattr /etc/group /etc/passwd /etc/shadow 设置i权限: chattr -i /...
  • Linux中11位文件保护模式

    千次阅读 2014-10-22 15:58:35
    1、其中9位描述文件的rwx(读取、写入和只想)
  • 学习linux时遇到更改密码出现的:passwd:Authentication token manipulation error。在查找资料时看到有博客主的相关讲解,所以转载过来参考学习!  转载自:...
  • linux 保护文件的命令 chattr

    千次阅读 2017-12-11 12:00:07
    Linux文件保护禁止修改、删除、移动文件等,使用chattr +i保护 chatter = change [file] attributions lsattr = list [file] attributions 不让用户修改、删除文件等,使用 chattr保护 chattr命令的用法:chattr [ ...
  • linux-修改密码提示passwd: 鉴定令牌操作错误如果在linux中,不管是root用户还是普通用户登录后,修改自己的密码,出现---passwd:Authentication token manipulation error---错误的解决办法:[root@localhost ~]# ...
  • 前言 人生就像赶路,山一程,水一...1.重新启动linux操作系统! *当出现上图页面按e键,进入引导相关内容 二、进行引导操作 1.如图所示,在这一行后面加上init=/bin/sh, 一行放不下时,可以在后面加个\。 2.ctr.
  • linux 文件保护-使用chattr +i保护

    千次阅读 2020-12-21 22:40:25
    Linux文件保护禁止修改、删除、移动文件等,使用chattr +i保护 chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files… 最关键的是在[mode]部分,[mode]部分是由±=和[ASacDdIijsTtu]这些字符组合的,这...
  • Linux面试题(2020最新版)

    万次阅读 多人点赞 2020-03-01 11:14:38
    文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的...
  • Linux保护模式之-CPL、RPL、DPL

    千次阅读 2016-03-29 09:09:43
    先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限 啦。特权级共有4 个级别,0,1,2,3,数字越小表示权限越高。如图: 较为核心的代码和数据放在较高(靠内)的层级中,处理器用此来...
  • 每次使用xshell登录linux服务器都使用root账号感觉不太安全,所以...找了一下问题根因,应该是passwd与shadow被保护了 范例: #chattr +i /etc/shadow ——>添加“i”隐藏属性后,就无法更动这个文件了 #chattr -i /
  • Linux用户用户组密码

    千次阅读 2014-04-25 19:24:14
    说明:取消密组后,只有成员才可以通过newgrp命令切换入该组。 6. 添加组成员 使用gpasswd命令向指定组添加成员用户:  gpasswd -a <user> 此操作由组管理员进行。 (usermod也可以;...
  • linux下mysql的root密码忘记解决方法

    万次阅读 2013-11-14 18:05:04
    因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法...
  • Linux 创建新用户和设置密码

    万次阅读 2018-10-26 09:40:04
    Linux 创建新用户和设置密码Linux 新建用户、...Linux 新建用户、用户组 Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进...
  • 最近在开发基于arm linux的集中器,出于保护系统的目的,需要给系统设置登录用户名和密码,因此就在网上查询了下怎样给嵌入式arm linux系统设置登录用户名和密码的方法,结果如下: 设置登录用户和用户密码,在/etc...
  • Kali Linux 秘籍 第八章 密码攻击

    万次阅读 2016-10-05 11:43:04
    我们假设你能够访问某台 Windows 主机,通过远程入侵,或者物理接触,并且能够通过 USB 或 DVD 驱动器启动 Kali Linux。 看看你想挂载哪个硬盘: Fdisk -l 挂载该硬盘,并将 target 设为它的挂载点。 ...
  • Linux二进制保护(文末福利)

    千次阅读 2018-01-15 21:17:28
    本文将会探索Linux程序混淆的基本技术和动机。通过对二进制文件进行混淆或者加密来保护二进制文件不被篡改的技术被称作软件保护。说到软件保护,指的是二进制保护或者二进制加固技术。二进制加固并不是Linux所独有的...
  • linux中忘记连接MySQL的密码怎么办?

    千次阅读 2018-08-11 10:59:49
    因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现...
  • 如何利用KaLi Linux暴力破解WiFi密码

    千次阅读 2020-10-23 11:39:32
    3.KaLi Linux 4.密码字典(越强大越好) 介绍WiFi加密方式 1.WEP:采用WEP64位或者128位数据加密 2.WPA-PSK[TKIP]:采用预共享秘钥的WI-FI保护访问,采用WPA-PSK标准加密技术 3.WPA-PSK[TKIP]+WPA2-PSK[AES]:允许...
  • linux下 重置MySQL 密码过程。

    千次阅读 2018-05-30 21:17:46
    linux下mysql-5.6忘记root密码,重置root密码详细过程 1、首先停止mysql服务进程: service mysqld stop 2、然后编辑mysql的配置文件my.cnf vim /etc/my.cnf 在my.cnf文件末尾加:skip-grant-tables后保存退出...
  • 使用pdfcrack破解PDF密码(Linux)

    千次阅读 2019-09-22 23:56:24
    pdfcrack是破解PDF保护密码的Linux命令行工具。 安装pdfcrack Debian系列: # apt install pdfcrack 暴力破解 # pdfcrack -f filename.pdf -n 6 -m 8 -c 0123456789 暴力破解密码是漫长单调的过程。 上面...
  • 使用fcrackzip破解zip保护密码

    千次阅读 2019-09-22 23:56:17
    zip是一种非常流行的压缩格式,并且它提供了一个密码保护的功能 - 只有输入...Kali Linux默认安装了这个工具,如果你使用的是其它Linux发行版。例如Ubuntu,执行安装命令: sudo apt-get install fcrackzip ...
  • Linux安全1-用户密码被暴力破解

    万次阅读 2017-05-16 16:56:55
    本人所用Linux为CentOS7,本文写于2017-05-16,请注意版本区别和时效性。1.缘由今天连接服务器时,发现有接近3万次的连接失败记录。抓紧查了查怎么回事,原来是被攻击了,可能是僵尸网络干的。大神们建议,root密码...
  • Linux程序的常用保护机制

    千次阅读 2020-06-28 14:29:24
    在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX)、ASLR(Linux下对应PIE)等机制,例如存在DEP(NX)的话就不能直接执行栈上的数据,存在ASLR的话各个系统调用的地址就是随机化的。...
  • Linux下用C语言实现简单的密码登录

    千次阅读 2016-10-16 21:03:50
    Linux下,密码不可见;在Windows下,密码显示的则是··········的一串小黑点,或者登陆某一网站账号时密码为********的一串星号,其目的都是来隐藏密码。而这种密码的显示方式怎样是怎样实现的呢,今天,...
  • 栈的保护--windows和linux

    千次阅读 2010-02-09 22:07:00
    对于为何要保护堆栈,请以“缓冲区溢出”,“堆栈”为...在linux和windows上,保护栈的方式最重要的莫过于两种, 一个是使用堆栈安全cookie;另一个是使栈不可执行。 上面提到的两种方式中,安全cookie提供了更大的保
  • 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,901
精华内容 34,360
关键字:

linux保护码

linux 订阅