2023年12月

2011 年 3 月,苹果公司提出 RFC 6186,描述了如何利用域名系统服务(DNS SRV)记录来查找电子邮件的提交以及访问服务。现在 Postfix 从 3.8.0 版本开始支持 RFC 中提出的设计。这个新增功能让你可以使用 DNS SRV 记录进行负载分配和自动配置。

DNS SRV 记录的形态

DNS SRV 记录定义在 RFC 2782 中,它指定在区域文件中,并且包含了服务名称、传输协议规范、优先级、权重、端口,以及提供该服务的主机。

_submission._tcp    SRV 5 10 50 bruce.my-domain.com.
字段意义
服务名称submission服务名为 submission
传输协议规范tcp本服务使用 TCP 协议
优先级5服务器优先级设为 5(数值越小,优先级越高)
权重10服务器应承担的负载部分
端口50服务器监听连接的端口
目标bruce.my-domain.com.提供此服务的服务器名称

记录解释

服务器选择算法

客户端应该按照 RFC 2782 中描述的方式解析 SRV 记录。这意味着,首先尝试联系拥有最高优先级(最小的优先级数字)的服务器。如果该服务器无回应,那么重试联系拥有同样或者更低优先级的下一台服务器。当有多台服务器拥有同样优先级的时候,应随机选择其中一台,但是必须确保选择记录的概率符合下列公式:

其中 i 是 SRV 记录的标识,k 是具有相同优先级的 SRV 记录的数量。

在现实中,这意味着如果你有两台服务器,其中一台的处理能力是另一台的三倍,那么你应该给第一台服务器的权重赋于另一台三倍的值。这样就能保证更强大的服务器会接收到大约 75% 的客户端请求,而另一台接收大约 25% 的请求。

这些原则使得 SRV 记录能够同时作为客户端自动配置及在服务器之间分配工作负载的工具。

看看以下这个记录的例子:

_submission._tcp     SRV 0 0 2525 server-one
_submission._tcp     SRV 1 75 2625 server-two
_submission._tcp     SRV 1 25 2625 server-three

这里 server-one 总是会被首选来进行联系。如果 server-one 无回应,客户端就会将剩下优先级为 1 的两个记录顺序打乱,生成一个从 0 到 100 的随机数,如果第一条记录的运行总和大于或者等于这个随机数,它就会尝试去联系这个记录。否则,客户端会倒序联系所有服务器。注意,客户端会向它优先成功连接的服务器发送请求。

示例配置

请考虑以下这种情况。你想为大量的电脑配置 Postfix,使其通过公司的邮件服务器利用 SRV 记录转发外部电邮。为了达到这个目标,你需要在每台电脑的 Postfix 中配置 relayhost 参数,即邮件用户代理(MUA)。如果将 relayhost 参数的值设置为 $mydomain,你的机器将开始为你的域名查找 MX 记录,并尝试按照它们的优先级顺序发送邮件。这种方法虽然有效,但是可能会遇到负载平衡问题。Postfix 会使用优先级最高的服务器,直到其变为无响应才会联系其他备用服务器。此外,如果你在环境中使用了动态分配的端口,你无法指明哪个端口正在被特定的服务器使用。使用 SRV 记录,你可以应对这些挑战,并在需要改变服务器端口的时候维持服务器的平滑运行。

区域文件

为了使得 DNS 服务器提供信息给客户端,可以参考以下使用服务器 server-oneserver-twoserver-three 作为中继,并把服务器 server-four 配置为接收测试邮件的区域文件示例。

$TTL  3600
@       IN SOA  example-domain.com. root.example-domain.com. (
                1571655122 ; 区域文件的序列号
                1200       ; 刷新时间
                180        ; 发生问题时的重试时间
                1209600    ; 过期时间
                10800 )    ; 查询失败时的最大缓存时间
;
        IN NS   ns1
        IN A    192.168.2.0
