2015年11月

在Nautilus中搜索零散文件和文件夹将会将会变得相当简单。

GNOME文件管理器中正在开发一个新的搜索过滤器。它大量使用 GNOME 漂亮的弹出式菜单,以通过简单的方法来缩小搜索结果并精确地找到你所需要的。

开发者Georges Stavracas正致力于开发新的UI,他这个新的界面“更干净、更合理、更直观”。

根据他上传到Youtube的视频来展示的新方式-他还没有嵌入它-他没有错。

他在他的博客中写到:“ Nautilus 有非常复杂但是强大的内部组成,它允许我们做很多事情。事实上在代码上存在各种可能。那么,为何它曾经看上去这么糟糕?”

这个问题的部分原因比较令人吃惊:新的搜索过滤器界面向用户展示了“强大的内部组成”。搜索结果可以根据类型、名字或者日期范围来进行过滤。

对于像 Nautilus 这类 app 的任何修改有可能让一些用户不安,因此像这样帮助性的、直接的新UI会带来一些争议。

虽然对于不满的担心貌似会影响进度(毫无疑问,虽然像移除类型优先搜索的争议自2014年以来一直在争论)。GNOME 3.18 在上个月发布了,给 Nautilus 引入了新的文件进度对话框,以及远程共享的更好整合,包括 Google Drive。

Stavracas 的搜索过滤器还没被合并进 Files 的 trunk 中,但是复刻的搜索 UI 已经初步计划在明年春天的 GNOME 3.20 中实现。


via: http://www.omgubuntu.co.uk/2015/10/new-nautilus-search-filter-ui

作者:Joey-Elijah Sneddon 译者:geekpi 校对:Caroline

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

有一份隐性收入通常很不错,特别是当你可以轻松的协调业余和全职工作。如果你的日常工作使用了联网的电脑,交易股票就是一个获取额外收入的很流行的选项。

但是目前只有很少的股票监视软件可以运行在 linux 上,其中大多数还是基于图形界面的。如果你是一个 Linux 专家,并且大量的工作时间是在没有图形界面的电脑上呢?你是不是就没办法了?不,还是有一些命令行下的股票追踪工具,包括Mop,也就是本文要聊一聊的工具。

Mop

Mop,如上所述,是一个命令行下连续显示和更新美股和独立股票信息的工具。使用 GO 语言实现的,是 Michael Dvorkin 的智慧结晶。

下载安装

因为这个项目使用 GO 实现的,所以你要做的第一步是在你的计算机上安装这种编程语言,下面就是在 Debian 系的系统,比如 Ubuntu 上安装 GO 的步骤:

sudo apt-get install golang
mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc

GO 安装好后的下一步是安装 Mop 工具和配置环境,你要做的是运行下面的命令:

sudo apt-get install git
go get github.com/michaeldv/mop
cd $GOPATH/src/github.com/michaeldv/mop
make install
export PATH="$PATH:$GOPATH/bin"

完成之后就可以运行下面的命令执行 Mop:

cmd

特性

当你第一次运行 Mop 时,你会看到类似下面的输出信息:

如你所见,这些输出信息—— 周期性自动刷新 ——包含了主要几个交易所和个股的信息。

添加删除股票

Mop 允许你轻松的从输出列表上添加/删除个股信息。要添加,你全部要做的是按“+”和输入股票名称。举个例子,下图就是添加 Facebook (FB) 到列表里。

我按下了“+”键,就出现了包含文本“Add tickers:”的一列,提示我添加股票名称—— 我添加了 FB 然后按下回车。输出列表更新了,我添加的新股票也出现在列表了:

类似的,你可以使用“-”键和提供股票名称删除一个股票。

根据价格分组

还有一个把股票分组的办法:依据他们的股价升跌,你所要做的就是按下“g”键。接下来,股票会分组显示:升的在一起使用绿色字体显示,而下跌的股票会黑色字体显示。

如下所示:

列排序

Mop 同时也允许你根据不同的列类型改变排序规则。这种用法需要你按下“o”(这个命令默认使用第一列的值来排序),然后使用左右键来选择你要排序的列。完成之后按下回车对内容重新排序。

