2017年5月

韩国一家开发了 Hancom Office 办公软件的公司在其字处理软件中集成了开源软件 Ghostscript,但是没有遵守 Ghostscript 的 GNU GPL 许可证而开源,也没有为该软件付费。近日,该韩国公司被美国联邦法院裁定其违约。

Ghostscript 是一个开源软件,由 Artifex 公司开发,其采用了两种许可证:

  • GNU GPL 许可证
  • 商业付费许可证

如果要免费使用 Ghostscript,Hancom 就需要遵循该软件的开源许可证,即 GNU GPL。该许可证要求,如果你的软件中使用了采用该许可协议的软件,并公开发布的话,就需要也采用同样的 GNU GPL 许可证开源。也就是说, Hancom 需要开源其整个办公软件套件。

否则,Hancom 就需要向 Ghostscript 的开发商 Artifex 公司支付商业许可证费用。Artifex 允许商业或其它闭源软件开发商绕开严格的开源许可证 GNU GPL,只要付费就行。

但是 Hancom 从 2013 年在其软件中使用了 Ghostscript 之后,却什么都没做:既没有开源其软件,也没有向 Artifex 公司付商业许可证的费用。

在 2016 年底,交涉无果的 Artifex 公司向美国加利福尼亚北部地区法院发起了诉讼。

“在发现 Hancom 违反了 GNU GPL 许可证,侵犯了 Artifex 的 Ghostscript 的宝贵版权之后,Artifex 要求 Hancom 停止其侵权行为,并为其多年无版权使用 Ghostscript 支付合理的版权费用,”该公司陈述到,“Hancom 拒绝了该要求,Artifex 转而寻求本法院责令 Hancom 停止进一步侵权并支付其滥用 Artifex 的开源许可证的费用。”

Artifex 还提到 Hancom 在 2015 年收入了 8630 万美元。

像 GUN GPL 这样的开源许可证的可执行性长期以来一直是一个悬而未决的法律问题。美国联邦巡回法庭在 2006 年的一个判例,雅各布森诉卡泽尔案中,对开源许可证的侵犯裁定可视作对版权申明的处理。但是在本案之前,这种侵犯开源许可证是否可以依法视作侵犯合约并未裁定。

Hancom 尝试发起动议以驳回该诉讼,其认为该公司并未签署任何东西,所以该许可证并不是真正的合约。

“并不是这样”,杰奎琳·斯科特·科里法官在 4 月 25 日的议案中说。她说 GNU GPL “规定了如果用户没有获取商业许可证,即表示同意其条款。原告称被告没有获取商业许可证,并公开表明其在 GNU GPL 下使用 Ghostscript。这些指控足以为合约的存在而辩护。”

科里法官驳回了 Hancom 的动议。按照这样的做法,就树立了像 GNU GPL 这样的开源许可证可以被视作法律合约的先例,在开发商违反了开源许可证时会被起诉。这对于开源社区来说是一个重大胜利。

当然,Artifex 是否可以最终赢得这一诉讼,还要看后继的上诉和裁定。

这种改变使得在 AWS 上实施甲骨文的软件的价格翻了一番,它已经安静地生效了,而几乎没有通知用户。

之前有消息传出,甲骨文使亚马逊云上的产品价格翻了一倍。它在如何计算 AWS 的虚拟 CPU 上耍了一些花招。它这么做也没有任何宣扬。该公司的新定价政策于 1 月 23 日生效,直到 1 月 28 日都几乎没有被人注意到, 甲骨文的关注者 Tim Hall 偶然发现 Big Red 公司的 甲骨文软件云计算环境许可文件并披露了出来。

乍一看,这一举动似乎并不太大,因为它仅将甲骨文的 AWS 定价与 Microsoft Azure 的价格相提并论。但是 Azure 只有市场领先的 AWS 体量的三分之一,所以如果你想在云中销售许可证,AWS 是合适的地方。虽然此举可能或可能不会影响已经在 AWS 上使用甲骨文产品的用户,但是尚不清楚新规则是否适用于已在使用产品的用户 - 它肯定会让一些考虑可能使用甲骨文的用户另寻它处。

这个举动的主要原因是显而易见的。甲骨文希望使自己的云更具吸引力 - 这让 The Register 观察到一点:“拉里·埃里森确实承诺过甲骨文的云将会更快更便宜”。更快和更便宜仍然有待看到。如果甲骨文的 SPARC 云计划启动,并且按照广告的形式执行,那么可能会更快,但是更便宜的可能性较小。甲骨文以对其价格的强硬态度而著称。

随着其招牌数据库和业务栈销售的下滑,并且对 Sun 公司的 74 亿美元的投资并未能按照如期那样,甲骨文将其未来赌在云计算上。但是甲骨文来晚了,迄今为止,它的努力似乎还没有结果, 一些金融预测者并没有看到甲骨文云的光明前景。他们说,云是一个拥挤的市场,而四大公司 - 亚马逊、微软、IBM 和谷歌 - 已经有了领先优势。