;
ns1     IN A    192.168.2.2
server-one           IN A   192.168.2.4
server-two           IN A   192.168.2.5
server-three         IN A   192.168.2.6
server-four          IN A   192.168.2.7
_submission._tcp     SRV 0 0 2525  server-one
_submission._tcp     SRV 1 50 2625 server-two
_submission._tcp     SRV 1 50 2625 server-three
@ MX 0 server-four

Postfix MUA 配置

设置客户端机器去查找 SRV 记录:

use_srv_lookup = submission
relayhost = example-domain.com:submission

通过这个配置,你的客户端机器上的 Postfix 实例会联络到 example-domain 的 DNS 服务器,然后获取邮件提交的 SRV 记录。在这个例子中,server-one 有最高的优先级,Postfix 会先试图连接它。然后,Postfix 随机的选择剩下的两个服务器其中一个去尝试连接。这个配置确保了大约有 50% 的机会会优先联系到服务器一。注意,SRV 记录的权重值并不等同于百分比。你也可以用 1 和 1 这样的值达到同样的目标。

同时,Postfix 也知道 server-one 在监听 2525 端口,而 server-two 在监听 2625 端口。如果你正在缓存检索到的 DNS 记录,并且你动态改变 SRV 记录,那么设置一个低的生存时间(TTL)对你的记录是很重要的。

整套设置

你可以通过下面的方式尝试这个配置,包含 podman 和在此处提供的 compose 文件:

$ git clone https://github.com/TomasKorbar/srv_article
$ cd srv_article/environment
$ podman-compose up
$ podman exec -it article_client /bin/bash
root@client # ./senddummy.sh
root@client # exit

完成配置之后,你可以检查日志,查看邮件是否经过 server-one 并最终投递到 server-four

$ podman stop article_server1
$ podman exec -it article_client /bin/bash
root@client # ./senddummy.sh
root@client # ./senddummy.sh
root@client # ./senddummy.sh
root@client # ./senddummy.sh
root@client # ./senddummy.sh
root@client # ./senddummy.sh
root@client # exit

现在 server-one 已经关闭了,这六封邮件将会由 server-two 或者 server-three 中转发出去。

仔细看一下 Dockerfiles 以更深地理解这个配置。

通过执行:$ podman-compose down 完成示例的操作。

(题图:DA/241079fe-58d6-4dc6-8801-f0fd19dfd64b)


via: https://fedoramagazine.org/using-postfix-dns-srv-record-resolution-feature/

作者:Tomáš Korbař 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

1 继收回 LXD 控制后,Canonical 将其更改为 AGPLv3 许可

继 Canonical 收回对 LXD 的 控制权,并将 维护权 仅限于 Canonical 员工之后,在前两天 LXD 5.20 发布时,他们也将其许可证从 Apache 2 许可证默认更改为 AGPLv3,以与他们的“服务器端代码标准许可保持一致”。这一变更并不妨碍用户使用、修改或提供基于 LXD 的软件解决方案,前提是他们遵循 AGPLv3 在修改并向他人提供服务时也要提供源代码。但这将影响 LXD 的分叉项目 Incus,如果 Incus 采用了来自 LXD 中的变更,就会导致该项目变成混合两种许可证的项目。Incus 是在 Canonical 接管 LXD 之后,社区开发者创建的 分支

(插图:DA/5b8ebb04-5116-4e50-8757-39c3855e2dfb)

消息来源:Phoronix
老王点评:我敢说 Canonical 肯定不希望 Incus “蹭”它的代码。那么之后呢,LXD 和 Incus 的差异越来越大?

2 Threads 开始测试 ActivityPub 整合

扎克伯格宣布,该公司已开始测试在 Mastodon 和其他 ActivityPub 服务上显示 Threads 上的帖子。ActivityPub 是一个开放去中心化社交网络协议,被 Mastodon、PeerTube 等应用使用,支持 ActivityPub 协议的平台之间可以实现互操作。Threads 在上线之初就宣布将支持 ActivityPub。扎克伯格说:“不同服务之间的互操作性越强,内容流动越多,所有服务就会越好。”虽然怀疑论者一直认为 Threads 永远不会真正实现联邦化。

