LinuxZH

通过自由/开源软件周刊通讯,可以学习有用的Linux技巧,发现应用程序,探索新的发行版,并随时了解Linux世界的最新动态

文章

Fedora Linux 44 发布!
Fedora Linux 44 发布!
Anonymous

我很兴奋地宣布 Fedora Linux 44 正式发布!继续阅读以了解 Fedora Linux 44 的亮点,或者如果您已经准备好了,直接上手试试吧! 感谢每一位贡献者 感谢并祝贺所有为这个版本做出贡献的人。也感谢大家上周五参加虚拟发布派对。今年我们提前庆祝了一下,就在 Go/No-Go 会议正式批准发布之后。如果您没能参加直播,可以观看录制视频,了解贡献者们所做的出色工作。 升级 如果您有现有系统,升级 Fedora Linux 到新版本非常简单。大多数情况下,这与重启常规更新没有太大区别,只是您会有更多时间喝杯咖啡。 全新安装 如果这是您第一次运行 Fedora Linux,或者您想重新开始,请下载我们的旗舰版本(Workstation、KDE Plasma Desktop、Cloud、Server、CoreOS、IoT)的安装介质,或我们的原子桌面(Silverblue、Kinoite、Cosmic、Budgie、Sway),以及替代桌面选项(如 Cinnamon、Xfce 等)。 有什么新变化? 与往常一样,Fedora Linux 中有太多单独的更改和改进,无法一一详细介绍。您可以查看发布说明了解详情。 值得注意的用户可见变化 Anaconda 对于全新安装 Fedora Linux 44 Spins 的用户,您可能会注意到 Anaconda 处理网络设备方式的改变。Anaconda 现在仅为安装期间配置的设备(通过启动选项、kickstart 或交互式 UI)创建网络配置,而不再为所有设备提供默认配置。这一变化将简化需要在安装后自定义网络的用户的配置流程。 Workstation Fedora Linux 44 Workstation 搭载最新的 GNOME 50 桌面环境。这带来了大量桌面改进,涵盖从无障碍、色彩管理到远程桌面的方方面面。Fedora Workstation 默认安装的许多应用也获得了改进,从文档查看器到文件管理器和日历。要了解更多信息,请阅读 GNOME 50 发布说明。 KDE Plasma Desktop 如果您是 KDE 用户,也会注意到一些明显的变化。Fedora KDE Plasma Desktop 44 基于最新的 Plasma 6.6,其中包括全新的 Plasma Login Manager 和 Plasma...

Fedora Workstation 44 新特性
Fedora Workstation 44 新特性
Anonymous

这篇文章重点介绍了 Fedora Workstation 最新版本中我们认为您会喜欢的一些值得注意的变化。立即从官方网站升级,或使用 GNOME Software 或通过终端使用 dnf system-upgrade 升级您现有的安装。 GNOME 50 Fedora Linux 44 Workstation 搭载了最新的 GNOME 版本——GNOME 50。它为您的桌面带来了大量的改进,涵盖从无障碍、色彩管理到远程桌面等各个方面。 作为数字健康计划的一部分,新的原生家长控制功能让您可以直接从设置中设定屏幕时间限制和就寝时间。 Fedora Workstation 默认安装的许多应用程序也获得了改进,包括文档查看器、文件管理器和日历。 要了解更多关于这些及其他变化的详细信息,您可以阅读 GNOME 50 发布说明。 总结 请务必查看 Fedora Linux 44 变更集 Wiki 以获取关于 Fedora Linux 44 中所有功能和变更的更多详细信息。如果您想与 Fedora 社区交流关于这个新版本的内容,请使用 Fedora Discussion 论坛或 Fedora 的 Matrix 聊天服务器。 ...

GDB 源码追踪断点
GDB 源码追踪断点
Anonymous

调试器的主要能力之一就是设置断点。 GDB(GNU 项目调试器)现在引入了一项实验性功能——源码追踪断点,它可以追踪断点所设置的源码行位置。 简介 设想您正在进行调试:您在一堆源码行上设置了断点,检查了一些值,然后有了修改代码的想法。您编辑了源码并重新编译,但保持 GDB 会话运行,输入 run 重新加载新编译的可执行文件。由于修改了源码,断点的行号发生了偏移。目前,您只能禁用现有断点并重新设置新的断点。 GDB 源码追踪断点改变了这一局面。当您使用 file:line 符号设置断点时(启用此功能后),GDB 会捕获周围源码的一个小窗口。当您重新编译并重新加载可执行文件时,GDB 会调整任何因源码变更而导致行号偏移的断点。这在临时调试会话中尤其有用,您无需在每个编辑-编译周期后手动重设断点。 设置源码追踪断点 启用源码追踪功能: (gdb) set breakpoint source-tracking enabled on 使用 file:line 符号设置断点: (gdb) break myfile.c:42 Breakpoint 1 at 0x401234: file myfile.c, line 42. GDB 现在会追踪该行周围的源码。info breakpoints 命令会显示断点是否被追踪: (gdb) info breakpoints Num Type Disp Enb Address What 1 ...