确实如此。但是甲骨文面临的最大的障碍是,好吧,就是甲骨文。它的声誉在它之前。

保守地说这个公司并不是因为明星客户服务而闻名。事实上,各种新闻报道将甲骨文描绘成一个恶霸和操纵者。

例如,早在 2015 年,甲骨文就因为它的云并不像预期那样快速增长而越来越沮丧,开始激活业内人士称之为的“核特权”。它会审核客户的数据中心,如果客户不符合规定,将发出“违规通知” - 它通常只适用于大规模滥用情况,并命令客户在 30 天内退出使用其软件。

或许你能想到,大量投入在甲骨文软件平台上的大公司们绝对不能在短时间内迁移到另一个解决方案。甲骨文的违规通知将会引发灾难。

商业内幕人士 Julie Bort 解释到:“为了使违规通知消失 - 或者减少高额的违规罚款 - 甲骨文销售代表通常希望客户向合同中添加云额度”。

换句话说,甲骨文正在使用审计来扭转客户去购买它的云,而无论他们是否有需要。这种策略与最近 AWS 价格翻倍之间也可能存在联系。Hall 的文章的评论者指出,围绕价格提升的秘密背后的目的可能是触发软件审计。

使用这些策略的麻烦迟早会出来。消息一旦传播开来,你的客户就开始寻找其他选项。对 Big Red 而言或许是时候参考微软的做法,开始建立一个更好和更温和的甲骨文,将客户的需求放在第一位。

