如你所知，用户可以在 Ubuntu 系统上使用 sudo 权限执行任何管理任务。在 Linux 机器上创建新用户时，他们无法执行任何管理任务，直到你将其加入 sudo 组的成员。在这个简短的教程中，我们将介绍如何将普通用户添加到 sudo 组以及移除给定的权限，使其成为普通用户。在 Linux 上向普通用户授予 sudo 权限通常，我们使用 adduser 命令创建新用户，如下所示。$ sudo adduser ostechnix如果你希望新创建的用户使用 sudo 执行管理任务，只需使用以下命令将它添加到 sudo 组：$ sudo usermod -a -G sudo hduser上面的命令将使名为 ostechnix 的用户成为 sudo 组的成员。你也可以使用此命令将用户添加到 sudo 组。$ sudo adduser ostechnix sudo现在，注销并以新用户身份登录，以使此更改生效。此时用户已成为管理用户。要验证它，只需在任何命令中使用 sudo 作为前缀。$ sudo mkdir /test [sudo] password for ostechnix:移除用户的 sudo 权限有时，你可能希望移除特定用户的 sudo 权限，而不用在 Linux 中删除它。要将任何用户设为普通用户，只需将其从 sudo 组中删除即可。比如说如果要从 sudo 组中删除名为 ostechnix 的用户，只需运行：$ sudo deluser ostechnix sudo示例输出：Removing user `ostechnix' from group `sudo' ... Done.此命令仅从 sudo 组中删除用户 ostechnix，但不会永久地从系统中删除用户。现在，它成为了普通用户，无法像 sudo 用户那样执行任何管理任务。此外，你可以使用以下命令撤消用户的 sudo 访问权限：$ sudo gpasswd -d ostechnix sudo从 sudo 组中删除用户时请小心。不要从 sudo 组中删除真正的管理员。使用命令验证用户 ostechnix 是否已从 sudo 组中删除：$ sudo -l -U ostechnix User ostechnix is not allowed to run sudo on ubuntuserver.是的，用户 ostechnix 已从 sudo 组中删除，他无法执行任何管理任务。从 sudo 组中删除用户时请小心。如果你的系统上只有一个 sudo 用户，并且你将他从 sudo 组中删除了，那么就无法执行任何管理操作，例如在系统上安装、删除和更新程序。所以，请小心。在我们的下一篇教程中，我们将解释如何恢复用户的 sudo 权限。就是这些了。希望这篇文章有用。还有更多好东西。敬请期待！干杯!via: https://www.ostechnix.com/how-to-grant-and-remove-sudo-privileges-to-users-on-ubuntu/作者：SK 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
每个 Linux 游戏玩家都绝不想要的恼人体验
（LCTT 译注：本文原文发表于 2016 年，可能有些信息已经过时。）在 Linux 平台上玩游戏 并不是什么新鲜事，现在甚至有专门的 Linux 游戏发行版，但是这不意味着在 Linux 上打游戏的体验和在 Windows 上一样顺畅。为了确保我们和 Windows 用户同样地享受游戏乐趣，哪些问题是我们应该考虑的呢？Wine、PlayOnLinux 和其它类似软件不总是能够让我们玩所有流行的 Windows 游戏。在这篇文章里，我想讨论一下为了拥有最好的 Linux 游戏体验所必须处理好的若干因素。1 SteamOS 是开源平台，但 Steam for Linux 并不是正如 StemOS 主页所说， 即便 SteamOS 是一个开源平台，但 Steam for Linux 仍然是专有的软件。如果 Steam for Linux 也开源，那么它从开源社区得到的支持将会是巨大的。既然它不是，那么 Ascension 计划的诞生自然是不可避免的：Ascension 是一个开源的游戏启动器，旨在能够启动从任何平台购买、下载的游戏。这些游戏可以是 Steam 平台的、Origin 游戏平台的、Uplay 平台的，以及直接从游戏开发者主页下载的，或者来自 DVD、CD-ROM 的。Ascension 计划的开端是这样：某个观点的分享激发了一场与游戏社区读者之间有趣的讨论，在这场讨论中读者们纷纷发表了自己的观点并给出建议。2 与 Windows 平台的性能比较在 Linux 平台上运行 Windows 游戏并不总是一件轻松的任务。但是得益于一个叫做 CSMT（多线程命令流）的特性，尽管离 Windows 级别的性能还有相当长的路要走，PlayOnLinux 现在依旧可以更好地解决这些性能方面的问题。Linux 对游戏的原生支持在过去发行的游戏中从未尽如人意。去年，有报道说 SteamOS 比 Windows 在游戏方面的表现要差得多。古墓丽影去年在 SteamOS 及 Steam for Linux 上发行，然而其基准测试的结果与 Windows 上的性能无法抗衡。这明显是因为游戏是基于 DirectX 而不是 OpenGL 开发的缘故。古墓丽影是第一个使用 TressFX 的游戏。下面这个视频包涵了 TressFX 的比较：下面是另一个有趣的比较，它显示出使用 Wine + CSMT 带来的游戏性能比 Steam 上原生的 Linux 版游戏带来的游戏性能要好得多！这就是开源的力量！以防 FPS 损失，TressFX 已经被关闭。以下是另一个有关在 Linux 上最新发布的 “Life is Strange” 在 Linux 与 Windows 上的比较：Steam for Linux 开始在这个新游戏上展示出比 Windows 更好的游戏性能，这是一件好事。在发布任何 Linux 版的游戏前，开发者都应该考虑优化游戏，特别是基于 DirectX 并需要进行 OpenGL 转制的游戏。我们十分希望 Linux 上的 杀出重围：人类分裂 Deus Ex: Mankind Divided 在正式发行时能有一个好的基准测试结果。由于它是基于 DirectX 的游戏，我们希望它能良好地移植到 Linux 上。该游戏执行总监说过这样的话。3 专有的 NVIDIA 驱动相比于 NVIDIA，AMD 对于开源的支持绝对是值得称赞的。尽管 AMD 因其更好的开源驱动在 Linux 上的驱动支持挺不错，而 NVIDIA 显卡用户由于开源版本的 NVIDIA 显卡驱动 “Nouveau” 有限的能力，仍不得不用专有的 NVIDIA 驱动。曾经，Linus Torvalds 大神也分享过他关于“来自 NVIDIA 的 Linux 支持完全不可接受”的想法。你可以在这里观看完整的谈话，尽管 NVIDIA 回应 承诺更好的 Linux 平台支持，但其开源显卡驱动仍如之前一样毫无起色。4 需要 Linux 平台上的 Uplay 和 Origin 的 DRM 支持以上的视频描述了如何在 Linux 上安装 Uplay DRM。视频上传者还建议说并不推荐使用 Wine 作为 Linux 上的主要的应用和游戏支持软件。相反，更鼓励使用原生的应用。以下视频是一个关于如何在 Linux 上安装 Origin DRM 的教程。数字版权管理（DRM）软件给游戏运行又加了一层阻碍，使得在 Linux 上良好运行 Windows 游戏这一本就充满挑战性的任务更有难度。因此除了使游戏能够运行之外，W.I.N.E 不得不同时负责运行像 Uplay 或 Origin 之类的 DRM 软件。如果能像 Steam 一样，Linux 也能够有自己原生版本的 Uplay 和 Origin 那就好了。5 DirectX 11 对于 Linux 的支持尽管我们在 Linux 平台上有可以运行 Windows 应用的工具，每个游戏为了能在 Linux 上运行都带有自己的配套调整需求。尽管去年在 Code Weavers 有一篇关于 DirectX 11 对于 Linux 的支持 的公告，在 Linux 上畅玩新发大作仍是长路漫漫。现在你可以从 Codweavers 购买 Crossover 以获得可得到的最佳 DirectX 11 支持。这个在 Arch Linux 论坛上的频道清楚展现了将这个梦想成真需要多少的努力。以下是一个 Reddit 频道 上的有趣 发现。这个发现提到了来自 Codeweavers 的 DirectX 11 补丁，现在看来这无疑是好消息。6 不是全部的 Steam 游戏都可跑在 Linux 上随着 Linux 游戏玩家一次次错过主要游戏的发行，这是需要考虑的一个重点，因为大部分主要游戏都在 Windows 上发行。这是如何在 Linux 上安装 Windows 版的 Steam 的教程。7 游戏发行商对 OpenGL 更好的支持目前开发者和发行商主要着眼于用 DirectX 而不是 OpenGL 来开发游戏。现在随着 Steam 正式登录 Linux，开发者应该同样考虑在 OpenGL 下开发。Direct3D 仅仅是为 Windows 平台而打造。而 OpenGL API 拥有开放性标准，并且它不仅能在 Windows 上同样也能在其它各种各样的平台上实现。尽管是一篇很老的文章，但这个很有价值的资源分享了许多有关 OpenGL 和 DirectX 现状的很有想法的信息。其所提出的观点确实十分明智，基于按时间排序的事件也能给予读者启迪。在 Linux 平台上发布大作的发行商绝不应该忽视一个事实：在 OpenGL 下直接开发游戏要比从 DirectX 移植到 OpenGL 合算得多。如果必须进行平台转制，移植必须被仔细优化并谨慎研究。发布游戏可能会有延迟，但这绝对值得。有更多的烦恼要分享？务必在评论区让我们知道。via: https://itsfoss.com/linux-gaming-problems/作者：Avimanyu Bandyopadhyay 译者：tomjlw 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
不，你不需要 Emacs 也能用 Org，这是我开源工具系列的第 16 集，将会让你在 2019 年变得更加有生产率。每到年初似乎总有这么一个疯狂的冲动来寻找提高生产率的方法。新年决心，正确地开始一年的冲动，以及“向前看”的态度都是这种冲动的表现。软件推荐通常都会选择闭源和专利软件。但这不是必须的。这是我 2019 年改进生产率的 19 个新工具中的第 16 个。Org (非 Emacs)Org 模式 (或者就称为 Org) 并不是新鲜货，但依然有许多人没有用过。他们很乐意试用一下以体验 Org 是如何改善生产率的。但最大的障碍来自于 Org 是与 Emacs 相关联的，而且很多人都认为两者缺一不可。并不是这样的！一旦你理解了其基础，Org 就可以与各种其他工具和编辑器一起使用。Org，本质上，是一个结构化的文本文件。它有标题、子标题，以及各种关键字，其他工具可以根据这些关键字将文件解析成日程表和代办列表。Org 文件可以被任何纯文本编辑器编辑（例如，Vim、Atom 或 Visual Studio Code），而且很多编辑器都有插件可以帮你创建和管理 Org 文件。一个基础的 Org 文件看起来是这样的：* Task List ** TODO Write Article for Day 16 - Org w/out emacs DEADLINE: <2019-01-25 12:00> *** DONE Write sample org snippet for article - Include at least one TODO and one DONE item - Show notes - Show SCHEDULED and DEADLINE *** TODO Take Screenshots ** Dentist Appointment SCHEDULED: <2019-01-31 13:30-14:30>Org 是一种大纲格式，它使用 * 作为标识指明事项的级别。任何以 TODO（是的，全大些）开头的事项都是代办事项。标注为 DONE 的工作表示该工作已经完成。SCHEDULED 和 DEADLINE 标识与该事务相关的日期和时间。如何任何地方都没有时间，则该事务被视为全天活动。使用正确的插件，你喜欢的文本编辑器可以成为一个充满生产率和组织能力的强大工具。例如，vim-orgmode 插件包括创建 Org 文件、语法高亮的功能，以及各种用来生成跨文件的日程和综合代办事项列表的关键命令。Atom 的 Organized 插件可以在屏幕右边添加一个侧边栏，用来显示 Org 文件中的日程和代办事项。默认情况下它从配置项中设置的路径中读取多个 Org 文件。Todo 侧边栏允许你通过点击未完事项来将其标记为已完成，它会自动更新源 Org 文件。还有一大堆 Org 工具可以帮助你保持生产率。使用 Python、Perl、PHP、NodeJS 等库，你可以开发自己的脚本和工具。当然，少不了 Emacs，它的核心功能就包括支持 Org。Org 模式是跟踪需要完成的工作和时间的最好工具之一。而且，与传闻相反，它无需 Emacs，任何一个文本编辑器都行。via: https://opensource.com/article/19/1/productivity-tool-org-mode作者：Kevin Sonney 选题：lujun9972 译者：lujun9972 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
看一下 less、Antiword 和 odt2xt 这三个实用程序，它们都可以在终端中查看文件。我常说，你不需要使用命令行也可以高效使用 Linux —— 我知道许多 Linux 用户从不打开终端窗口，并且也用的挺好。然而，即使我不认为自己是一名技术人员，我也会在命令行上花费大约 20% 的计算时间，包括操作文件、处理文本和使用实用程序。我经常在终端窗口中做的一件事是查看文件，无论是文本还是需要用到文字处理器的文件。有时使用命令行实用程序比启动文本编辑器或文字处理器更容易。下面是我在命令行中用来查看文件的三个实用程序。lessless 的美妙之处在于它易于使用，它将你正在查看的文件分解为块（或页面），这使得它们更易于阅读。你可以使用它在命令行查看文本文件，例如 README、HTML 文件、LaTeX 文件或其他任何纯文本文件。我在上一篇文章中介绍了 less。要使用 less，只需输入：less file_name通过按键盘上的空格键或 PgDn 键向下滚动文件，按 PgUp 键向上移动文件。要停止查看文件，按键盘上的 Q 键。AntiwordAntiword 是一个很好地实用小程序，你可以使用它将 Word 文档转换为纯文本。只要你想，还可以将它们转换为 PostScript 或 PDF。在本文中，让我们继续使用文本转换。Antiword 可以读取和转换 Word 2.0 到 2003 版本创建的文件（LCTT 译注：此处疑为 Word 2000，因为 Word 2.0 for DOS 发布于 1984 年，而 WinWord 2.0 发布于 1991 年，都似乎太老了）。它不能读取 DOCX 文件 —— 如果你尝试这样做，Antiword 会显示一条错误消息，表明你尝试读取的是一个 ZIP 文件。这在技术上说是正确的，但仍然令人沮丧。要使用 Antiword 查看 Word 文档，输入以下命令：antiword file_name.docAntiword 将文档转换为文本并显示在终端窗口中。不幸的是，它不能在终端中将文档分解成页面。不过，你可以将 Antiword 的输出重定向到 less 或 more 之类的实用程序，一遍对其进行分页。通过输入以下命令来执行此操作：antiword file_name.doc | less如果你是命令行的新手，那么我告诉你 | 称为管道。这就是重定向。odt2txt作为一个优秀的开源公民，你会希望尽可能多地使用开放格式。对于你的文字处理需求，你可能需要处理 ODT 文件（由诸如 LibreOffice Writer 和 AbiWord 等文字处理器使用）而不是 Word 文件。即使没有，也可能会遇到 ODT 文件。而且，即使你的计算机上没有安装 Writer 或 AbiWord，也很容易在命令行中查看它们。怎样做呢？用一个名叫 odt2txt 的实用小程序。正如你猜到的那样，odt2txt 将 ODT 文件转换为纯文本。要使用它，运行以下命令：odt2txt file_name.odt与 Antiword 一样，odt2txt 将文档转换为文本并在终端窗口中显示。和 Antiword 一样，它不会对文档进行分页。但是，你也可以使用以下命令将 odt2txt 的输出管道传输到 less 或 more 这样的实用程序中：odt2txt file_name.odt | more你有一个最喜欢的在命令行中查看文件的实用程序吗？欢迎留下评论与社区分享。via: https://opensource.com/article/19/2/view-files-command-line作者：Scott Nesbitt 选题：lujun9972 译者：MjSeven 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
十多年来，我一直都是 GNU-Linux 以及 Debian 的用户。随着我越来越频繁的使用桌面环境，我发现对我来说除了少数基于 web 的服务以外我的大多数需求都可以通过 Debian 软件库里自带的桌面应用解决。我的需求之一就是进行单位换算。尽管有很多很多在线服务可以做这件事，但是我还是需要一个可以在桌面环境使用的应用。这主要是因为隐私问题以及我不想一而再再而三的寻找在线服务做事。为此我搜寻良久，直到找到 Qalculate!。Qalculate! 最强多功能计算器应用这是 aptitude 上关于 Qalculate! 的介绍，我没法总结的比他们更好了：强大易用的桌面计算器 - GTK+ 版Qalculate! 是一款外表简单易用，内核强大且功能丰富的应用。其功能包含自定义函数、单位、高计算精度、作图以及可以输入一行表达式（有容错措施）的图形界面（也可以选择使用传统按钮）。这款应用也发行过 KDE 的界面，但是至少在 Debian Testing 软件库里，只出现了 GTK+ 版的界面，你也可以在 GitHub 上的这个仓库里面看到。不必多说，Qalculate! 在 Debian 的软件源内处于可用状态，因此可以使用 apt 命令或者是基于 Debian 的发行版比如 Ubuntu 提供的软件中心轻松安装。在 Windows 或者 macOS 上也可以使用这款软件。Qalculate! 特性一览列出全部的功能清单会有点长，请允许我只列出一部分功能并使用截图来展示极少数 Qalculate! 提供的功能。这么做是为了让你熟悉 Qalculate! 的基本功能，并在之后可以自由探索 Qalculate! 到底还能干什么。代数微积分组合数学复数数据集日期与时间经济学对数和指数几何逻辑学向量和矩阵杂项数论统计学三角学使用 Qalculate!Qalculate! 的使用不是很难。你甚至可以在里面写简单的英文。但是我还是推荐先阅读手册以便充分发挥 Qalculate! 的潜能。qalc 是 Qalculate! 的命令行版你也可以使用 Qalculate! 的命令行版 qalc：$ qalc 62499836 byte to gibibyte 62499836 * byte = approx. 0.058207508 gibibyte $ qalc 40 degree celsius to fahrenheit (40 * degree) * celsius = 104 deg*oFQalculate! 的命令行界面可以让不喜欢 GUI 而是喜欢命令行界面（CLI）或者是使用无头结点（没有 GUI）的人可以使用 Qalculate!。这些人大多是在服务器环境下工作。如果你想要在脚本里使用这一软件的话，我想 libqalculate 是最好的解决方案。看一看 qalc 以及 qalculate-gtk 是如何依赖于它工作的就足以知晓如何使用了。再提一嘴，你还可以了解下如何根据一系列数据绘图，其他应用方式就留给你自己发掘了。不要忘记查看 /usr/share/doc/qalculate/index.html 以获取 Qalculate! 的全部功能。注释：注意 Debian 更喜欢 gnuplot，因为其输出的图片很精美。附加技巧：你可以通过在 Debian 下通过命令行感谢开发者如果你使用 Debian 而且喜欢哪个包的话，你可以使用如下命令感谢 Debian 下这个软件包的开发者或者是维护者：reportbug --kudos $PACKAGENAME因为我喜欢 Qalculate!，我想要对 Debian 的开发者以及维护者 Vincent Legout 的卓越工作表示感谢：reportbug --kudos qalculate建议各位阅读我写的关于如何使用报错工具在 Debian 中上报 BUG的详细指南。一位高分子化学家对 Qalculate! 的评价经由作者 Philip Prado，我们联系上了 Timothy Meyers 先生，他目前是在高分子实验室工作的高分子化学家。他对 Qaclulate! 的专业评价是：看起来几乎任何科学家都可以使用这个软件，因为如果你知道指令以及如何使其生效的话，几乎任何数据计算都可以使用这个软件计算。我觉得这个软件少了些物理常数，但我想不起来缺了哪些。我觉得它没有太多有关流体动力学的东西，再就是少了点部分化合物的光吸收)系数，但这些东西只对我这个化学家来说比较重要，我不知道这些是不是对别人来说也是特别必要的。自由能可能也是。最后，我分享的关于 Qalculate! 的介绍十分简陋，其实际功能与你的需要以及你的想象力有关系。希望你能喜欢 Qalculate!via: https://itsfoss.com/qalculate/作者：Shirish 选题：lujun9972 译者：name1e5s 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在 Linux 系统中判断安装、使用了多少内存
有几个命令可以报告在 Linux 系统上安装和使用了多少内存。根据你使用的命令，你可能会被细节淹没，也可能获得快速简单的答案。在 Linux 系统中有很多种方法获取有关安装了多少内存的信息及查看多少内存正在被使用。有些命令提供了大量的细节，而其他命令提供了简洁但不一定易于理解的答案。在这篇文章中，我们将介绍一些查看内存及其使用状态的有用的工具。在我们开始之前，让我们先来回顾一些基础知识。物理内存和虚拟内存并不是一回事。后者包括配置为交换空间的磁盘空间。交换空间可能包括为此目的特意留出来的分区，以及在创建新的交换分区不可行时创建的用来增加可用交换空间的文件。有些 Linux 命令会提供关于两者的信息。当物理内存占满时，交换空间通过提供可以用来存放内存中非活动页的磁盘空间来扩展内存。/proc/kcore 是在内存管理中起作用的一个文件。这个文件看上去是个普通文件（虽然非常大），但它并不占用任何空间。它就像其他 /proc 下的文件一样是个虚拟文件。$ ls -l /proc/kcore -r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore有趣的是，下面查询的两个系统并没有安装相同大小的内存，但 /proc/kcore 的大小却是相同的。第一个系统安装了 4 GB 的内存，而第二个系统安装了 6 GB。system1$ ls -l /proc/kcore -r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore system2$ ls -l /proc/kcore -r-------- 1 root root 140737477881856 Feb 5 13:00 /proc/kcore一种不靠谱的解释说这个文件代表可用虚拟内存的大小（没准要加 4 KB），如果这样，这些系统的虚拟内存可就是 128TB 了！这个数字似乎代表了 64 位系统可以寻址多少内存，而不是当前系统有多少可用内存。在命令行中计算 128 TB 和这个文件大小加上 4 KB 很容易。$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128 140737488355328 $ expr 1024 \* 1024 \* 1024 \* 1024 \* 128 + 4096 140737488359424另一个用来检查内存的更人性化的命令是 free。它会给出一个易于理解的内存报告。$ free total used free shared buff/cache available Mem: 6102476 812244 4090752 13112 1199480 4984140 Swap: 2097148 0 2097148使用 -g 选项，free 会以 GB 为单位返回结果。$ free -g total used free shared buff/cache available Mem: 5 0 3 0 1 4 Swap: 1 0 1使用 -t 选项，free 会显示与无附加选项时相同的值（不要把 -t 选项理解成 TB），并额外在输出的底部添加一行总计数据。$ free -t total used free shared buff/cache available Mem: 6102476 812408 4090612 13112 1199456 4983984 Swap: 2097148 0 2097148 Total: 8199624 812408 6187760当然，你也可以选择同时使用两个选项。$ free -tg total used free shared buff/cache available Mem: 5 0 3 0 1 4 Swap: 1 0 1 Total: 7 0 5如果你尝试用这个报告来解释“这个系统安装了多少内存？”，你可能会感到失望。上面的报告就是在前文说的装有 6 GB 内存的系统上运行的结果。这并不是说这个结果是错的，这就是系统对其可使用的内存的看法。free 命令也提供了每隔 X 秒刷新显示的选项（下方示例中 X 为 10）。$ free -s 10 total used free shared buff/cache available Mem: 6102476 812280 4090704 13112 1199492 4984108 Swap: 2097148 0 2097148 total used free shared buff/cache available Mem: 6102476 812260 4090712 13112 1199504 4984120 Swap: 2097148 0 2097148使用 -l 选项，free 命令会提供高低内存使用信息。$ free -l total used free shared buff/cache available Mem: 6102476 812376 4090588 13112 1199512 4984000 Low: 6102476 2011888 4090588 High: 0 0 0 Swap: 2097148 0 2097148查看内存的另一个选择是 /proc/meminfo 文件。像 /proc/kcore 一样，这也是一个虚拟文件，它可以提供关于安装或使用了多少内存以及可用内存的报告。显然，空闲内存和可用内存并不是同一回事。MemFree 看起来代表未使用的 RAM。MemAvailable 则是对于启动新程序时可使用的内存的一个估计。$ head -3 /proc/meminfo MemTotal: 6102476 kB MemFree: 4090596 kB MemAvailable: 4984040 kB如果只想查看内存总计，可以使用下面的命令之一：$ awk '/MemTotal/ {print $2}' /proc/meminfo 6102476 $ grep MemTotal /proc/meminfo MemTotal: 6102476 kBDirectMap 将内存信息分为几类。$ grep DirectMap /proc/meminfo DirectMap4k: 213568 kB DirectMap2M: 6076416 kBDirectMap4k 代表被映射成标准 4 k 页的内存大小，DirectMap2M 则显示了被映射为 2 MB 的页的内存大小。getconf 命令将会提供比我们大多数人想要看到的更多的信息。$ getconf -a | more LINK_MAX 65000 _POSIX_LINK_MAX 65000 MAX_CANON 255 _POSIX_MAX_CANON 255 MAX_INPUT 255 _POSIX_MAX_INPUT 255 NAME_MAX 255 _POSIX_NAME_MAX 255 PATH_MAX 4096 _POSIX_PATH_MAX 4096 PIPE_BUF 4096 _POSIX_PIPE_BUF 4096 SOCK_MAXBUF _POSIX_ASYNC_IO _POSIX_CHOWN_RESTRICTED 1 _POSIX_NO_TRUNC 1 _POSIX_PRIO_IO _POSIX_SYNC_IO _POSIX_VDISABLE 0 ARG_MAX 2097152 ATEXIT_MAX 2147483647 CHAR_BIT 8 CHAR_MAX 127 --More--使用类似下面的命令来将其输出精简为指定的内容，你会得到跟前文提到的其他命令相同的结果。$ getconf -a | grep PAGES | awk 'BEGIN {total = 1} {if (NR == 1 || NR == 3) total *=$NF} END {print total / 1024" kB"}' 6102476 kB上面的命令通过将下方输出的第一行和最后一行的值相乘来计算内存。PAGESIZE 4096 <== _AVPHYS_PAGES 1022511 _PHYS_PAGES 1525619 <==自己动手计算一下，我们就知道这个值是怎么来的了。$ expr 4096 \* 1525619 / 1024 6102476显然值得为以上的指令之一设置个 alias。另一个具有非常易于理解的输出的命令是 top 。在 top 输出的前五行，你可以看到一些数字显示多少内存正被使用。$ top top - 15:36:38 up 8 days, 2:37, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 266 total, 1 running, 265 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 3244.8 total, 377.9 free, 1826.2 used, 1040.7 buff/cache MiB Swap: 3536.0 total, 3535.7 free, 0.3 used. 1126.1 avail Mem最后一个命令将会以一个非常简洁的方式回答“系统安装了多少内存？”：$ sudo dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END {print s / 1024 "GB"}' 6GB取决于你想要获取多少细节，Linux 系统提供了许多用来查看系统安装内存以及使用/空闲内存的选择。via: https://www.networkworld.com/article/3336174/linux/how-much-memory-is-installed-and-being-used-on-your-linux-systems.html作者：Sandra Henry-Stocker 选题：lujun9972 译者：leommxj 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
8 个在 KDE Plasma 桌面环境下提高生产力的技巧和提示
众所周知，KDE 的 Plasma 是 Linux 下最强大的桌面环境之一。它是高度可定制的，并且看起来也很棒。当你完成所有的配置工作后，你才能体会到它的所有特性。你能够轻松地配置 Plasma 桌面并且使用它大量方便且节省时间的特性来加速你的工作，拥有一个能够帮助你而非阻碍你的桌面环境。以下这些提示并没有特定顺序，因此你无需按次序阅读。你只需要挑出最适合你的工作流的那几个即可。相关阅读：10 个你应该尝试的最佳 KDE Plasma 应用1、多媒体控制这点不太算得上是一条提示，因为它是很容易被记在脑海里的。Plasma 可在各处进行多媒体控制。当你需要暂停、继续或跳过一首歌时，你不需要每次都打开你的媒体播放器。你能够通过将鼠标移至那个最小化窗口之上，甚至通过锁屏进行控制。当你需要切换歌曲或忘了暂停时，你也不必麻烦地登录再进行操作。2、KRunnerKRunner 是 Plasma 桌面中一个经常受到赞誉的特性。大部分人习惯于穿过层层的应用启动菜单来找到想要启动的程序。当你使用 KRunner 时就不需要这么做。为了使用 KRunner，确保你当前的活动焦点在桌面本身（点击桌面而不是窗口）。然后开始输入你想要启动的应用名称，KRunner 将会带着建议项从你的屏幕顶部自动下拉。在你寻找的匹配项上点击或敲击回车键。这比记住你每个应用所属的类别要更快。3、跳转列表跳转列表功能是最近才被添加进 Plasma 桌面的。它允许你在启动应用时直接跳转至特定的区域或特性部分。因此如果你在菜单栏上有一个应用启动图标，你可以通过右键得到可跳转位置的列表。选择你想要跳转的位置，然后就可以“起飞”了。4、KDE Connect如果你有一个安卓手机，那么 KDE Connect 会为你提供大量帮助。它可以将你的手机连接至你的桌面，由此你可以在两台设备间无缝地共享。通过 KDE Connect，你能够在你的桌面上实时地查看 Android 设备通知。它同时也让你能够从 Plasma 中收发文字信息，甚至不需要拿起你的手机。KDE Connect 也允许你在手机和电脑间发送文件或共享网页。你可以轻松地从一个设备转移至另一设备，而无需烦恼或打乱思绪。5、Plasma VaultsPlasma Vaults 是 Plasma 桌面的另一个新功能。它的 KDE 为加密文件和文件夹提供的简单解决方案。如果你不使用加密文件，此项功能不会为你节省时间。如果你使用，Vaults 是一个更简单的途径。Plasma Vaults 允许你以无 root 权限的普通用户创建加密目录，并通过你的任务栏来管理它们。你能够快速地挂载或卸载目录，而无需外部程序或附加权限。6、Pager 控件配置你的桌面的 pager 控件。它允许你轻松地切换至另三个附加工作区，带来更大的屏幕空间。将控件添加到你的菜单栏上，然后你就可以在多个工作区间滑动切换。每个工作区都与你原桌面的尺寸相同，因此你能够得到数倍于完整屏幕的空间。这就使你能够排布更多的窗口，而不必受到一堆混乱的最小化窗口的困扰。7、创建一个 DockPlasma 以其灵活性和可配置性出名，同时也是它的优势。如果你有常用的程序，你可以考虑将常用程序设置为 OS X 风格的 dock。你能够通过单击启动，而不必深入菜单或输入它们的名字。8、为 Dolphin 添加文件树通过目录树来浏览文件夹会更加简单。Dolphin 作为 Plasma 的默认文件管理器，具有在文件夹窗口一侧，以树的形式展示目录列表的内置功能。为了启用目录树，点击“控制”标签，然后“配置 Dolphin”、“显示模式”、“详细”，最后选择“可展开文件夹”。记住这些仅仅是提示，不要强迫自己做阻碍自己的事情。你可能讨厌在 Dolphin 中使用文件树，你也可能从不使用 Pager，这都没关系。当然也可能会有你喜欢但是此处没列举出来的功能。选择对你有用处的，也就是说，这些技巧中总有一些能帮助你度过日常工作中的艰难时刻。via: https://www.maketecheasier.com/kde-plasma-tips-tricks-improve-productivity/作者：Nick Congleton 译者：cycoe 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在 Linux 上复制文件/文件夹到远程系统？
从一个服务器复制文件到另一个服务器，或者从本地到远程复制是 Linux 管理员的日常任务之一。我觉得不会有人不同意，因为无论在哪里这都是你的日常操作之一。有很多办法都能处理这个任务，我们试着加以概括。你可以挑一个喜欢的方法。当然，看看其他命令也能在别的地方帮到你。我已经在自己的环境下测试过所有的命令和脚本了，因此你可以直接用到日常工作当中。通常大家都倾向 scp，因为它是文件复制的 原生命令 native command 之一。但本文所列出的其它命令也很好用，建议你尝试一下。文件复制可以轻易地用以下四种方法。scp：在网络上的两个主机之间复制文件，它使用 ssh 做文件传输，并使用相同的认证方式，具有相同的安全性。rsync：是一个既快速又出众的多功能文件复制工具。它能本地复制、通过远程 shell 在其它主机之间复制，或者与远程的 rsync 守护进程 daemon 之间复制。pscp：是一个并行复制文件到多个主机上的程序。它提供了诸多特性，例如为 scp 配置免密传输，保存输出到文件，以及超时控制。prsync：也是一个并行复制文件到多个主机上的程序。它也提供了诸多特性，例如为 ssh 配置免密传输，保存输出到 文件，以及超时控制。方式 1：如何在 Linux 上使用 scp 命令从本地系统向远程系统复制文件/文件夹？scp 命令可以让我们从本地系统复制文件/文件夹到远程系统上。我会把 output.txt 文件从本地系统复制到 2g.CentOS.com 远程系统的 /opt/backup 文件夹下。# scp output.txt root@2g.CentOS.com:/opt/backup output.txt 100% 2468 2.4KB/s 00:00从本地系统复制两个文件 output.txt 和 passwd-up.sh 到远程系统 2g.CentOs.com 的 /opt/backup 文件夹下。# scp output.txt passwd-up.sh root@2g.CentOS.com:/opt/backup output.txt 100% 2468 2.4KB/s 00:00 passwd-up.sh 100% 877 0.9KB/s 00:00从本地系统复制 shell-script 文件夹到远程系统 2g.CentOs.com 的 /opt/back 文件夹下。这会连同shell-script 文件夹下所有的文件一同复制到/opt/back 下。# scp -r /home/daygeek/2g/shell-script/ root@:/opt/backup/ output.txt 100% 2468 2.4KB/s 00:00 ovh.sh 100% 76 0.1KB/s 00:00 passwd-up.sh 100% 877 0.9KB/s 00:00 passwd-up1.sh 100% 7 0.0KB/s 00:00 server-list.txt 100% 23 0.0KB/s 00:00方式 2：如何在 Linux 上使用 scp 命令和 Shell 脚本复制文件/文件夹到多个远程系统上？如果你想复制同一个文件到多个远程服务器上，那就需要创建一个如下面那样的小 shell 脚本。并且，需要将服务器添加进 server-list.txt 文件。确保添加成功后，每个服务器应当单独一行。最终，你想要的脚本就像下面这样：# file-copy.sh #!/bin/sh for server in `more server-list.txt` do scp /home/daygeek/2g/shell-script/output.txt root@$server:/opt/backup done完成之后，给 file-copy.sh 文件设置可执行权限。# chmod +x file-copy.sh最后运行脚本完成复制。# ./file-copy.sh output.txt 100% 2468 2.4KB/s 00:00 output.txt 100% 2468 2.4KB/s 00:00使用下面的脚本可以复制多个文件到多个远程服务器上。# file-copy.sh #!/bin/sh for server in `more server-list.txt` do scp /home/daygeek/2g/shell-script/output.txt passwd-up.sh root@$server:/opt/backup done下面结果显示所有的两个文件都复制到两个服务器上。# ./file-cp.sh output.txt 100% 2468 2.4KB/s 00:00 passwd-up.sh 100% 877 0.9KB/s 00:00 output.txt 100% 2468 2.4KB/s 00:00 passwd-up.sh 100% 877 0.9KB/s 00:00使用下面的脚本递归地复制文件夹到多个远程服务器上。# file-copy.sh #!/bin/sh for server in `more server-list.txt` do scp -r /home/daygeek/2g/shell-script/ root@$server:/opt/backup done上述脚本的输出。# ./file-cp.sh output.txt 100% 2468 2.4KB/s 00:00 ovh.sh 100% 76 0.1KB/s 00:00 passwd-up.sh 100% 877 0.9KB/s 00:00 passwd-up1.sh 100% 7 0.0KB/s 00:00 server-list.txt 100% 23 0.0KB/s 00:00 output.txt 100% 2468 2.4KB/s 00:00 ovh.sh 100% 76 0.1KB/s 00:00 passwd-up.sh 100% 877 0.9KB/s 00:00 passwd-up1.sh 100% 7 0.0KB/s 00:00 server-list.txt 100% 23 0.0KB/s 00:00方式 3：如何在 Linux 上使用 pscp 命令复制文件/文件夹到多个远程系统上？pscp 命令可以直接让我们复制文件到多个远程服务器上。使用下面的 pscp 命令复制单个文件到远程服务器。# pscp.pssh -H 2g.CentOS.com /home/daygeek/2g/shell-script/output.txt /opt/backup [1] 18:46:11 [SUCCESS] 2g.CentOS.com使用下面的 pscp 命令复制多个文件到远程服务器。# pscp.pssh -H 2g.CentOS.com /home/daygeek/2g/shell-script/output.txt ovh.sh /opt/backup [1] 18:47:48 [SUCCESS] 2g.CentOS.com使用下面的 pscp 命令递归地复制整个文件夹到远程服务器。# pscp.pssh -H 2g.CentOS.com -r /home/daygeek/2g/shell-script/ /opt/backup [1] 18:48:46 [SUCCESS] 2g.CentOS.com使用下面的 pscp 命令使用下面的命令复制单个文件到多个远程服务器。# pscp.pssh -h server-list.txt /home/daygeek/2g/shell-script/output.txt /opt/backup [1] 18:49:48 [SUCCESS] 2g.CentOS.com [2] 18:49:48 [SUCCESS] 2g.Debian.com使用下面的 pscp 命令复制多个文件到多个远程服务器。# pscp.pssh -h server-list.txt /home/daygeek/2g/shell-script/output.txt passwd-up.sh /opt/backup [1] 18:50:30 [SUCCESS] 2g.Debian.com [2] 18:50:30 [SUCCESS] 2g.CentOS.com使用下面的命令递归地复制文件夹到多个远程服务器。# pscp.pssh -h server-list.txt -r /home/daygeek/2g/shell-script/ /opt/backup [1] 18:51:31 [SUCCESS] 2g.Debian.com [2] 18:51:31 [SUCCESS] 2g.CentOS.com方式 4：如何在 Linux 上使用 rsync 命令复制文件/文件夹到多个远程系统上？rsync 是一个即快速又出众的多功能文件复制工具。它能本地复制、通过远程 shell 在其它主机之间复制，或者在远程 rsync 守护进程 daemon 之间复制。使用下面的 rsync 命令复制单个文件到远程服务器。# rsync -avz /home/daygeek/2g/shell-script/output.txt root@2g.CentOS.com:/opt/backup sending incremental file list output.txt sent 598 bytes received 31 bytes 1258.00 bytes/sec total size is 2468 speedup is 3.92使用下面的 rsync 命令复制多个文件到远程服务器。# rsync -avz /home/daygeek/2g/shell-script/output.txt passwd-up.sh root@2g.CentOS.com:/opt/backup sending incremental file list output.txt passwd-up.sh sent 737 bytes received 50 bytes 1574.00 bytes/sec total size is 2537 speedup is 3.22使用下面的 rsync 命令通过 ssh 复制单个文件到远程服务器。# rsync -avzhe ssh /home/daygeek/2g/shell-script/output.txt root@2g.CentOS.com:/opt/backup sending incremental file list output.txt sent 598 bytes received 31 bytes 419.33 bytes/sec total size is 2.47K speedup is 3.92使用下面的 rsync 命令通过 ssh 递归地复制文件夹到远程服务器。这种方式只复制文件不包括文件夹。# rsync -avzhe ssh /home/daygeek/2g/shell-script/ root@2g.CentOS.com:/opt/backup sending incremental file list ./ output.txt ovh.sh passwd-up.sh passwd-up1.sh server-list.txt sent 3.85K bytes received 281 bytes 8.26K bytes/sec total size is 9.12K speedup is 2.21方式 5：如何在 Linux 上使用 rsync 命令和 Shell 脚本复制文件/文件夹到多个远程系统上？如果你想复制同一个文件到多个远程服务器上，那也需要创建一个如下面那样的小 shell 脚本。# file-copy.sh #!/bin/sh for server in `more server-list.txt` do rsync -avzhe ssh /home/daygeek/2g/shell-script/ root@2g.CentOS.com$server:/opt/backup done上面脚本的输出。# ./file-copy.sh sending incremental file list ./ output.txt ovh.sh passwd-up.sh passwd-up1.sh server-list.txt sent 3.86K bytes received 281 bytes 8.28K bytes/sec total size is 9.13K speedup is 2.21 sending incremental file list ./ output.txt ovh.sh passwd-up.sh passwd-up1.sh server-list.txt sent 3.86K bytes received 281 bytes 2.76K bytes/sec total size is 9.13K speedup is 2.21方式 6：如何在 Linux 上使用 scp 命令和 Shell 脚本从本地系统向多个远程系统复制文件/文件夹？在上面两个 shell 脚本中，我们需要事先指定好文件和文件夹的路径，这儿我做了些小修改，让脚本可以接收文件或文件夹作为输入参数。当你每天需要多次执行复制时，这将会非常有用。# file-copy.sh #!/bin/sh for server in `more server-list.txt` do scp -r $1 root@2g.CentOS.com$server:/opt/backup done输入文件名并运行脚本。# ./file-copy.sh output1.txt output1.txt 100% 3558 3.5KB/s 00:00 output1.txt 100% 3558 3.5KB/s 00:00方式 7：如何在 Linux 系统上用非标准端口复制文件/文件夹到远程系统？如果你想使用非标准端口，使用下面的 shell 脚本复制文件或文件夹。如果你使用了 非标准 Non-Standard 端口，确保像下面 scp 命令那样指定好了端口号。# file-copy-scp.sh #!/bin/sh for server in `more server-list.txt` do scp -P 2222 -r $1 root@2g.CentOS.com$server:/opt/backup done运行脚本，输入文件名。# ./file-copy.sh ovh.sh ovh.sh 100% 3558 3.5KB/s 00:00 ovh.sh 100% 3558 3.5KB/s 00:00如果你使用了 非标准 Non-Standard 端口，确保像下面 rsync 命令那样指定好了端口号。# file-copy-rsync.sh #!/bin/sh for server in `more server-list.txt` do rsync -avzhe 'ssh -p 2222' $1 root@2g.CentOS.com$server:/opt/backup done运行脚本，输入文件名。# ./file-copy-rsync.sh passwd-up.sh sending incremental file list passwd-up.sh sent 238 bytes received 35 bytes 26.00 bytes/sec total size is 159 speedup is 0.58 sending incremental file list passwd-up.sh sent 238 bytes received 35 bytes 26.00 bytes/sec total size is 159 speedup is 0.58via: https://www.2daygeek.com/linux-scp-rsync-pscp-command-copy-files-folders-in-multiple-servers-using-shell-script/作者：Prakash Subramanian 选题：lujun9972 译者：LuuMing 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
了解一款用于对 WiFi 接入点安全进行渗透测试的工具。越来越多的设备通过无线传输的方式连接到互联网，以及，大范围可用的 WiFi 接入点为攻击者攻击用户提供了很多机会。通过欺骗用户连接到虚假的 WiFi 接入点，攻击者可以完全控制用户的网络连接，这将使得攻击者可以嗅探和篡改用户的数据包，将用户的连接重定向到一个恶意的网站，并通过网络发起其他的攻击。为了保护用户并告诉他们如何避免线上的危险操作，安全审计人员和安全研究员必须评估用户的安全实践能力，用户常常在没有确认该 WiFi 接入点为安全的情况下就连接上了该网络，安全审计人员和研究员需要去了解这背后的原因。有很多工具都可以对 WiFi 的安全性进行审计，但是没有一款工具可以测试大量不同的攻击场景，也没有能和其他工具集成得很好的工具。Evil-Twin Framework（ETF）用于解决 WiFi 审计过程中的这些问题。审计者能够使用 ETF 来集成多种工具并测试该 WiFi 在不同场景下的安全性。本文会介绍 ETF 的框架和功能，然后会提供一些案例来说明该如何使用这款工具。ETF 的架构ETF 的框架是用 Python 写的，因为这门开发语言的代码非常易读，也方便其他开发者向这个项目贡献代码。除此之外，很多 ETF 的库，比如 Scapy，都是为 Python 开发的，很容易就能将它们用于 ETF。ETF 的架构（图 1）分为不同的彼此交互的模块。该框架的设置都写在一个单独的配置文件里。用户可以通过 ConfigurationManager 类里的用户界面来验证并修改这些配置。其他模块只能读取这些设置并根据这些设置进行运行。图 1：Evil-Twin 的框架架构ETF 支持多种与框架交互的用户界面，当前的默认界面是一个交互式控制台界面，类似于 Metasploit 那种。正在开发用于桌面/浏览器使用的图形用户界面（GUI）和命令行界面（CLI），移动端界面也是未来的一个备选项。用户可以使用交互式控制台界面来修改配置文件里的设置（最终会使用 GUI）。用户界面可以与存在于这个框架里的每个模块进行交互。WiFi 模块（AirCommunicator）用于支持多种 WiFi 功能和攻击类型。该框架确定了 Wi-Fi 通信的三个基本支柱：数据包嗅探、自定义数据包注入和创建接入点。三个主要的 WiFi 通信模块 AirScanner、AirInjector，和 AirHost，分别用于数据包嗅探、数据包注入，和接入点创建。这三个类被封装在主 WiFi 模块 AirCommunicator 中，AirCommunicator 在启动这些服务之前会先读取这些服务的配置文件。使用这些核心功能的一个或多个就可以构造任意类型的 WiFi 攻击。要使用中间人（MITM）攻击（这是一种攻击 WiFi 客户端的常见手法），ETF 有一个叫做 ETFITM（Evil-Twin Framework-in-the-Middle）的集成模块，这个模块用于创建一个 web 代理，来拦截和修改经过的 HTTP/HTTPS 数据包。许多其他的工具也可以利用 ETF 创建的 MITM。通过它的可扩展性，ETF 能够支持它们，而不必单独地调用它们，你可以通过扩展 Spawner 类来将这些工具添加到框架里。这使得开发者和安全审计人员可以使用框架里预先配置好的参数字符来调用程序。扩展 ETF 的另一种方法就是通过插件。有两类插件：WiFi 插件和 MITM 插件。MITM 插件是在 MITM 代理运行时可以执行的脚本。代理会将 HTTP(s) 请求和响应传递给可以记录和处理它们的插件。WiFi 插件遵循一个更加复杂的执行流程，但仍然会给想参与开发并且使用自己插件的贡献者提供一个相对简单的 API。WiFi 插件还可以进一步地划分为三类，其中每个对应一个核心 WiFi 通信模块。每个核心模块都有一些特定事件能触发响应的插件的执行。举个例子，AirScanner 有三个已定义的事件，可以对其响应进行编程处理。事件通常对应于服务开始运行之前的设置阶段、服务正在运行时的中间执行阶段、服务完成后的卸载或清理阶段。因为 Python 允许多重继承，所以一个插件可以继承多个插件类。上面的图 1 是框架架构的摘要。从 ConfigurationManager 指出的箭头意味着模块会从中读取信息，指向它的箭头意味着模块会写入/修改配置。使用 ETF 的例子ETF 可以通过多种方式对 WiFi 的网络安全或者终端用户的 WiFi 安全意识进行渗透测试。下面的例子描述了这个框架的一些渗透测试功能，例如接入点和客户端检测、对使用 WPA 和 WEP 类型协议的接入点进行攻击，和创建 evil twin 接入点。这些例子是使用 ETF 和允许进行 WiFi 数据捕获的 WiFi 卡设计的。它们也在 ETF 设置命令中使用了下面这些缩写：APS Access Point SSIDAPB Access Point BSSIDAPC Access Point ChannelCM Client MAC address在实际的测试场景中，确保你使用了正确的信息来替换这些缩写。在解除认证攻击后捕获 WPA 四次握手的数据包。这个场景（图 2）做了两个方面的考虑： 解除认证攻击 de-authentication attack 和捕获 WPA 四次握手数据包的可能性。这个场景从一个启用了 WPA/WPA2 的接入点开始，这个接入点有一个已经连上的客户端设备（在本例中是一台智能手机）。目的是通过常规的解除认证攻击（LCTT 译注：类似于 DoS 攻击）来让客户端断开和 WiFi 的网络，然后在客户端尝试重连的时候捕获 WPA 的握手包。重连会在断开连接后马上手动完成。图 2：在解除认证攻击后捕获 WPA 握手包的场景在这个例子中需要考虑的是 ETF 的可靠性。目的是确认工具是否一直都能捕获 WPA 的握手数据包。每个工具都会用来多次复现这个场景，以此来检查它们在捕获 WPA 握手数据包时的可靠性。使用 ETF 来捕获 WPA 握手数据包的方法不止一种。一种方法是使用 AirScanner 和 AirInjector 两个模块的组合；另一种方法是只使用 AirInjector。下面这个场景是使用了两个模块的组合。ETF 启用了 AirScanner 模块并分析 IEEE 802.11 数据帧来发现 WPA 握手包。然后 AirInjecto 就可以使用解除认证攻击来强制客户端断开连接，以进行重连。必须在 ETF 上执行下面这些步骤才能完成上面的目标：进入 AirScanner 配置模式：config airscanner设置 AirScanner 不跳信道：config airscanner设置信道以嗅探经过 WiFi 接入点信道的数据（APC）：set fixed_sniffing_channel = <APC>使用 CredentialSniffer 插件来启动 AirScanner 模块：start airscanner with credentialsniffer从已嗅探的接入点列表中添加目标接入点的 BSSID（APS）：add aps where ssid = <APS>启用 AirInjector 模块，在默认情况下，它会启用解除认证攻击：start airinjector这些简单的命令设置能让 ETF 在每次测试时执行成功且有效的解除认证攻击。ETF 也能在每次测试的时候捕获 WPA 的握手数据包。下面的代码能让我们看到 ETF 成功的执行情况。███████╗████████╗███████╗ ██╔════╝╚══██╔══╝██╔════╝ █████╗ ██║ █████╗ ██╔══╝ ██║ ██╔══╝ ███████╗ ██║ ██║ ╚══════╝ ╚═╝ ╚═╝ [+] Do you want to load an older session? [Y/n]: n [+] Creating new temporary session on 02/08/2018 [+] Enter the desired session name: ETF[etf/aircommunicator/]::> config airscanner ETF[etf/aircommunicator/airscanner]::> listargs sniffing_interface = wlan1; (var) probes = True; (var) beacons = True; (var) hop_channels = false; (var) fixed_sniffing_channel = 11; (var) ETF[etf/aircommunicator/airscanner]::> start airscanner with arpreplayer caffelatte credentialsniffer packetlogger selfishwifi ETF[etf/aircommunicator/airscanner]::> start airscanner with credentialsniffer [+] Successfully added credentialsniffer plugin. [+] Starting packet sniffer on interface 'wlan1' [+] Set fixed channel to 11 ETF[etf/aircommunicator/airscanner]::> add aps where ssid = CrackWPA ETF[etf/aircommunicator/airscanner]::> start airinjector ETF[etf/aircommunicator/airscanner]::> [+] Starting deauthentication attack - 1000 bursts of 1 packets - 1 different packets [+] Injection attacks finished executing. [+] Starting post injection methods [+] Post injection methods finished [+] WPA Handshake found for client '70:3e:ac:bb:78:64' and network 'CrackWPA'使用 ARP 重放攻击并破解 WEP 无线网络下面这个场景（图 3）将关注地址解析协议（ARP）重放攻击的效率和捕获包含初始化向量（IVs）的 WEP 数据包的速度。相同的网络可能需要破解不同数量的捕获的 IVs，所以这个场景的 IVs 上限是 50000。如果这个网络在首次测试期间，还未捕获到 50000 IVs 就崩溃了，那么实际捕获到的 IVs 数量会成为这个网络在接下来的测试里的新的上限。我们使用 aircrack-ng 对数据包进行破解。测试场景从一个使用 WEP 协议进行加密的 WiFi 接入点和一台知道其密钥的离线客户端设备开始 —— 为了测试方便，密钥使用了 12345，但它可以是更长且更复杂的密钥。一旦客户端连接到了 WEP 接入点，它会发送一个不必要的 ARP 数据包；这是要捕获和重放的数据包。一旦被捕获的包含 IVs 的数据包数量达到了设置的上限，测试就结束了。图 3：在进行解除认证攻击后捕获 WPA 握手包的场景ETF 使用 Python 的 Scapy 库来进行包嗅探和包注入。为了最大限度地解决 Scapy 里的已知的性能问题，ETF 微调了一些低级库，来大大加快包注入的速度。对于这个特定的场景，ETF 为了更有效率地嗅探，使用了 tcpdump 作为后台进程而不是 Scapy，Scapy 用于识别加密的 ARP 数据包。这个场景需要在 ETF 上执行下面这些命令和操作：进入 AirScanner 设置模式：config airscanner设置 AirScanner 不跳信道：set hop_channels = false设置信道以嗅探经过接入点信道的数据（APC）：set fixed_sniffing_channel = <APC>进入 ARPReplayer 插件设置模式：config arpreplayer设置 WEP 网络目标接入点的 BSSID（APB）：set target_ap_bssid <APB>使用 ARPReplayer 插件启动 AirScanner 模块：start airscanner with arpreplayer在执行完这些命令后，ETF 会正确地识别加密的 ARP 数据包，然后成功执行 ARP 重放攻击，以此破坏这个网络。使用一款全能型蜜罐图 4 中的场景使用相同的 SSID 创建了多个接入点，对于那些可以探测到但是无法接入的 WiFi 网络，这个技术可以发现网络的加密类型。通过启动具有所有安全设置的多个接入点，客户端会自动连接和本地缓存的接入点信息相匹配的接入点。图 4：在解除认证攻击后捕获 WPA 握手包数据。使用 ETF，可以去设置 hostapd 配置文件，然后在后台启动该程序。hostapd 支持在一张无线网卡上通过设置虚拟接口开启多个接入点，并且因为它支持所有类型的安全设置，因此可以设置完整的全能蜜罐。对于使用 WEP 和 WPA(2)-PSK 的网络，使用默认密码，和对于使用 WPA(2)-EAP 的网络，配置“全部接受”策略。对于这个场景，必须在 ETF 上执行下面的命令和操作：进入 APLauncher 设置模式：config aplauncher设置目标接入点的 SSID(APS)：set ssid = <APS>设置 APLauncher 为全部接收的蜜罐：set catch_all_honeypot = true启动 AirHost 模块：start airhost使用这些命令，ETF 可以启动一个包含所有类型安全配置的完整全能蜜罐。ETF 同样能自动启动 DHCP 和 DNS 服务器，从而让客户端能与互联网保持连接。ETF 提供了一个更好、更快、更完整的解决方案来创建全能蜜罐。下面的代码能够看到 ETF 的成功执行。███████╗████████╗███████╗ ██╔════╝╚══██╔══╝██╔════╝ █████╗ ██║ █████╗ ██╔══╝ ██║ ██╔══╝ ███████╗ ██║ ██║ ╚══════╝ ╚═╝ ╚═╝ [+] Do you want to load an older session? [Y/n]: n [+] Creating ne´,cxzw temporary session on 03/08/2018 [+] Enter the desired session name: ETF[etf/aircommunicator/]::> config aplauncher ETF[etf/aircommunicator/airhost/aplauncher]::> setconf ssid CatchMe ssid = CatchMe ETF[etf/aircommunicator/airhost/aplauncher]::> setconf catch_all_honeypot true catch_all_honeypot = true ETF[etf/aircommunicator/airhost/aplauncher]::> start airhost [+] Killing already started processes and restarting network services [+] Stopping dnsmasq and hostapd services [+] Access Point stopped... [+] Running airhost plugins pre_start [+] Starting hostapd background process [+] Starting dnsmasq service [+] Running airhost plugins post_start [+] Access Point launched successfully [+] Starting dnsmasq service结论和以后的工作这些场景使用常见和众所周知的攻击方式来帮助验证 ETF 测试 WIFI 网络和客户端的能力。这个结果同样证明了该框架的架构能在平台现有功能的优势上开发新的攻击向量和功能。这会加快新的 WiFi 渗透测试工具的开发，因为很多的代码已经写好了。除此之外，将 WiFi 技术相关的东西都集成到一个单独的工具里，会使 WiFi 渗透测试更加简单高效。ETF 的目标不是取代现有的工具，而是为它们提供补充，并为安全审计人员在进行 WiFi 渗透测试和提升用户安全意识时，提供一个更好的选择。ETF 是 GitHub 上的一个开源项目，欢迎社区为它的开发做出贡献。下面是一些您可以提供帮助的方法。当前 WiFi 渗透测试的一个限制是无法在测试期间记录重要的事件。这使得报告已经识别到的漏洞更加困难且准确性更低。这个框架可以实现一个记录器，每个类都可以来访问它并创建一个渗透测试会话报告。ETF 工具的功能涵盖了 WiFi 渗透测试的方方面面。一方面，它让 WiFi 目标侦察、漏洞挖掘和攻击这些阶段变得更加容易。另一方面，它没有提供一个便于提交报告的功能。增加了会话的概念和会话报告的功能，比如在一个会话期间记录重要的事件，会极大地增加这个工具对于真实渗透测试场景的价值。另一个有价值的贡献是扩展该框架来促进 WiFi 模糊测试。IEEE 802.11 协议非常的复杂，考虑到它在客户端和接入点两方面都会有多种实现方式。可以假设这些实现都包含 bug 甚至是安全漏洞。这些 bug 可以通过对 IEEE 802.11 协议的数据帧进行模糊测试来进行发现。因为 Scapy 允许自定义的数据包创建和数据包注入，可以通过它实现一个模糊测试器。via: https://opensource.com/article/19/1/evil-twin-framework作者：André Esser 选题：lujun9972 译者：hopefully2333 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
使用 gPodder 将你的播客同步到你的设备上，gPodder 是我们开源工具系列中的第 17 个工具，它将在 2019 年提高你的工作效率。每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心，渴望开启新的一年，当然，“抛弃旧的，拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件，但事实上并不用这样。这是我挑选出的 19 个新的（或者对你而言新的）开源工具中的第 17 个工具来帮助你在 2019 年更有效率。gPodder我喜欢播客。哎呀，我非常喜欢它们，因此我录制了其中的三个（你可以在我的个人资料中找到它们的链接）。我从播客那里学到了很多东西，并在我工作时在后台播放它们。但是，如何在多台桌面和移动设备之间保持同步可能会有一些挑战。gPodder 是一个简单的跨平台播客下载器、播放器和同步工具。它支持 RSS feed、FeedBurner、YouTube 和 SoundCloud，它还有一个开源的同步服务，你可以根据需要运行它。gPodder 不直接播放播客。相反，它会使用你选择的音频或视频播放器。安装 gPodder 非常简单。安装程序适用于 Windows 和 MacOS，同时也有用于主要的 Linux 发行版的软件包。如果你的发行版中没有它，你可以直接从 Git 下载运行。通过 “Add Podcasts via URL” 菜单，你可以输入播客的 RSS 源 URL 或其他服务的 “特殊” URL。gPodder 将获取节目列表并显示一个对话框，你可以在其中选择要下载的节目或在列表上标记旧节目。它一个更好的功能是，如果 URL 已经在你的剪贴板中，gPodder 会自动将它放入播放 URL 中，这样你就可以很容易地将新的播客添加到列表中。如果你已有播客 feed 的 OPML 文件，那么可以上传并导入它。还有一个发现选项，让你可搜索 gPodder.net 上的播客，这是由编写和维护 gPodder 的人员提供的自由及开源的播客的列表网站。mygpo 服务器在设备之间同步播客。gPodder 默认使用 gPodder.net 的服务器，但是如果你想要运行自己的服务器，那么可以在配置文件中更改它（请注意，你需要直接修改配置文件）。同步能让你在桌面和移动设备之间保持列表一致。如果你在多个设备上收听播客（例如，我在我的工作电脑、家用电脑和手机上收听），这会非常有用，因为这意味着无论你身在何处，你都拥有最近的播客和节目列表而无需一次又一次地设置。单击播客节目将显示与其关联的文本，单击“播放”将启动设备的默认音频或视频播放器。如果要使用默认之外的其他播放器，可以在 gPodder 的配置设置中更改此设置。通过 gPodder，你可以轻松查找、下载和收听播客，在设备之间同步这些播客，在易于使用的界面中访问许多其他功能。via: https://opensource.com/article/19/1/productivity-tool-gpodder作者：Kevin Sonney 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出