使用 step-ca 搭建私有证书颁发机构
使用 step-ca 搭建私有证书颁发机构
Anonymous

在本文中,您将了解 TLS(传输层安全)和 SSH(安全外壳)如何使用公钥/私钥对来验证您访问的 Web 服务器和您登录的 Linux 机器。您还将了解到主流 Web 浏览器默认安装的 TLS 框架在关键方面未能防止 MITM(中间人)攻击。然后,我们将逐步介绍如何搭建私有 .FEDORA TLD(顶级域名)、使用 smallstep 包搭建您自己的私有 CA,以及使用 acme-tiny 包为该私有 TLD 下的网站颁发证书。 我不会介绍如何使用 Fedora 中打包的您喜欢的 Web 服务器搭建一个简单的"Hello World"网站。要跟着本文操作,您需要已经在 HTTP 上运行了这样一个网站。在本文中,该网站将被命名为 hello.fedora。 遗憾的是,我们还将解释这并不能完全解决 MITM 问题——但这已经是一篇很长的文章了。 公钥如何防止中间人攻击 虽然 NSA 局长 Admiral Bobby 透露情报机构自 20 世纪 60 年代以来就已了解双密钥或公钥密码学,但第一份非保密论文是由 Whitfield Diffie 和 Martin E. Hellman 于 1976 年发表的。在大学里,我记得玩过基于背包问题的密码系统,这些系统存在各种漏洞。真正革新该领域的是 1977 年 RSA 算法的发表。我清楚地记得我在大学图书馆里读这篇论文时的位置。关于"算法不能申请专利"存在一些争议,但 RSA 为其实现申请了专利(实现本身已经受版权保护——但这是另一个话题)。是的,您可以在几分钟内写出一个一行的 Perl 实现(我们都做过)——但一个不会通过各种侧信道泄露私钥的安全实现可绝非易事。 公钥的原始概念是在目录中查找接收者的公钥,并用它来加密消息,只有持有对应私钥的人才能解密。这也可以用来通过证明对方持有相应私钥的协议来验证通信方的身份。基本思想是使用公钥加密一个随机令牌,接收者解密该令牌并用您的公钥加密后发回。具体细节并不简单。主要关注点是 MITM 攻击。SSH 和...

类型构造与循环检测
Anonymous

Go 的静态类型是其能够很好地适应需要健壮可靠的生产系统的重要原因之一。编译 Go 包时,首先进行解析——即将包中的 Go 源代码转换为抽象语法树(AST)。随后,该 AST 被传递给 Go 类型检查器。 在这篇博文中,我们将深入探讨在 Go 1.26 中我们显著改进的类型检查器的一部分。这对 Go 用户来说意味着什么变化呢?除非您热衷于晦涩的类型定义,否则这里没有明显的变化。这次改进旨在减少边界情况,为 Go 未来的改进奠定基础。同时,这也是一个有趣的机会,来看看对 Go 程序员来说看似普通、实则隐藏着真正微妙之处的东西。 但首先,什么是类型检查?它是 Go 编译器中的一个步骤,在编译时消除整类错误。具体来说,Go 类型检查器验证: AST 中出现的类型是否有效(例如,map 的键类型必须是可比较的)。 涉及这些类型(或其值)的操作是否有效(例如,不能将 int 和 string 相加)。 为了实现这一点,类型检查器在遍历 AST 时为遇到的每个类型构建一个内部表示——这个过程非正式地称为类型构造。我们很快就会看到,尽管 Go 以其简单的类型系统闻名,但在语言的某些角落,类型构造可能出乎意料地复杂。 类型构造 让我们从一个简单的类型声明对开始: type T []U type U *int 当类型检查器被调用时,它首先遇到类型声明 T。这里,AST 记录了一个类型名 T 和一个类型表达式 []U 的类型定义。T 是一个定义类型;为了表示类型检查器在构造定义类型时使用的实际数据结构,我们将使用一个 Defined 结构体。 Defined 结构体包含一个指针,指向类型名右侧的类型表达式的类型。这个 underlying 字段与获取类型的底层类型相关。为了帮助说明类型检查器的状态,让我们看看遍历 AST 如何填充数据结构,从以下开始: 此时,T 处于正在构造中,以黄色表示。由于我们尚未计算类型表达式 []U——它仍然是黑色——underlying 指向 nil,以空心箭头表示。 当我们计算 []U 时,类型检查器构建了一个 Slice 结构体,这是用于表示切片类型的内部数据结构。与 Defined 类似,它包含一个指向切片元素类型的指针。我们还不知道名称...