举个例子,下面的截图就是根据输出内容的第一列、按照字母表排序之后的结果。

注意: 为了更好的理解,和前面的截屏对比一下。

其他选项

其它的可用选项包括“p”:暂停市场和股票信息更新,“q”或者“esc” 来退出命令行程序,“?”显示帮助页。

结论

Mop 是一个基础的股票监控工具,并没有提供太多的特性,只提供了它所声称的功能。很明显,这个工具并不是为专业股票交易者提供的,而仅仅为你在只有命令行的机器上得体的提供了一个跟踪股票信息的选择。


via: https://www.maketecheasier.com/monitor-stock-prices-ubuntu-command-line/

作者:Himanshu Arora 译者:oska874 校对:wxy

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

Nmap 是一款历史悠久的网络扫描工具,已经有18年的历史了。它由 Gordon Lyon 所设计,可以用来快速探测网络上的计算机主机及其服务。Nmap 会发送特定的数据包给目标主机/网络,然后根据返回的数据结果进行分析,从而探知目标主机是否存活、操作系统类型、网络协议细节、网络服务特性和安全缺陷等。

Nmap 6是在2012年5月发布的,最新版本历时3年半时间的开发,包含将近3200个代码递交。主要更新如下:

1. Nmap Scripting Engine (NSE) 增加了很多功能

Nmap 核心已经稳定,NSE 子系统中增加了越来越多的新功能。相比 Nmap 6 增加了171个新脚本和20个库,比如 firewall-bypasssupermicro-ipmi-conforacle-brute-stealthssl-heartbleed 等。NSE 现在功能更加强大了,脚本可以通过它使用更强力的核心功能,比如主机发现(dns-ip6-arpa-scan)、版本扫描(ike-versionsnmp-info 等)和 RPC grinding (rpc-grind)。

2. 成熟的 IPv6 支持

Nmap 6 中的重大提升之一是 IPv6 扫描的改进 ,而在 Nmap 7 中对此支持就更加完善了,包括支持 CIDR 风格的地址范围、空余扫描、并发的反向 DNS 解析、更多的 NSE 脚本支持 IPv6。

3. 基础架构升级

虽然已经是有18年历史的项目,但是我们并不固步自封地守着残破的基础架构不放。Nmap 项目持续地跟进最新的技术,加强开发过程以服务日益增多的用户。比如说,我们将 nmap.org 网站全部转换到 SSL 上来避免二进制程序被木马感染和减少窥探风险。我们在大部分工作流中使用了 Git 版本控制系统,并在 Github 上建立了官方的 Nmap subversion 版本库镜像 ,我们鼓励大家提交代码补丁到 Github 上去。我们也创建了一个 官方的 bug 跟踪系统,也放在 Github 上。通过这样的跟踪 bug 和接受功能请求的方式降低了缺陷的数量。

4. 扫描更快

18年来,Nmap 不断刷新了网络同步扫描的速度上限,这个版本也不例外。新的 Nsock 引擎极大提升了在 Windows 和 BSD 系统上的性能, 目标重排 target reordering 防止了多宿主系统上的隐蔽死角,NSE 优化带来了更快的 -sV 扫描。

5. SSL/TLS 扫描解决方案的选择

TLS 及其前身 SSL 是网站安全的基础,所以当类似心脏流血、 POODLE 和 FREAK 这样的大漏洞出现时,Nmap 的应对就是 NSE 漏洞检测脚本。整个重写了的 ssl-enum-ciphers 脚本可以更快地进行 TLS 部署问题的分析,也优化了版本探测功能,可以更快的检测最新的 TLS 握手的版本。

6. 增强 Ncat

我们非常兴奋而自豪地宣布:Ncat 在 RedHat/Fedora 系列的发行版中成为了默认提供“netcat” 和“nc”命令的软件包!这是我们大量修正了错误和增强了对 netcat 选项兼容性的结果。另一个让人兴奋的地方是增加了一个嵌入式的 Lua 接口,可以创建简单的跨平台的守护进程和流量的过滤器。

7. 无与伦比的可移植性