(插图:DA/f4698284-43ec-46fa-9e36-e177f0b380f6)

消息来源:The Verge
老王点评:要是能完全支持 ActivityPub,那无异于联邦宇宙的一大胜利。

3 恶意软件组织使用内存安全语言编写恶意软件

DLang 是过去几年来西方安全机构认可的新型内存安全语言之一,也是网络犯罪分子正在转向的语言类型。至少有三种基于 DLang 的新型恶意软件已被用于攻击。在过去几年中,恶意软件编码和更广泛的编程领域都在加速向更新的语言和框架转变。除了 DLang,Rust 也被用来编写恶意软件。去年,AlphV/BlackCat 使用 Rust 重新编写了有效载荷,为其附属机构提供了一个更可靠的工具。

(插图:DA/20a63f31-1f6b-4b53-a1b8-5bbbd251a4de)

消息来源:The Register
老王点评:看起来这些恶意软件组织对程序质量还是蛮在意的,至少比绝大多数企业要在意。

回音

用这些技巧释放 sudo 的力量 ?

你应该熟悉 sudo 吧?肯定有过使用的经验。

对多数 Linux 用户来说,sudo 就像一个神器,赋予了他们作为 root 用户执行任意命令或切换到 root 用户身份的能力。

其实这只掌握了一半的真相。sudo 绝非仅仅只是一条命令,sudo 是一款你可以根据需求和偏好去定制的工具

Ubuntu、Debian 以及其他的发行版在默认的配置下,赋予了 sudo 以 root 用户的身份执行任意命令的权限。这让很多用户误以为 sudo 就像一个魔法开关,瞬间可以获取到 root 权限。

比如说,系统管理员可以设置成只有属于特定的 dev 组的部分用户才能用 sudo 来执行 nginx 命令。这些用户将无法用 sudo 执行任何其他命令或切换到 root 用户。

如果你对此感到惊讶,那很可能是你一直在使用 sudo,但对其底层的工作原理并没有太多了解。

在这个教程中,我并不会解释 sudo 是如何运作的,这个主题我会在另一天讲解。

在这篇文章中,你将看到 sudo 的不同特性可以如何被调试和改进。有些可能真的很有用,有些可能完全没什么帮助,但是挺有趣。

? 请不要随意去尝试所有提到的改进。如果处理不慎,你可能会遭遇无法运行 sudo 的混乱状态。在大多数情况下,平静阅读并知道这些就好。如果你决定尝试一些改进步骤,请先备份你的系统设置,这样在需要的时候能把事情恢复到正常。

1、编辑 sudo 配置时,请始终使用 visudo

sudo 命令是通过 /etc/sudoers 文件进行配置的。

虽然你可以用你最喜欢的 终端文本编辑器 编辑这个文件,比如 Micro、NeoVim 等,但你千万不要这么做。

为什么这么说呢?因为该文件中的任何语法错误都会让你的系统出问题,导致 sudo 无法工作。这可能会使得你的 Linux 系统无法正常使用。

你只需要这样使用即可:

sudo visudo

传统上,visudo 命令会在 Vi 编辑器中打开 /etc/sudoers 文件。如果你用的是 Ubuntu,那么会在 Nano 中打开。

这么做的好处在于,visudo 会在你试图保存更改时执行语法检查。这能确保你不会因为语法错误而误改 sudo 配置。

visudo 在保存到 sudoers 文件的变更前检查语法

好了!现在你可以看看 sudo 配置的一些改变。

? 我建议你备份 /etc/sudoers 文件(sudo cp /etc/sudoers /etc/sudoers.bak)。这样,如果你不确定你做了哪些更改,或者你想恢复到默认的 sudo 配置,那你可以从备份文件中复制。

2、输入 sudo 密码时显示星号