(题图:windowsitpro


via: http://windowsitpro.com/cloud/oracle-policy-change-raises-prices-aws

作者:Christine Hall 译者:geekpi 校对:wxy

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

简介

Asciinema 是一个轻量并且非常高效的终端会话录制器。使用它可以录制、回放和分享 JSON 格式的终端会话记录。与一些桌面录制器,比如 Recordmydesktop、Simplescreenrecorder、Vokoscreen 或 Kazam 相比,Asciinema 最主要的优点是,它能够以通过 ASCII 文本以及 ANSI 转义码编码来录制所有的标准终端输入、输出和错误信息。

事实上,即使是很长的终端会话,录制出的 JSON 格式文件也非常小。另外,JSON 格式使得用户可以利用简单的文件转化器,将输出的 JSON 格式文件嵌入到 HTML 代码中,然后分享到公共网站或者使用 asciinema 账户分享到 Asciinema.org 。最后,如果你的终端会话中有一些错误,并且你还懂一些 ASCI 转义码语法,那么你可以使用任何编辑器来修改你的已录制终端会话。

难易程度:

很简单!

标准终端:

  • # - 给定命令需要以 root 用户权限运行或者使用 sudo 命令
  • $ - 给定命令以常规权限用户运行

从软件库安装

通常, asciinema 可以使用你的发行版的软件库进行安装。但是,如果不可以使用系统的软件库进行安装或者你想安装最新的版本,那么,你可以像下面的“从源代码安装”部分所描述的那样,使用 Linuxbrew 包管理器来执行 Asciinema 安装。

在 Arch Linux 上安装:

# pacman -S asciinema

在 Debian 上安装:

# apt install asciinema

在 Ubuntu 上安装:

$ sudo apt install asciinema

在 Fedora 上安装:

$ sudo dnf install asciinema

从源代码安装

最简单并且值得推荐的方式是使用 Linuxbrew 包管理器,从源代码安装最新版本的 Asciinema 。

前提条件

下面列出的前提条件是安装 Linuxbrew 和 Asciinema 需要满足的依赖关系:

  • git
  • gcc
  • make
  • ruby

在安装 Linuxbrew 之前,请确保上面的这些包都已经安装在了你的 Linux 系统中。

在 Arch Linux 上安装 ruby:

# pacman -S git gcc make ruby

在 Debian 上安装 ruby:

# apt install git gcc make ruby

在 Ubuntu 上安装 ruby:

$ sudo apt install git gcc make ruby

在 Fedora 上安装 ruby:

$ sudo dnf install git gcc make ruby

在 CentOS 上安装 ruby:

# yum install git gcc make ruby

安装 Linuxbrew

Linuxbrew 包管理器是苹果的 MacOS 操作系统很受欢迎的 Homebrew 包管理器的一个复刻版本。还没发布多久,Homebrew 就以容易使用而著称。如果你想使用 Linuxbrew 来安装 Asciinema,那么,请运行下面命令在你的 Linux 版本上安装 Linuxbrew:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"

现在,Linuxbrew 已经安装到了目录 $HOME/.linuxbrew/ 下。剩下需要做的就是使它成为可执行 PATH 环境变量的一部分。

$ echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile
$ . ~/.bash_profile

为了确认 Linuxbrew 是否已经安装好,你可以使用 brew 命令来查看它的版本:

$ brew --version
Homebrew 1.1.7
Homebrew/homebrew-core (git revision 5229; last commit 2017-02-02)

安装 Asciinema

安装好 Linuxbrew 以后,安装 Asciinema 就变得无比容易了:

$ brew install asciinema

检查 Asciinema 是否安装正确:

$ asciinema --version
asciinema 1.3.0

录制终端会话

经过一番辛苦的安装工作以后,是时候来干一些有趣的事情了。Asciinema 是一个非常容易使用的软件。事实上,目前的 1.3 版本只有很少的几个可用命令行选项,其中一个是 --help

我们首先使用 rec 选项来录制终端会话。下面的命令将会开始录制终端会话,之后,你将会有一个选项来丢弃已录制记录或者把它上传到 asciinema.org 网站以便将来参考。

$ asciinema rec

运行上面的命令以后,你会注意到, Asciinema 已经开始录制终端会话了,你可以按下 CTRL+D 快捷键或执行 exit 命令来停止录制。如果你使用的是 Debian/Ubuntu/Mint Linux 系统,你可以像下面这样尝试进行第一次 asciinema 录制:

$ su
Password:
# apt install sl
# exit
$ sl

一旦输入最后一个 exit 命令以后,将会询问你:

$ exit
~ Asciicast recording finished.
~ Press <Enter> to upload, <Ctrl-C> to cancel.

https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4

如果你不想上传你的私密命令行技巧到 asciinema.org 网站,那么有一个选项可以把 Asciinema 记录以 JSON 格式保存为本地文件。比如,下面的 asciinema 记录将被存为 /tmp/my_rec.json

$ asciinema rec /tmp/my_rec.json

另一个非常有用的 asciinema 特性是时间微调。如果你的键盘输入速度很慢,或者你在进行多任务,输入命令和执行命令之间的时间会比较长。Asciinema 会记录你的实时按键时间,这意味着每一个停顿都将反映在最终视频的长度上。可以使用 -w 选项来缩短按键的时间间隔。比如,下面的命令将按键的时间间隔缩短为 0.2 秒:

$ asciinema rec -w 0.2

回放已录制终端会话

有两种方式可以来回放已录制会话。第一种方式是直接从 asciinema.org 网站上播放终端会话。这意味着,你之前已经把录制会话上传到了 asciinema.org 网站,并且需要提供有效链接:

$ asciinema play https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4

另外,你也可以使用本地存储的 JSON 文件:

$ asciinema play /tmp/my_rec.json

如果要使用 wget 命令来下载之前的上传记录,只需在链接的后面加上 .json

$ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
$ asciinema play steam_locomotive.json

将视频嵌入 HTML

最后,asciinema 还带有一个独立的 JavaScript 播放器。这意味者你可以很容易的在你的网站上分享终端会话记录。下面,使用一段简单的 index.html 代码来说明这个方法。首先,下载所有必要的东西:

$ cd /tmp/
$ mkdir steam_locomotive
$ cd steam_locomotive/
$ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
$ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.css
$ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.js

之后,创建一个新的包含下面这些内容的 /tmp/steam_locomotive/index.html 文件:

<html>
<head>
  <link rel="stylesheet" type="text/css" href="./asciinema-player.css" />
</head>
<body>
  <asciinema-player src="./steam_locomotive.json" cols="80" rows="24"></asciinema-player>
  <script src="./asciinema-player.js"></script>
</body>
</html>

完成以后,打开你的网页浏览器,按下 CTRL+O 来打开新创建的 /tmp/steam_locomotive/index.html 文件。

结论

正如前面所说的,使用 asciinema 录制器来录制终端会话最主要的优点是它的输出文件非常小,这使得你的视频很容易分享出去。上面的例子产生了一个包含 58472 个字符的文件,它是一个只有 58 KB 大 小的 22 秒终端会话视频。如果我们查看输出的 JSON 文件,会发现甚至这个数字已经非常大了,这主要是因为一个 “蒸汽机车” 已经跑过了终端。这个长度的正常终端会话一般会产生一个更小的输出文件。

下次,当你想要在一个论坛上询问关于 Linux 配置的问题,并且很难描述你的问题的时候,只需运行下面的命令:

$ asciinema rec

然后把最后的链接贴到论坛的帖子里。

故障排除

在 UTF-8 环境下运行 asciinema

错误信息:

asciinema needs a UTF-8 native locale to run. Check the output of `locale` command.

解决方法: 生成并导出 UTF-8 语言环境。例如:

$ localedef -c -f UTF-8 -i en_US en_US.UTF-8
$ export LC_ALL=en_US.UTF-8

via: https://linuxconfig.org/record-and-replay-terminal-session-with-asciinema-on-linux

作者:Lubos Rendek 译者:ucasFL 校对:wxy

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

一些令人振奋的消息引发了我对今年 DockerCon 的兴趣,在这次会议中,无可争议的容器巨头公司 Docker 发布了一个新的操作系统:LinuxKit。

这家容器巨头宣布的是一个灵活的、可扩展的操作系统,而为了可移植性,系统服务也是运行在容器之中。甚至,令人惊讶的是,就连 Docker 运行时环境也是运行在容器内!

在本文中,我们将简要介绍一下 LinuxKit 中所承诺的内容,以及如何自己尝试一下这个不断精简、优化的容器。

少即是多

不可否认的是,用户一直在寻找一个可以运行他们的微服务的精简版本的 Linux 。通过容器化,你会尽可能地最小化每个应用程序,使其成为一个适合于运行在其自身容器内的独立进程。但是,由于你需要对那些驻留容器的宿主机出现的问题进行修补,因此你不断地在宿主机间移动容器。实际上,如果没有像 Kubernetes 或 Docker Swarm 这样的编排系统,容器编排几乎总是会导致停机。

不用说,这只是让你保持操作系统尽可能小的原因之一。

我曾多次在不同场合重复过的最喜爱的名言,来自荷兰的天才程序员 Wietse Zweitze,他为我们提供了重要的 Email 软件 Postfix 和 TCP Wrappers 等知名软件。

Postfix 网站 指出,即使你编码和 Wietse 一样小心,“每 1000 行[你]就会在 Postfix 中引入一个额外的 bug”。从我的专业的 DevSecOps 角度看,这里提到的“bug” 可以将其大致看做安全问题。

从安全的角度来看,正是由于这个原因,代码世界中“少即是多”。简单地说,使用较少的代码行有很多好处,即安全性、管理时间和性能。对于初学者来说,这意味着安全漏洞较少,更新软件包的时间更短,启动时间更快。

深入观察

考虑下在容器内部运行你的程序。

一个好的起点是 Alpine Linux,它是一个苗条、精简的操作系统,通常比那些笨重的系统更受喜欢,如 Ubuntu 或 CentOS 等。Alpine 还提供了一个 miniroot 文件系统(用于容器内),最近我看到的大小是惊人的 1.8M。事实上,这个完整的 Linux 操作系统下载后有 80M。

如果你决定使用 Alpine Linux 作为 Docker 基础镜像,那么你可以在 Docker Hub 上找到一个, 它将其描述为:“一个基于 Alpine Linux 的最小 Docker 镜像,具有完整的包索引,大小只有5 MB!”

据说无处不在的 “Window 开始菜单” 文件也是大致相同的大小!我没有验证过,也不会进一步评论。

讲真,希望你去了解一下这个创新的类 Unix 操作系统(如 Alpine Linux)的强大功能。

锁定一切

再说一点,Alpine Linux 是(并不惊人)基于 BusyBox,这是一套著名的打包了 Linux 命令的集合,许多人不会意识到他们的宽带路由器、智能电视,当然还有他们家庭中的物联网设备就有它。

Alpine Linux 站点的“关于”页面的评论中指出:

“Alpine Linux 的设计考虑到安全性。内核使用 grsecurity/PaX 的非官方移植进行了修补,所有用户态二进制文件都编译为具有堆栈保护的地址无关可执行文件(PIE)。 这些主动安全特性可以防止所有类别的零日漏洞和其它漏洞利用。”

换句话说,这些捆绑在 Alpine Linux 中的精简二进制文件提供的功能通过了那些行业级安全工具筛选,以缓解缓冲区溢出攻击所带来的危害。

多只袜子

你可能会问,为什么当我们谈及 Docker 的新操作系统时,容器的内部结构很重要?

那么,你可能已经猜到,当涉及容器时,他们的目标是精简。除非绝对必要,否则不包括任何东西。所以你可以放心地清理橱柜、花园棚子、车库和袜子抽屉了。

Docker 的确因为它们的先见而获得声望。据报道,2 月初,Docker 聘请了 Alpine Linux 的主要推动者 Nathaniel Copa,他帮助将默认的官方镜像库从 Ubuntu 切换到 Alpine。Docker Hub 从新近精简镜像节省的带宽受到了赞誉。

并且最新的情况是,这项工作将与最新的基于容器的操作系统相结合:Docker 的 LinuxKit。

要说清楚的是 LinuxKit 注定不会代替 Alpine,而是位于容器下层,并作为一个完整的操作系统出现,你可以高兴地启动你的运行时守护程序(在这种情况下,是生成你的容器的Docker 守护程序 )。

原子计划

经过精心调试的宿主机绝对不是一件新事物(以前提到过嵌入式 Linux 的家用设备)。在过去几十年中一直在优化 Linux 的天才在某个时候意识到底层的操作系统才是快速生产含有大量容器主机的关键。

例如,强大的红帽长期以来一直在出售已经贡献给 Project Atomic红帽 Atomic 。后者继续解释:

“基于 Red Hat Enterprise Linux 或 CentOS 和 Fedora 项目的成熟技术,Atomic Host 是一个轻量级的、不可变的平台,其设计目的仅在于运行容器化应用程序。”

将底层的、不可变的 Atomic OS 作为红帽的 OpenShift PaaS(平台即服务)产品推荐有一个很好理由:它最小化、高性能、尖端。

特性强大

在 Docker 关于 LinuxKit 的公告中,“少即是多”的口号是显而易见的。实现 LinuxKit 愿景的项目显然是不小的事业,它由 Docker 老将和 Unikernel 的主管 Justin Cormack 指导,并与 HPE、Intel、ARM、IBM 和 Microsoft LinuxKit 合作,可以运行在从大型机到基于物联网的冰柜之中。

LinuxKit 的可配置性、可插拔性和可扩展性将吸引许多寻求建立其服务基准的项目。通过开源项目,Docker 明智地邀请每个人全身心地投入其功能开发,随着时间的推移,它会像好的奶酪那样成熟。

布丁作证

按照该发布消息中所承诺的,那些急于使用新系统的人不用再等待了。如果你准备着手 LinuxKit,你可以从 GitHub 中开始:LinuxKit

在 GitHub 页面上有关于如何启动和运行一些功能的指导。

时间允许的话我准备更加深入研究 LinuxKit。对有争议的 Kubernetes 与 Docker Swarm 编排功能对比会是有趣的尝试。此外,我还想看到内存占用、启动时间和磁盘空间使用率的基准测试。

如果该承诺可靠,则作为容器运行的可插拔系统服务是构建操作系统的迷人方式。Docker 在博客)中提到:“因为 LinuxKit 是原生容器,它有一个非常小的尺寸 - 35MB,引导时间非常小。所有系统服务都是容器,这意味着可以删除或替换所有的内容。”