Nmap 在跨平台方面做的非常棒,它可以运行在各种高深的、古老的系统上。而我们的二进制程序则对最新的流行操作系统保持紧密更新。Nmap 可以完全运行在从 Windows 10 到 Windows Vista 的操作系统上,根据大家的需求,我们甚至在 Windows XP 上也可以运行——虽然我们建议他们升级系统。 Mac OS X 则支持从 10.8 Mountain Lion 到 10.11 El Capitan。此外,我们更新了 Solaris 和 AIX 的支持。当然,Linux 用户,那就更没的说了。

Retro Terminal in Linux

你有怀旧情节?那就试试 安装复古终端应用 cool-retro-term 来一瞥过去的时光吧。顾名思义,cool-retro-term 是一个兼具酷炫和怀旧的终端。

你还记得那段遍地都是 CRT 显示器、终端屏幕闪烁不停的时光吗?现在你并不需要穿越到过去来见证那段时光。假如你观看背景设置在上世纪 90 年代的电影,你就可以看到大量带有绿色或黑底白字的显像管显示器。这种极客光环让它们看起来非常酷!

若你已经厌倦了你机器中终端的外表,正寻找某些炫酷且‘新奇’的东西,则 cool-retro-term 将会带给你一个复古的终端外表,使你可以重温过去。你也可以改变它的颜色、动画类型并添加一些额外的特效。

下面是不同外观下 cool-retro-term 的一些截图:

Retro Terminal

Retro Terminal Linux

Vintage Terminal

在基于 Ubuntu 的 Linux 发行版本下安装 cool-retro-term

如果想在基于 Ubuntu 的 Linux 发行版本下安装 cool-retro-term,例如 Linux Mint,elementary OS, Linux Lite 等,可以使用下面的 PPA:

sudo add-apt-repository ppa:noobslab/apps
sudo apt-get update
sudo apt-get install cool-retro-term

在基于 Arch 的 Linux 发行版本下安装 cool-retro-term

若你想在诸如 AntergosManjaro 等基于 Arch 的 Linux 发行版本下安装 cool-retro-term ,则可以使用下面的命令:

sudo pacman -S cool-retro-term

从源代码安装 cool-retro-term

如果你想从源代码安装这个应用,那么首先你需要安装一些依赖。在基于 Ubuntu 的发行版本中,已知的依赖有:

sudo apt-get install git build-essential qmlscene qt5-qmake qt5-default qtdeclarative5-dev qtdeclarative5-controls-plugin qtdeclarative5-qtquick2-plugin libqt5qml-graphicaleffects qtdeclarative5-dialogs-plugin qtdeclarative5-localstorage-plugin qtdeclarative5-window-plugin

对于其他发行版本,已知的依赖可以在 cool-retro-term 的 github 页面 中找到。

现在使用下面的命令来编译这个程序吧:

git clone https://github.com/Swordfish90/cool-retro-term.git
cd cool-retro-term
qmake && make

一旦程序编译成功,你就可以使用下面的命令来运行它了:

./cool-retro-term

假如你想把这个应用放在程序菜单中以便快速找到,这样你就不用再每次手动地用命令来启动它,则你可以使用下面的命令:

sudo cp cool-retro-term.desktop /usr/share/applications

在这里你可以学到更多的终端技巧。在 Linux 中享受这个复古的终端吧 :)

稿件来自: Abhishek Prakash


via: http://itsfoss.com/cool-retro-term/

作者:Abhishek Prakash 译者:FSSlc 校对:wxy

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

我告诉你一个秘密:DevOps 云计算之类的东西可以把我的程序运行在世界上任何一个地方,这对我来说仍然有一点神秘。但随着时间流逝,我意识到理解大规模的机器增减和应用程序部署的来龙去脉对一个开发者来说是非常重要的知识。这类似于成为一个专业的音乐家,当然你肯定需要知道如何使用你的乐器,但是,如果你不知道一个录音棚是如何工作的,或者如何适应一个交响乐团,那么你在这样的环境中工作会变得非常困难。

在软件开发的世界里,使你的代码进入我们的更大的世界如同把它编写出来一样重要。DevOps 重要,而且是很重要。

因此,为了弥合 开发 Dev 部署 Ops 之间的空隙,我会从头开始介绍容器技术。为什么是容器?因为有强力的证据表明,容器是机器抽象的下一步:使计算机成为场所而不再是一个东西。理解容器是我们共同的旅程。