我们的这种输入行为是从 UNIX 系统中继承下来的。当你在终端输入 sudo 密码时,屏幕上不会有任何显示。这种缺乏反馈的现象,往往让新的 Linux 用户怀疑自己的系统已经卡住了。

人们常说,这是一项安全功能。或许在上个世纪是这样,但我个人觉得我们没有必要继续这样下去。

不过,一些发行版,如 Linux Mint,已经对 sudo 进行了优化,当你输入密码时会显示星号。

这样的方式更符合我们的日常经验。

如果想让 sudo 输入密码时显示星号,运行 sudo visudo 并找到以下行:

Defaults env_reset

然后将其更改为:

Defaults env_reset,pwfeedback

? 在某些发行版中,比如 Arch,你可能找不到 Defaults env_reset 这一行。如果这样的话,只需新增一行 Defaults env_reset, pwfeedback 就可以了。

现在,当 sudo 需要你输入密码时,你会看到输入的密码变成了星号。

✋ 如果你注意到即使密码正确也无法通过一些图形化应用,如软件中心,那就该撤销这项更改。一些较旧的论坛帖子曾提到过此类问题,虽然我自己还未遇到过。

3、增加 sudo 密码超时时限

当你首次使用 sudo 时,它会要求输入密码。但在随后相当一段时间里,你使用 sudo 执行命令就无需再次输入密码。

我们将这个时间间隔称为 sudo 密码超时 (暂且称为 SPT,这是我刚刚编的说法,请不要真的这样称呼 ?)。

不同的发行版有不同的超时时间。可能是 5 分钟,也可能是 15 分钟。

你可以根据自己的喜好来改变这个设置,设定一个新的 sudo 密码超时时限。

像你之前看到的,编辑 sudoers 文件,找到含有 Defaults env_reset 的行,并在此行添加 timestamp_timeout=XX,使其变成如下形式:

Defaults        env_reset, timestamp_timeout=XX

其中 XX 是以分钟为单位的超时时长。

如果你还有其他参数,例如你在上一节中看到的星号反馈,它们都可以在一行中组合起来:

Defaults        env_reset, timestamp_timeout=XX, pwfeedback
? 同样地,你还可以控制密码重试的次数上限。使用 passwd_tries=N 来修改用户可以输入错误密码的次数。

4、在不输入密码的情况下使用 sudo

行!你已经增加了 sudo 密码超时时限(或者称之为 SPT。哇塞!你还在坚持这个叫法 ?)。

这样很好。我的意思是,毕竟没人愿意每几分钟就输入一次密码。

扩大超时时限是一方面,另一方面则是尽可能不去使用它。

是的,你没听错。你就是可以在无需输入密码的情况下使用 sudo

从安全角度来看,这听起来似乎很冒险,对吧?的确如此,但在某些实际情况下,你确实会更青睐无密码的 sudo

例如,如果你需要远程管理多台 Linux 服务器,并为了避免总是使用 root,你在这些服务器上创建了一些 sudo 用户。辛酸的是,你会有太多的密码。而你又不想对所有的服务器使用同一的 sudo 密码。

在这种情况下,你可以仅设置基于密钥的 SSH 访问方式,并允许使用无需密码的 sudo。这样,只有获得授权的用户才能访问远程服务器,也不用再记住 sudo 密码。

我在 DigitalOcean 上部署的测试服务器上就采用了这种方法,用来测试开源工具和服务。

好处是这可以按用户进行设置。使用以下命令打开 /etc/sudoers 文件进行编辑:

sudo visudo

然后添加如下行:

user_name ALL=(ALL) NOPASSWD:ALL

当然,你需要将上面行中的 user_name 替换为实际的用户名。

保存文件后,你就可以享受无密码的 sudo 生活了。

5、配置独立的 sudo 日志文件

查阅 syslog 或 journal 日志,我们可以找到关于 sudo 的所有条目,但若需要单独针对 sudo 的记录,可以专门创建一个自定义的日志文件。例如,选择 /var/sudo.log 文件来存储日志。这个新的日志文件无需手动创建,如果不存在,系统会自动生成。