我不知道你觉得怎么样,但这非常符合我的胃口。

呼叫警察

除了我站在 DevSecOps 角度看到的功能,我会看看其对安全的承诺。

Docker 在他们的博客上引用来自 NIST(国家标准与技术研究所)的话:

“安全性是最高目标,这与 NIST 在其《应用程序容器安全指南》草案中说明的保持一致:‘使用容器专用操作系统而不是通用操作系统来减少攻击面。当使用专用容器操作系统时,攻击面通常比通用操作系统小得多,因此攻击和危及专用容器操作系统的机会较少。’”

可能最重要的容器到主机和主机到容器的安全创新是将系统容器(系统服务)完全地沙箱化到自己的非特权空间中,而只给它们需要的外部访问。

通过 内核自我保护项目 Kernel Self Protection Project KSPP)的协作来实现这一功能,我很满意 Docker 开始专注于一些非常值得的东西上。对于那些不熟悉的 KSPP 的人而言,它存在理由如下:

“启动这个项目的的假设是内核 bug 的存在时间很长,内核必须设计成可以防止这些缺陷的危害。”

KSPP 网站进一步表态:

“这些努力非常重要并还在进行,但如果我们要保护我们的十亿 Android 手机、我们的汽车、国际空间站,还有其他运行 Linux 的产品,我们必须在上游的 Linux 内核中建立积极的防御性技术。我们需要内核安全地出错,而不只是安全地运行。”