在这篇文章中,我会介绍 容器化 containerization 背后的概念。包括容器和虚拟机的区别,以及容器构建背后的逻辑以及它是如何适应应用程序架构的。我会探讨轻量级的 Linux 操作系统是如何适应容器生态系统。我还会讨论使用镜像创建可重用的容器。最后我会介绍容器集群如何使你的应用程序可以快速扩展。

在后面的文章中,我会一步一步向你介绍容器化一个示例应用程序的过程,以及如何为你的应用程序容器创建一个托管集群。同时,我会向你展示如何使用 Deis 将你的示例应用程序部署到你本地系统以及多种云供应商的虚拟机上。

让我们开始吧。

虚拟机的好处

为了理解容器如何适应事物发展,你首先要了解容器的前任:虚拟机。

虚拟机 virtual machine(VM) 是运行在物理宿主机上的软件抽象。配置一个虚拟机就像是购买一台计算机:你需要定义你想要的 CPU 数目、RAM 和磁盘存储容量。配置好了机器后,你为它加载操作系统,以及你想让虚拟机支持的任何服务器或者应用程序。

虚拟机允许你在一台硬件主机上运行多个模拟计算机。这是一个简单的示意图:

虚拟机可以让你能充分利用你的硬件资源。你可以购买一台巨大的、轰隆作响的机器,然后在上面运行多个虚拟机。你可以有一个数据库虚拟机以及很多运行相同版本的定制应用程序的虚拟机所构成的集群。你可以在有限的硬件资源获得很多的扩展能力。如果你觉得你需要更多的虚拟机而且你的宿主硬件还有容量,你可以添加任何你需要的虚拟机。或者,如果你不再需要一个虚拟机,你可以关闭该虚拟机并删除虚拟机镜像。

虚拟机的局限

但是,虚拟机确实有局限。

如上面所示,假如你在一个主机上创建了三个虚拟机。主机有 12 个 CPU,48 GB 内存和 3TB 的存储空间。每个虚拟机配置为有 4 个 CPU,16 GB 内存和 1TB 存储空间。到现在为止,一切都还好。主机有这个容量。

但这里有个缺陷。所有分配给一个虚拟机的资源,无论是什么,都是专有的。每台机器都分配了 16 GB 的内存。但是,如果第一个虚拟机永不会使用超过 1GB 分配的内存,剩余的 15 GB 就会被浪费在那里。如果第三个虚拟机只使用分配的 1TB 存储空间中的 100GB,其余的 900GB 就成为浪费空间。

这里没有资源的流动。每台虚拟机拥有分配给它的所有资源。因此,在某种方式上我们又回到了虚拟机之前,把大部分金钱花费在未使用的资源上。

虚拟机还有另一个缺陷。让它们跑起来需要很长时间。如果你处于基础设施需要快速增长的情形,即使增加虚拟机是自动的,你仍然会发现你的很多时间都浪费在等待机器上线。

来到:容器

概念上来说,容器是一个 Linux 进程,Linux 认为它只是一个运行中的进程。该进程只知道它被告知的东西。另外,在容器化方面,该容器进程也分配了它自己的 IP 地址。这点很重要,重要的事情讲三遍,这是第二遍。在容器化方面,容器进程有它自己的 IP 地址。一旦给予了一个 IP 地址,该进程就是宿主网络中可识别的资源。然后,你可以在容器管理器上运行命令,使容器 IP 映射到主机中能访问公网的 IP 地址。建立了该映射,无论出于什么意图和目的,容器就是网络上一个可访问的独立机器,从概念上类似于虚拟机。

这是第三遍,容器是拥有不同 IP 地址从而使其成为网络上可识别的独立 Linux 进程。下面是一个示意图:

容器/进程以动态、合作的方式共享主机上的资源。如果容器只需要 1GB 内存,它就只会使用 1GB。如果它需要 4GB,就会使用 4GB。CPU 和存储空间利用也是如此。CPU、内存和存储空间的分配是动态的,和典型虚拟机的静态方式不同。所有这些资源的共享都由容器管理器来管理。