编辑 /etc/sudoers 文件,采用 visudo 命令,并在其中添加以下内容:

Defaults  logfile="/var/log/sudo.log"

保存该文件后,便可以在其中查看哪些命令在何时、由哪位用户通过 sudo 运行了。

6、限制特定用户组使用 sudo 执行特定命令

这是一种高级解决方案,系统管理员在需要跨部门共享服务器的多用户环境中会使用。

开发者可能会需要以 root 权限运行 Web 服务器或其他程序,但全权给予他们 sudo 权限会带来安全风险。我建议在群组级别进行此项操作。例如,创建命名为 coders 的群组,并允许它们运行在 /var/www/opt/bin/coders 目录下的命令(或可执行文件),以及 inxi 命令(路径是 /usr/bin/inxi 的二进制文件)。这是一个假想情景,实际操作请谨慎对待。

接下来,用 sudo visudo 编辑 sudoer 文件,再添加以下行:

%coders   ALL=(ALL:ALL) /var/www,/opt/bin/coders,/usr/bin/inxi

如有需要,可以添加 NOPASSWD 参数,这样允许使用 sudo 运行的命令就不再需要密码了。

关于 ALL=(ALL:ALL) 的详细解读,我们将会在其他文章中进行讲解,毕竟这篇文章已经解释的内容足够多了。

7、检查用户的 sudo 权限

好吧,这是个小提示,而不是系统调优技巧。

如何确认一个用户是否具有 sudo 权限呢?可能有人会说,查看他们是否是 sudo 组的成员。但这并不一定准确,因为有些发行版用的是 wheel 代替 sudo 分组。

更佳的方法是利用 sudo 内建的功能,看看用户具有哪种 sudo 权限:

sudo -l -U user_name

这将显示出用户具有执行部分命令或所有命令的 sudo 权限。

如你所见,我拥有自定义日志文件、密码反馈以及执行所有命令的 sudo 权限。

如果一个用户完全没有 sudo 权限,你将看到如下提示:

User prakash is not allowed to run sudo on this-that-server.

? 附加内容:输错 sudo 密码时,让系统“侮辱”你

这是个我在文章开头提到的“无用”小调整。

我想你在使用 sudo 时肯定曾误输过密码,对吧?

这个小技巧就是,在你每次输错密码时,让 sudo 抛出随机的“侮辱”

sudo visudo 修改 sudo 配置文件,然后添加以下行:

Defaults   insults

修改后,你可以故意输错密码,测试新的设置。

你可能在想,谁会喜欢被侮辱呢?只有粉丝可以以直白的方式告诉你 ?

你是如何运用 sudo 的?

我知道定制化的可能性无穷无尽,但其实,一般的 Linux 用户并不会去自定义 sudo

尽管如此,我还是热衷于与你分享这些因为你可能会发现一些新奇且实用的东西。

? 那么,你有发现什么新的东西吗?请在评论区告诉我。你有一些秘密的 sudo 技巧欢迎和大家分享!

(题图:DA/a12900e5-e197-455e-adfc-0b52e4305b91)


via: https://itsfoss.com/sudo-tips/

作者:Abhishek Prakash 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

下面将引导你安装和使用 Jami,让你对其工作原理和你能从中获取的内容有更深入的理解。

不管你是为了联系亲爱的人,还是为了职业需求与同事/团队沟通,一个安全的通讯平台都是大家的需求。Jami 就是其中一款通讯平台,利用分布式网络来实现视频通话、文件分享、聊天等功能全都不经过服务器。

这个工具完全免费且开源,具有多样的功能。

然而,它的表现如何呢?用户体验会好么?使用体验能像其他已有的专有平台那么流畅么?或者,你能在手机上使用吗?

在这篇文章里,我们将仔细研究 Jami。我们试用了一下以助你作出更明智的决定。

Jami 的特性

对很多用户来说,体验的好坏取决于功能的全面性。