而且,如果 Docker 最初只是在 LinuxKit 前进了一小步,那么随着时间的推移,成熟度带来的好处可能会在容器领域中取得长足的进步。

终点还远

像 Docker 这样不断发展壮大的巨头无论在哪个方向上取得巨大的飞跃都将会用户和其他软件带来益处。

我鼓励所有对 Linux 感兴趣的人密切关注这个领域。


via: http://www.devsecops.cc/devsecops/containers.html

作者:Chris Binnie 译者:geekpi 校对:wxy

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

本教程只针对 amd64/x86\_64 架构 Linux 内核版本大于等于 2.6.9 的系统。本文将解释如何安装 pandom,这是一个由 ncomputers.org 维护的定时抖动真随机数生成器。

简介

在现在的计算机状况下,比如说配置了固态硬盘(SSD)的个人电脑和虚拟专用服务器(VPS)的环境中,Linux 内核内置的真随机数发生器提供的吞吐量很低。

而出于各种不同的加密目的使得对真随机数的需求持续增长,从而使得这个低吞吐量问题在 Linux 实现中变得越来越严重。

在与上述相同的物理或者虚拟环境下,并假设没有其它进程以 root 身份向 /dev/random 进行写操作的话,64 ubits/64 bits 的 pandom 可以以 8 KiB/s 的速率生成随机数。

1 pandom 的安装

1.1 获得 root 权限

Pandom 必须以 root 身份来安装,所以在必要的时候请运行如下命令:

su -

1.2 安装编译所需的依赖

为了下载并安装 pandom,你需要 GNU as 汇编器、GNU make、GNU tar 和 GNU wget (最后两个工具通常已被安装)。随后你可以按照你的意愿卸载它们。

基于 Arch 的系统:

pacman -S binutils make

基于 Debian 的系统:

apt-get install binutils make

基于 Red Hat 的系统:

dnf install binutils make
yum install binutils make

基于 SUSE 的系统:

zypper install binutils make

1.3 下载并析出源码

下面的命令将使用 wgettar 从 ncomputers.org 下载 pandom 的源代码并将它们解压出来:

wget http://ncomputers.org/pandom.tar.gz
tar xf pandom.tar.gz
cd pandom/amd64-linux

1.4 在安装前进行测试 (推荐)