最后,容器能非常快速地启动。

因此,容器的好处是:你获得了虚拟机独立和封装的好处,而抛弃了静态资源专有的缺陷。另外,由于容器能快速加载到内存,在扩展到多个容器时你能获得更好的性能。

容器托管、配置和管理

托管容器的计算机运行着被剥离的只剩下主要部分的某个 Linux 版本。现在,宿主计算机流行的底层操作系统是之前提到的 CoreOS。当然还有其它,例如 Red Hat Atomic HostUbuntu Snappy

该 Linux 操作系统被所有容器所共享,减少了容器足迹的重复和冗余。每个容器只包括该容器特有的部分。下面是一个示意图:

你可以用它所需的组件来配置容器。一个容器组件被称为 layer 。层是一个容器镜像,(你会在后面的部分看到更多关于容器镜像的介绍)。你从一个基本层开始,这通常是你想在容器中使用的操作系统。(容器管理器只提供你所要的操作系统在宿主操作系统中不存在的部分。)当你构建你的容器配置时,你需要添加层,例如你想要添加网络服务器时这个层就是 Apache,如果容器要运行脚本,则需要添加 PHP 或 Python 运行时环境。

分层非常灵活。如果应用程序或者服务容器需要 PHP 5.2 版本,你相应地配置该容器即可。如果你有另一个应用程序或者服务需要 PHP 5.6 版本,没问题,你可以使用 PHP 5.6 配置该容器。不像虚拟机,更改一个版本的运行时依赖时你需要经过大量的配置和安装过程;对于容器你只需要在容器配置文件中重新定义层。

所有上面描述的容器的各种功能都由一个称为 容器管理器 container manager 的软件控制。现在,最流行的容器管理器是 DockerRocket。上面的示意图展示了容器管理器是 Docker,宿主操作系统是 CentOS 的主机情景。

容器由镜像构成

当你需要将我们的应用程序构建到容器时,你就要编译镜像。镜像代表了你的容器需要完成其工作的容器模板。(容器里可以在容器里面,如下图)。镜像存储在 注册库 registry 中,注册库通过网络访问。

从概念上讲,注册库类似于一个使用 Java 的人眼中的 Maven 仓库、使用 .NET 的人眼中的 NuGet 服务器。你会创建一个列出了你应用程序所需镜像的容器配置文件。然后你使用容器管理器创建一个包括了你的应用程序代码以及从容器注册库中下载的部分资源。例如,如果你的应用程序包括了一些 PHP 文件,你的容器配置文件会声明你会从注册库中获取 PHP 运行时环境。另外,你还要使用容器配置文件声明需要复制到容器文件系统中的 .php 文件。容器管理器会封装你应用程序的所有东西为一个独立容器,该容器将会在容器管理器的管理下运行在宿主计算机上。

这是一个容器创建背后概念的示意图:

让我们仔细看看这个示意图。

(1)代表一个定义了你容器所需东西以及你容器如何构建的容器配置文件。当你在主机上运行容器时,容器管理器会读取该配置文件,从云上的注册库中获取你需要的容器镜像,(2)将镜像作为层添加到你的容器中。

另外,如果组成镜像需要其它镜像,容器管理器也会获取这些镜像并把它们作为层添加进来。(3)容器管理器会将需要的文件复制到容器中。

如果你使用了 配置 provisioning 服务,例如 Deis,你刚刚创建的应用程序容器做成镜像,(4)配置服务会将它部署到你选择的云供应商上,比如类似 AWS 和 Rackspace 云供应商。

集群中的容器

好了。这里有一个很好的例子说明了容器比虚拟机提供了更好的配置灵活性和资源利用率。但是,这并不是全部。

容器真正的灵活是在集群中。记住,每个容器有一个独立的 IP 地址。因此,能把它放到负载均衡器后面。将容器放到负载均衡器后面,这就上升了一个层面。

你可以在一个负载均衡容器后运行容器集群以获得更高的性能和高可用计算。这是一个例子:

假如你开发了一个资源密集型的应用程序,例如图片处理。使用类似 Deis 的容器配置技术,你可以创建一个包括了你图片处理程序以及你图片处理程序需要的所有资源的容器镜像。然后,你可以部署一个或多个容器镜像到主机上的负载均衡器下。一旦创建了容器镜像,你可以随时使用它。当系统繁忙时可以添加更多的容器实例来满足手中的工作。

这里还有更多好消息。每次添加实例到环境中时,你不需要手动配置负载均衡器以便接受你的容器镜像。你可以使用服务发现技术让容器告知均衡器它可用。然后,一旦获知,均衡器就会将流量分发到新的结点。

全部放在一起

容器技术完善了虚拟机缺失的部分。类似 CoreOS、RHEL Atomic、和 Ubuntu 的 Snappy 宿主操作系统,和类似 Docker 和 Rocket 的容器管理技术结合起来,使得容器变得日益流行。

尽管容器变得更加越来越普遍,掌握它们还是需要一段时间。但是,一旦你懂得了它们的窍门,你可以使用类似 Deis 这样的配置技术使容器创建和部署变得更加简单。

从概念上理解容器和进一步实际使用它们完成工作一样重要。但我认为不实际动手把想法付诸实践,概念也难以理解。因此,我们该系列的下一阶段就是:创建一些容器。


via: https://deis.com/blog/2015/developer-journey-linux-containers

作者:Bob Reselman 译者:ictlyh 校对:wxy

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

在本系列的前一篇文章,我们回顾了如何在可能包括多种类型操作系统的网络上配置 Samba 共享。现在,如果你需要为一组类 Unix 客户端配置文件共享,很自然的你会想到网络文件系统,或简称 NFS。

设置使用 Kerberos 进行身份验证的 NFS 服务器

RHCE 系列:第七部分 - 设置使用 Kerberos 进行身份验证的 NFS 服务器

在这篇文章中我们会介绍配置基于 Kerberos 身份验证的 NFS 共享的整个流程。假设你已经配置好了一个 NFS 服务器和一个客户端。如果还没有,可以参考 安装和配置 NFS 服务器 - 它列出了需要安装的依赖软件包并解释了在进行下一步之前如何在服务器上进行初始化配置。

另外,你可能还需要配置 SELinuxfirewalld 以允许通过 NFS 进行文件共享。

下面的例子假设你的 NFS 共享目录在 box2 的 /nfs:

# semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
# restorecon -R /nfs
# setsebool -P nfs_export_all_rw on
# setsebool -P nfs_export_all_ro on

(其中 -P 标记指示重启持久有效)。

最后,别忘了:

创建 NFS 组并配置 NFS 共享目录

1、 新建一个名为 nfs 的组并给它添加用户 nfsnobody,然后更改 /nfs 目录的权限为 0770,组属主为 nfs。于是,nfsnobody(对应请求用户)在共享目录有写的权限,你就不需要在 /etc/exports 文件中使用 norootsquash(LCTT 译注:设为 root\_squash 意味着在访问 NFS 服务器上的文件时,客户机上的 root 用户不会被当作 root 用户来对待)。

# groupadd nfs
# usermod -a -G nfs nfsnobody
# chmod 0770 /nfs
# chgrp nfs /nfs

2、 像下面那样更改 export 文件(/etc/exports)只允许从 box1 使用 Kerberos 安全验证的访问(sec=krb5)。

注意:anongid 的值设置为之前新建的组 nfs 的 GID:

exports – 添加 NFS 共享

/nfs box1(rw,sec=krb5,anongid=1004)

3、 再次 exprot(-r)所有(-a)NFS 共享。为输出添加详情(-v)是个好主意,因为它提供了发生错误时解决问题的有用信息:

# exportfs -arv

4、 重启并启用 NFS 服务器以及相关服务。注意你不需要启动 nfs-lock 和 nfs-idmapd,因为系统启动时其它服务会自动启动它们:

# systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
# systemctl enable rpcbind nfs-server

测试环境和其它前提要求

在这篇指南中我们使用下面的测试环境:

  • 客户端机器 [box1: 192.168.0.18]
  • NFS / Kerberos 服务器 [box2: 192.168.0.20] (也称为密钥分发中心,简称 KDC)。

注意:Kerberos 服务是至关重要的认证方案。