所以,在深入研究 Jami 之前,让我概述一下,你可以期待从它得到什么样的功能:

  • 即时发送消息
  • 群聊
  • 视频会议
  • 音频通话
  • 音频和视频信息
  • 屏幕共享
  • 文件分享
  • 增强功能的扩展
  • 作为 SIP(会话启动协议)客户端

看起来,Jami 是一款在考虑分布式解决方案时值得考虑的全能选项。

听上去挺刺激的,对吧?

那我们现在就来细看一下,看看它是如何工作的,以及我们能从中获得什么。

使用 Jami 的入门步骤

在 Ubuntu 22.04 LTS 上通过 deb 包安装 Jami

在你的系统上安装 Jami 是相当简单的。

你可以直接从它的网站下载最新的官方版本,或者直接在你的包管理器中(对于 Linux)搜索它。

它可以跨平台使用,包括:Linux、Windows、macOS、安卓和 iOS。

对于安卓用户,你可以在 Play Store 或 F-Droid 中安装。至本文撰写之时,Jami 支持所有最新和最棒的操作系统版本,所以,从这个层面上看,它的维护工作做得相当好。

在安装完成之后,就开始了注册过程。不像其他一些平台,它并不需要任何私人信息,只需要你创建一个你喜欢的独特用户名。

完成之后,你只需要把这个用户名与其他用户分享,就可以开始对话了。你也可以展现出 QR 码让其他人连接你。就是这么简单。

在注册时,你可以选择加密你的帐户,以在设备上保护它,并自定义显示名。

使用 Jami 作为通讯平台

使用这类平台时,我们的首要关心点通常是发送 / 接收消息的响应速度,以及语音 / 视频通话的质量。

好消息是:使用体验快捷顺畅。不管你是要发送一个视频信息,进行一个音频通话,还是发送文本,Jami 都像你想象的一样响应灵敏。

当我们谈及 用户界面,每个人的看法可能都会不同。我发现它的用户界面简明扼要,干净利落。

然而,当你调窄应用窗口的宽度时,事情可能会有所不同。它失去了适应较小尺寸的能力,忽视了重要的元素,甚至难以顺畅地访问设置,这降低了使用体验。

不要误会,你仍可以正常导航至所有选项。然而,体验感会显得有些生硬。

当把 Jami 的窗口缩小时,我点击了“ 设置 Settings ”,结果直接进入了“ 账户管理 Manage Account ”选项,而没有给我任何下拉菜单,也没有为我打开“ 账户 Accounts ”/“ 一般 General ”或“ 音频/视频 Audio/Video ”部分。

假设我想要进入“音频/视频”设置,我就会进入账户设置。接下来,我需要再次导航到其他设置。这并不是一个让人感到方便的体验。

如果你不会经常调小 Jami 的窗口,或者你更喜欢大一点的窗口,那么你应该不会遇到此类问题。总结一下,如果你希望所有东西都有现代化的设计风格,那它可能会有些失望。

当你第一次发送/接收文本或通话时,会被视作一次邀请。一旦你接受了邀请,用户就会出现在你的会话列表中。

发送短信,添加新朋友的体验是无缝连接的,我没有遇到任何问题。

? 在撰写本文时进行的最新版本测试中,我无法关闭捐款消息。我答复的同事也遇到这个问题。

在信息中,你会有标记“正在输入中”的提示,你也可以回复一个特定的消息,用一个表情符号做出反应,附加文件,或发送语音或者视频消息。

这些消息都可以被编辑和删除。

上面的对话截图是一个通过选择多个用户创建的群聊。

这样,当你创建这样的群聊时,一个新的邀请会被发送到用户那里,这是好的(不是强制他们加入群聊)。如果他们接受了邀请,他们就能加入你创建的群聊。

默认情况下,创建群组的设备将会默认承载群组内的任何音频 / 视频通话。

如果你连接的账户有多个设备,你可以选择你想要作为主机的那个设备。