这个被推荐的测试将花费大约 8 分钟的时间,它将检查内核支持情况并生成一个名为 checkme 的文件(在下一节中将被分析)。

make check

1.5 确定系统的初始化程序

在安装 pandom 之前,你需要知道你的系统使用的是哪个初始化程序。假如下面命令的输出中包含 running,则意味着你的系统使用了 systemd,否则你的系统则可能使用了一个 init.d 的实现(例如 upstart、sysvinit)。

systemctl is-system-running
running

1.6 安装 pandom

一旦你知道了你的系统使用何种 Linux 实现,那么你就可以相应地安装 pandom 了。

使用基于 init.d 作为初始化程序(如: upstart、sysvinit)的系统:

假如你的系统使用了一个 init.d 的实现(如: upstart、sysvinit),请运行下面的命令来安装 pandom:

make install-init.d

以 systemd 作为初始化程序的系统:

假如你的系统使用 systemd,则请运行以下命令来安装 pandom:

make install-systemd

2 checkme 文件的分析

在使用 pandom 进行加密之前,强烈建议分析一下先前在安装过程中生成的 checkme 文件。通过分析我们便可以知道用 pandom 生成的数是否真的随机。本节将解释如何使用 ncomputers.org 的 shell 脚本 entropyarray 来测试由 pandom 产生的输出的熵及序列相关性。

:整个分析过程也可以在另一台电脑上完成,例如在一个笔记本电脑或台式机上。举个例子:假如你正在一个资源受到限制的 VPS 上安装 pandom 程序,或许你更倾向于将 checkme 复制到自己的个人电脑中,然后再进行分析。

2.1 获取 root 权限

entropyarray 程序也必须以 root 身份来安装,所以在必要时请运行如下命令:

su -

2.2 安装编译所需的依赖

为了下载并安装 entropyarray, 你需要 GNU g++ 编译器、GNU make、GNU tar 和 GNU wget。在随后你可以任意卸载这些依赖。

基于 Arch 的系统:

pacman -S gcc make

基于 Debian 的系统:

apt-get install g++ make

基于 Red Hat 的系统:

dnf install gcc-c++ make
yum install gcc-c++ make

基于 SUSE 的系统:

zypper install gcc-c++ make

2.3 下载并析出源码

以下命令将使用 wgettar 从 ncomputers.org 下载到 entropyarray 的源码并进行解压:

wget http://ncomputers.org/rearray.tar.gz
wget http://ncomputers.org/entropy.tar.gz
wget http://ncomputers.org/entropyarray.tar.gz

tar xf entropy.tar.gz
tar xf rearray.tar.gz
tar xf entropyarray.tar.gz

2.4 安装 entropyarray

:如果在编译过程中报有关 -std=c++11 的错误,则说明当前系统安装的 GNU g++ 版本不支持 ISO C++ 2011 标准,那么你可能需要在另一个支持该标准的系统中编译 ncomputers.org/entropy 和 ncomputers.org/rearray (例如在一个你喜爱的较新的 Linux 发行版本中来编译)。接着使用 make install 来安装编译好的二进制文件,再接着你可能想继续运行 entropyarray 程序,或者跳过运行该程序这一步骤,然而我还是建议在使用 pandom 来达到加密目地之前先分析一下 checkme 文件。

cd rearray; make install; cd ..
cd entropy; make install; cd ..
cd entropyarray; make install; cd ..

2.5 分析 checkme 文件

:64 ubits / 64 bits 的 pandom 实现所生成的结果中熵应该高于 15.977max 字段低于 70。假如你的结果与之相差巨大,或许你应该按照下面第 5 节介绍的那样增加你的 pandom 实现的不可预测性。假如你跳过了生成 checkme 文件的那一步,你也可以使用其他的工具来进行测试,例如 伪随机数序列测试

entropyarray checkme

entropyarray in /tmp/tmp.mbCopmzqsg
15.977339
min:12
med:32
max:56
15.977368
min:11
med:32
max:58
15.977489
min:11
med:32
max:59
15.977077
min:12
med:32
max:60
15.977439
min:8
med:32
max:59
15.977374
min:13
med:32
max:60
15.977312
min:12
med:32
max:67

2.6 卸载 entropyarray (可选)

假如你打算不再使用 entropyarray,那么你可以按照你自己的需求卸载它:

cd entropyarray; make uninstall; cd ..
cd entropy; make uninstall; cd ..
cd rearray; make uninstall; cd ..

3 使用 debian 的软件仓库来进行安装

假如你想在你基于 debian 的系统中让 pandom 保持更新,则你可以使用 ncomputers.org 的 debian 软件仓库来安装或者重新安装它。

3.1 获取 root 权限

以下的 debian 软件包必须以 root 身份来安装,所以在必要时请运行下面这个命令:

su -

3.2 安装密钥

下面的 debian 软件包中包含 ncomputers.org debian 软件仓库的公匙密钥:

wget http://ncomputers.org/debian/keyring.deb
dpkg -i keyring.deb
rm keyring.deb

3.3 安装软件源列表