正如你看到的,为了简便,NFS 服务器和 KDC 在同一台机器上,当然如果你有更多可用机器你也可以把它们安装在不同的机器上。两台机器都在 mydomain.com 域。

最后同样重要的是,Kerberos 要求客户端和服务器中至少有一个域名解析的基本方式和网络时间协议服务,因为 Kerberos 身份验证的安全一部分基于时间戳。

为了配置域名解析,我们在客户端和服务器中编辑 /etc/hosts 文件:

host 文件 – 为域添加 DNS

192.168.0.18    box1.mydomain.com    box1
192.168.0.20    box2.mydomain.com    box2

在 RHEL 7 中,chrony 是用于 NTP 同步的默认软件:

# yum install chrony
# systemctl start chronyd
# systemctl enable chronyd

为了确保 chrony 确实在和时间服务器同步你系统的时间,你可能要输入下面的命令两到三次,确保时间偏差尽可能接近 0:

# chronyc tracking

用 Chrony 同步服务器时间

用 Chrony 同步服务器时间

安装和配置 Kerberos

要设置 KDC,首先在客户端和服务器安装下面的软件包(客户端不需要 server 软件包):

# yum update && yum install krb5-server krb5-workstation pam_krb5

安装完成后,编辑配置文件(/etc/krb5.conf 和 /var/kerberos/krb5kdc/kadm5.acl),像下面那样用 mydomain.com 替换所有 example.com。

下一步,确保 Kerberos 能功过防火墙并启动/启用相关服务。

重要:客户端也必须启动和启用 nfs-secure:

# firewall-cmd --permanent --add-service=kerberos
# systemctl start krb5kdc kadmin nfs-secure   
# systemctl enable krb5kdc kadmin nfs-secure       

现在创建 Kerberos 数据库(请注意这可能会需要一点时间,因为它会和你的系统进行多次交互)。为了加速这个过程,我打开了另一个终端并运行了 ping -f localhost 30 到 45 秒):

# kdb5_util create -s

创建 Kerberos 数据库

创建 Kerberos 数据库

下一步,使用 kadmin.local 工具为 root 创建管理权限:

# kadmin.local
# addprinc root/admin

添加 Kerberos 服务器到数据库:

# addprinc -randkey host/box2.mydomain.com

在客户端(box1)和服务器(box2)上对 NFS 服务同样操作。请注意下面的截图中在退出前我忘了在 box1 上进行操作:

# addprinc -randkey nfs/box2.mydomain.com
# addprinc -randkey nfs/box1.mydomain.com

输入 quit 和回车键退出:

添加 Kerberos 到 NFS 服务器

添加 Kerberos 到 NFS 服务器

为 root/admin 获取和缓存 票据授权票据 ticket-granting ticket

# kinit root/admin
# klist

缓存 Kerberos

缓存 Kerberos

真正使用 Kerberos 之前的最后一步是保存被授权使用 Kerberos 身份验证的规则到一个密钥表文件(在服务器中):

# kdadmin.local
# ktadd host/box2.mydomain.com
# ktadd nfs/box2.mydomain.com
# ktadd nfs/box1.mydomain.com

最后,挂载共享目录并进行一个写测试:

# mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
# echo "Hello from Tecmint.com" > /mnt/greeting.txt

挂载 NFS 共享

挂载 NFS 共享

现在让我们卸载共享,在客户端中重命名密钥表文件(模拟它不存在)然后试着再次挂载共享目录:

# umount /mnt
# mv /etc/krb5.keytab /etc/krb5.keytab.orig

挂载/卸载 Kerberos NFS 共享

挂载/卸载 Kerberos NFS 共享

现在你可以使用基于 Kerberos 身份验证的 NFS 共享了。

总结

在这篇文章中我们介绍了如何设置带 Kerberos 身份验证的 NFS。和我们在这篇指南中介绍的相比,该主题还有很多相关内容,可以在 Kerberos 手册 查看,另外至少可以说 Kerberos 有一点棘手,如果你在测试或实现中遇到了任何问题或需要帮助,别犹豫在下面的评论框中告诉我们吧。


via: http://www.tecmint.com/setting-up-nfs-server-with-kerberos-based-authentication/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

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