通话体验有些不尽人意,具体来说,音频通话体验十分出色,音频清晰。

然而,视频通话的音频方面就有些令人失望。

当然了,用直连的方式,视频质量会严重依赖网络连接,然而,和网络连接相比,我们得到的质量并没有那么好。(主机是我,网速是 200 Mbps)。

视频质量可能是由于优化不佳或网络不佳导致的,但是,双方的音频并不清晰,音量在整个通话中都在上下波动。

虽然我的一些同事能分享他们的屏幕,但是在带有 AMD Radeon 集成 GPU 的 Ubuntu 22.04 LTS 上,应用崩溃了。

默认情况下,你无法添加绿幕效果,这和一些专有的视频通话应用不同。然而,你可以安装扩展增加此类功能。

另外,为了增强你的体验,你可以调整通话设置,包括自动接听电话,将你的账户作为接入点,切换正在输入中的指示等。

总结

如果 Jami 能在现代化用户界面这方面投入更多努力,那么它应该能成为像微软 Teams、Slack 和 Zoom 这样的应用的热门选择。

当然了,因为 P2P 连接原因,视频质量可能不如其他专有选项那么稳定。但在音频通话、视频/音频信息、文字输入、文件发送等方面你应该不会有任何问题,同时享受私密的通讯体验。

总的来说,Jami 为你提供了所有基本的需求,在一个更快的体验上提供了基本的用户界面。

探究 Jami

它可能不能给你最好的用户体验,但是考虑到它在分布式网络连接、开源应用和隐私保护方面的优势,对于注重隐私的用户来说,它仍是个极好的选择。

(题图:DA/26649e6b-a4b6-4591-a5c1-ecac982529a9)


via: https://itsfoss.com/jami/

作者:Ankush Das 选题:lujun9972 译者:译者ID 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

1 1/4 的 Java 应用程序仍受 Log4Shell 影响

在基于 Java 的开源日志实用程序 Log4j 中的 Log4Shell 漏洞被披露两年后,大约 1/4 的应用程序仍依赖于过时的存在漏洞的库。安全商店 Veracode 的研究显示,绝大多数存在漏洞的应用程序在开发人员实施了 Log4j 库后可能从未更新过该库,32% 的应用程序运行的是 2015 年之前的 EOL 版本。之前的调查还显示,79% 的开发人员在首次将第三方库引入项目后从未更新过这些库。仅有约 3.8% 的用户在运行不会受到 Log4Shell 攻击的 2.17 版,但此版本也存在容易受到远程代码执行攻击的漏洞。

(插图:DA/235f50dd-5052-4072-a5cd-21f0edbdccbb)

消息来源:The Register
老王点评:都是程序能跑就不动,除非不动程序员就得跑路。

2 OpenAI 的非营利部分去年收入仅 4.5 万美元

OpenAI Inc. 于 2015 年作为非营利组织成立,2019 年推出了所谓的上限营利实体 OpenAI Global LLC。尽管私人投资者对 OpenAI 的估值高达 860 亿美元,但据 OpenAI 向美国国税局提交的 990 报告,OpenAI 在 2022 年的收入仅为 44485 美元,几乎全部来自投资收入。OpenAI 上一次提交该报告是在 2017 年,当时的收入为 3320 万美元。OpenAI 没有披露其营利部门的收入,不过据 The Information 在 8 月份的报道,OpenAI 去年的收入为 2800 万美元,到 2023 年可能将接近 10 亿美元。

(插图:DA/57a3a326-5f52-4188-986f-721a423c6e78)

消息来源:CNBC
老王点评:异想天开的治理结构终究不能共富贵。

3 被博通收购的 VMware 将变成订阅制

VMware 宣布转向订阅模式,停止销售 VMware 的内部部署永久许可证,也一并终止了支持和订阅服务的续订销售。之前,VMware 的客户可以购买内部部署永久许可证,而支持和订阅续订服务可以单独提供支持和软件更新。VMware 称,客户可以继续使用具有有效合同的永久许可证产品。永久许可证永不过期,但停止销售支持和订阅续订服务,这意味着不愿转向其他许可模式的客户将得不到支持或更新。