下面这些 debian 软件包含有 ncomputers.org debian 软件仓库的软件源列表,这些软件源列表对应最新的 debian 发行版本(截至 2017 年)。

:你也可以将下面的以 # 注释的行加入 /etc/apt/sources.list 文件中,而不是为你的 debian 发行版本安装对应的 debian 软件包。但假如这些源在将来改变了,你就需要手动更新它们。

Wheezy:

#deb http://ncomputers.org/debian wheezy main
wget http://ncomputers.org/debian/wheezy.deb
dpkg -i wheezy.deb
rm wheezy.deb

Jessie:

#deb http://ncomputers.org/debian jessie main
wget http://ncomputers.org/debian/jessie.deb
dpkg -i jessie.deb
rm jessie.deb

Stretch:

#deb http://ncomputers.org/debian stretch main
wget http://ncomputers.org/debian/stretch.deb
dpkg -i stretch.deb
rm stretch.deb

3.4 升级软件源列表

一旦密钥和软件源列表安装完成,则可以使用下面的命令来更新:

apt-get update

3.5 测试 pandom

测试完毕后,你可以随意卸载下面的软件包。

:假如你已经在你的 Linux 中测试了 pandom , 则你可以跳过这一步。

apt-get install pandom-test
pandom-test

generating checkme file, please wait around 8 minutes ...
entropyarray in /tmp/tmp.5SkiYsYG3h
15.977366
min:12
med:32
max:57
15.977367
min:13
med:32
max:57
15.977328
min:12
med:32
max:61
15.977431
min:12
med:32
max:59
15.977437
min:11
med:32
max:57
15.977298
min:11
med:32
max:59
15.977196
min:10
med:32
max:57

3.6 安装 pandom

apt-get install pandom

4 管理 pandom

在 pandom 安装完成后,你可能想对它进行管理。

4.1 性能测试

pandom 提供大约 8 kB/s 的随机数生成速率,但它的性能可能根据环境而有所差异。

dd if=/dev/random of=/dev/null bs=8 count=512

512+0 records in
512+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.451253 s, 9.1 kB/s

4.2 熵和序列相关性检验

除了 ncomputers.org/entropyarray,还存在更多的测试,例如 Ilja Gerhardt 的 NIST 测试套件

entropyarray /dev/random 1M

4.3 系统服务

pandom 还可以以系统服务的形式运行。

基于 init.d 的初始化系统(如 upstart、sysvinit):

/etc/init.d/random status
/etc/init.d/random start
/etc/init.d/random stop
/etc/init.d/random restart

以 systemd 作为初始化程序的系统:

systemctl status random
systemctl start random
systemctl stop random
systemctl restart random

5 增强不可预测性或者性能

假如你想增加你编译的 pandom 程序的不可预测性或者性能,你可以尝试增加或删减 CPU 时间测量选项。

5.1 编辑源文件

请按照自己的意愿,在源文件 test.stRNG.s 中增加或者移除 measurement blocks 字段。

#measurement block
mov $35,%rax
syscall
rdtsc
[...]

#measurement block
mov $35,%rax
syscall
rdtsc
[...]

5.2 测试不可预测性

我们总是建议在使用个人定制的 pandom 实现来用于加密目地之前,先进行一些测试。

make check

5.3 安装定制的 pandom

假如你对测试的结果很满意,你就可以使用下面的命令来安装你的 pandom 实现。

make install

更多额外信息及更新详见 http://ncomputers.org/pandom

(题图:Pixabay,CC0)


via: https://www.howtoforge.com/tutorial/how-to-install-pandom-a-true-random-number-generator/

作者:Oliver 译者:FSSlc 校对:wxy

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

这篇文章讲述了如何使用 Authconfig-gtk 工具将 CentOS 7 桌面系统加入到 Samba4 AD 域环境中,并使用域帐号登录到 CentOS 系统。

要求

1、在 Ubuntu 系统中使用 Samba4 创建活动目录架构

2、CentOS 7.3 安装指南

第一步:在 CentOS 系统中配置 Samba4 AD DC

1、在将 CentOS 7 加入到 Samba4 域环境之前,你得先配置 CentOS 系统的网络环境,确保在 CentOS 系统中通过 DNS 可以解析到域名。

打开网络设置,关闭有线网卡。打开下方的设置按钮,手动编辑网络设置,指定 DNS 的 IP 地址为 Samba4 AD DC 服务器的 IP 地址。

设置完成之后,应用配置,并打开有线网卡。

网络设置

配置网络

2、下一步,打开网络配置文件,在文件末尾添加一行域名信息。这样能确保当你仅使用主机名来查询域中的 DNS 记录时, DNS 解析器会自动把域名添加进来。

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

添加下面一行:

SEARCH="your_domain_name"

网卡配置

3、最后,重启网卡服务以应用更改,并验证解析器的配置文件是否正确配置。我们通过使用 ping 命令加上 DC 服务器的主机名或域名以验证 DNS 解析能否正常运行。