(插图:DA/fac939a2-2e00-4c37-9e5a-70165794c6d0)

消息来源:The Stack
老王点评:改成订阅制就能让 VMware 变好吗?

Bash 并不是唯一可供选择的 Shell。还存在数量众多的 Shell,它们都有一些独特的特性,例如 Zsh、Fish、Ksh 和 Xonsh

在你的系统中,你可以同时安装多个 Shell。

要想将另一个 Shell 设为默认值,你可以按照以下方式使用 chsh 命令:

chsh -s path_to_binary_of_shell

如需找到 Shell 的二进制路径,你可以查看 /etc/shells 文件的内容。另外,你也可使用以下自动获取所需 Shell 二进制路径的命令:

chsh -s $(which new_shell)

接下来,让我们详细了解一下如何确定并更改 Shell。

我现在用的是哪个 Shell?

有很多方法可以帮你找出当前使用的是哪个 Shell,虽然专家可能会辩论这些方法的准确度。

最常用的,也是最简单的方式是:

echo $0

$0 是一个特别的 Shell 变量,这可以获取你正在使用的 Shell 或 Shell 脚本的名称(如果你在脚本中使用了它)。

你还可以使用下面的命令检查进程:

ps -p $

其中,$ 代表的是当前进程 / Shell 的进程 ID。

如何安装另一个 Shell?

和其他软件包一样,大部分知名 Shell,例如 Fish 和 Zsh,都可以直接从你的发行版软件仓库中下载安装。新的,相对小众的 Shell,例如 Xonsh,可能就需要不同的安装步骤了。你可以在它们的项目网页上找到具体的安装指南。

比如,你想 在 Ubuntu 上安装 Zsh,那么可以使用以下命令:

sudo apt install zsh

如何更改当前的 Shell?

假设你已经安装了另一个 Shell,那么我们来看一看如何切换过去。

实际上,你只需要输入新 Shell 的名称即可。比方说,你想切换到 Zsh,那就输入:

zsh

若要退出当前的 Shell,只需输入 exit 即可,你会回到你的默认 Shell。

如何查看默认的 Shell 是哪个?

有一个 SHELL 的环境变量,它可以告诉你当前账户的默认 Shell 是哪个:

echo $SHELL

举个例子,我切换到了 Zsh。此时,当前 Shell 显示的信息是 zsh,而默认 Shell 依然显示为 bash

这说明更改 Shell 并不会改变默认的 Shell。也就是说,下次你再次登录到该终端或系统,你还会返回到旧的默认 Shell,而不是新的 Shell。

如何知道系统中可用的 Shell 有哪些?

你可以通过查看 /etc/shells 文件,来了解系统中具有哪些可用的 Shell:

cat /etc/shells

下面就是我当前系统中所有可用的 Shell:

如何更改默认的 Shell?

/etc/shells 文件的内容显示了所有可用 Shell 的二进制文件位置。你需要将它与 chsh 命令一起使用。

假设我想让 Zsh 成为默认的 Shell,我可以输入:

chsh -s /usr/bin/zsh

更改后,你需要重新登入才能看到变化。

请注意,以上操作只会更改当前用户的默认 Shell。如果你是管理员,并且想更改其他用户的默认 Shell,那么你可以使用以下命令:

sudo chsh -s /usr/bin/zsh other_username

结论

Linux 的一大特色就是,用户可以自主选择。你完全可以根据自己的需要进行更改。这就是另一个例子,你不必局限于发行版提供的默认 Shell 的选择。你很欢迎自选一款 Shell,让你的工作变得更顺手。最后,祝你使用愉快 ?

(题图:DA/cf9b865d-2b98-4ada-88df-de1d1839aba1)


via: https://itsfoss.com/linux-change-default-shell/

作者:Abhishek Prakash 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出