$ sudo systemctl restart network
$ cat /etc/resolv.conf
$ ping -c1 adc1
$ ping -c1 adc2
$ ping tecmint.lan

验证网络配置是否正常

4、同时,使用下面的命令来配置你的主机名,然后重启计算机以应用更改:

$ sudo hostnamectl set-hostname your_hostname
$ sudo init 6

使用下面的命令来验证主机名是否正确配置:

$ cat /etc/hostname
$ hostname

5、最后一步配置是使用下面的命令来保证系统时间跟 Samba4 AD DC 服务器的时间同步:

$ sudo yum install ntpdate
$ sudo ntpdate -ud domain.tld

第二步:安装要加入 Samba4 AD DC 所必需的软件包

6、为了将 CentOS 7 加入到活动目录域中,你需要使用下面的命令来安装相关的软件包:

$ sudo yum install samba samba samba-winbind krb5-workstation

7、最后,安装 CentOS 软件库中提供的图形化界面软件包: Authconfig-gtk 。该软件用于将 CentOS 系统集成到域环境中。

$ sudo yum install authconfig-gtk

第三步:将 CentOS 7 桌面系统集成到 Samba4 AD DC 域环境中

8、将 CentOS 加入到域的过程非常简单。使用有 root 权限的帐号在命令行下打开 Authconfig-gtk 程序,然后按下图所示修改相关配置即可:

$ sudo authconfig-gtk

打开身份或认证配置页面:

  • 用户帐号数据库 : 选择 Winbind
  • Winbind 域 : 你的域名
  • 安全模式 : ADS
  • Winbind ADS 域 : 你的域名.TLD
  • 域控制器 : 域控服务器的全域名
  • 默认Shell : /bin/bash
  • 勾选允许离线登录

域认证配置

打开高级选项配置页面:

  • 本地认证选项 : 支持指纹识别
  • 其它认证选项 : 用户首次登录创建家目录

高级认证配置

9、修改完上面的配置之后,返回到身份或认证配置页面,点击加入域按钮,在弹出的提示框点保存即可。

身份和认证

保存认证配置

10、保存配置之后,系统将会提示你提供域管理员信息以将 CentOS 系统加入到域中。输入域管理员帐号及密码后点击 OK 按钮,加入域完成。

加入 Winbind 域环境

11、加入域后,点击应用按钮以让配置生效,选择所有的 windows 并重启机器。

应用认证配置

12、要验证 CentOS 是否已成功加入到 Samba4 AD DC 中,你可以在安装了 RSAT 工具 的 windows 机器上,打开 AD 用户和计算机工具,点击域中的计算机。

你将会在右侧看到 CentOS 主机信息。

活动目录用户和计算机

第四步:使用 Samba4 AD DC 帐号登录 CentOS 桌面系统

13、选择使用其它账户,然后输入域帐号和密码进行登录,如下图所示:

Domain\domain_account
或
[email protected]

使用其它账户

输入域用户名

14、在 CentOS 系统的命令行中,你也可以使用下面的任一方式来切换到域帐号进行登录:

$ su - domain\domain_user
$ su - [email protected]

使用域帐号登录

使用域帐号邮箱登录

15、要为域用户或组添加 root 权限,在命令行下使用 root 权限帐号打开 sudoers 配置文件,添加下面一行内容:

YOUR_DOMAIN\\domain_username             ALL=(ALL:ALL) ALL      #For domain users
%YOUR_DOMAIN\\your_domain\  group            ALL=(ALL:ALL) ALL  #For domain groups

指定用户和用户组权限

16、使用下面的命令来查看域控制器信息:

$ sudo net ads info

查看域控制器信息

17、你可以在安装了 Winbind 客户端的机器上使用下面的命令来验证 CentOS 加入到 Samba4 AD DC 后的信任关系是否正常:

$ sudo yum install samba-winbind-clients

然后,执行下面的一些命令来查看 Samba4 AD DC 的相关信息:

$ wbinfo -p ### Ping 域名
$ wbinfo -t ### 检查信任关系
$ wbinfo -u ### 列出域用户帐号
$ wbinfo -g ### 列出域用户组
$ wbinfo -n domain_account ### 查看域帐号的 SID 信息

查看 Samba4 AD DC 信息

18、如果你想让 CentOS 系统退出域环境,使用具有管理员权限的帐号执行下面的命令,后面加上域名及域管理员帐号,如下图所示:

$ sudo net ads leave your_domain -U domain_admin_username

退出 Samba4 AD 域

这篇文章就写到这里吧!尽管上面的这些操作步骤是将 CentOS 7 系统加入到 Samba4 AD DC 域中,其实这些步骤也同样适用于将 CentOS 7 桌面系统加入到 Microsoft Windows Server 2008 或 2012 的域中。


作者简介:

我是一个电脑迷,开源 Linux 系统和软件爱好者,有 4 年多的 Linux 桌面、服务器系统使用和 Base 编程经验。


via: http://www.tecmint.com/join-centos-7-to-samba4-active-directory/

作者:Matei Cezar 译者:rusking 校对:wxy

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