Quantcast
Channel: Linux 中国◆开源社区
Viewing all 9060 articles
Browse latest View live

杨镭访谈:UCloud 的技术价值观

$
0
0

你问我相信什么样的事情?我们相信云计算是长远的。

去年,作为《穿山甲专访》系列采访之一,我们曾经给大家分享过 UCloud 技术副总裁杨镭先生的访谈。那是我和杨镭先生的第一次见面,虽然采访时间不长,但是他务实严谨的风格,也给我留下了深刻的印象。因此,这次又特意预约了他的时间,专程去上海和他深入地聊了一些过去七年 UCloud 的技术价值观理念,并与这位从一线运维跌打滚爬出身的技术领袖的所思所想产生了深切的共鸣。

作为采访者,我也是一位做了二十多年互联网技术工作的老兵,虽然在私交上我和杨镭并不算熟悉,但是随着在互联网、技术和开源方面话题的展开,我们很快就聊得十分投机。

【图:现场采访图】

第一章 一位技术人员的成长史

话题是先从杨镭先生的技术背景和从业经历展开的。

老王:是否可以请先介绍一下你之前的技术背景和你的从业方面的情况?

杨镭:我结合 UCloud 整个技术发展的情况和我自己的情况跟你讲一下。

我的背景是这样的,我 2006 年加入盛大在线,刚入职时我是从最一线的运维人员开始做的,大概两年多以后逐渐地开始参加一些研发的工作,做一些运维的平台系统开发工作。

我跟老季(UCloud CEO 季昕华)是大概 2008 年认识的,他当时在管盛大在线。盛大在线提供运维平台来支撑各个游戏部门的业务,包括像盛大创新院的服务器,其实背后都是由盛大在线提供运维的。在之后做盛大云时,我们承接了非常多的业务部门的运维工作,而当时我就是在做平台技术方面的工作。

那时包括 OpenStack 才刚刚出现,AWS在国内刚被知晓,而我们那时候自己最早做虚拟化都是通过 VMWare 来做的。我们一直在关注云计算的发展。在 2011 年底,老季出来创业时,问我有没有兴趣出来,我就出来了。

我们当时认为,运维应该走到一线去产生业务价值,而云计算正好是可以让做运维、做技术的人能做产品的一个技术。云计算说白了是把以前运维的东西放在台前了,可以去赚钱了。

📧从一封未发出的邮件说起…

杨镭:当时我离开盛大的时候,写了一封邮件,但邮件我没发出去,一直存在我的草稿箱里,现在还在。其实我对盛大也是挺有感情的,整个平台都是我们一手搭建的,做了很多很多的事情,还是很辛苦的。

那封信大概的意思是说,云计算真的能解决很多问题,它能让服务器弹性地、不用关机去升级内存和 CPU……还有很多充满想象力的事情,其实这也是 UCloud 的初衷,是我们出来创业的初心,包括老季在内,其实也是这样的,在那个时候我们每次出问题,他都知道,可能是哪个机房的网线插反了,或者哪个服务器配置不小心没搞对,就像蝴蝶效应一样引发了严重的后果。

那时候出来,我们就是想把云这个事情做好。

践行新技术,到处吃螃蟹

杨镭:因为我不是从研发出身的,当时 UCloud 创业的时候也不容易,我们当时除了三个创始人之外,还有五个研发技术人员。当时所有的运维、开发、底层的一些工作,这些我都参与过。

一开始我是做网络方面的研发,当时懂网络的人比较少,而我是做运维出身的。那时还没有 SDN 的概念,我们开始做云计算的时候,当时主流的虚拟化技术是 Xen,KVM 刚进入视野。我那时候很关心 Linux 内核方面的技术,我认为 KVM 一定是有发展的,所以就建议围绕KVM而不是Xen做底层虚拟化,我们一开始采用的 KVM 就是这样来的,结果在后面就少走了很多的弯路。

我主要的一个工作是虚拟机创建流程,这跟我自己之前的一些运维知识也比较匹配,在这方面我做的很多工作主要是优化。这里面其实有一个云计算产品的精髓,云计算产品如果要做好有两方面:

一方面技术要做好,它的可拓展性、稳定性要好,这是从研发的架构层面来看;另一个方面,你要真正地懂这个产品

比如说云主机,你现在来看很多云计算产品的功能都已经习以为常了,但是 UCloud 一开始做了很多可能现在看起来不同寻常的事情。为什么会做这些事情呢?根本原因在于我们对于运维的理解比较深刻,所以我们敢先做这些功能。比如说当时有一个叫“重装系统”的功能,当时很多云服务商是没有这个功能的——那时候还很早,大约是 2012年的时候——这是我现在回过头来看一开始 UCloud 在那个阶段能冲出来的一个蛮重要的原因。

当时 SDN 也是这样的。在那个时候,很多技术和框架还没有标准的、可以参考的开源实现。比如说做虚拟化,你可以用 KVM 或 Xen 都能做 。因为那个时候我对网络方面一直很感兴趣,我以前主要是做运维,对 IPtables 很熟悉,排查过非常多复杂的现网故障,所以对于IPtables在生产环境中的使用有一定的把握。当时我们就是这样,去 AWS 的 EC2 虚拟机中抓包结合网络上的材料来分析背后的实现方案,然后用最有把握的工具链来实现。我们很快就做了一套自己的 SDN——当时还没有 Open vSwitch,它是 2013 年出来的——而我们当时就很大胆地采用了一个这样的东西。现在你看 UCloud 发布的技术文章、我们把技术实现方式都讲了出去,但是那个时候你只能自己猜和试验。

云计算的问题在于什么呢?它的产品是技术型的,客户用你的产品和服务的时候,你跟客户接触的人员是要懂技术的,尽管我们传统上认为这个事情很多还是商务上、销售上的事情。但是最终你要成就一个优质的客户,因为只有优质的客户,它的业务好,才会更多的买云服务。而优质的客户不光看客户关系的,看的还是你的技术、你的产品和你的人员是不是专业。因为这个原因,所以我后来在整个 UCloud 工作的过程里,不断地在往前走,去做技术支持。那时候我们很重视客户,我去做解决方案架构师,甚至有段时间在事业部参与销售工作,其实是因为被这个问题推着往前走的,包括我现在其实主要的精力也在负责产品以及整体的技术管理这块。

差不多我的技术历程就是这样的,这也是 UCloud 技术这几年发展的一个缩影。

第二章 技术观与价值观

老王:你作为 UCloud 的技术负责人,之前在 TIC 大会上我也听你讲到过 UCloud 的技术价值观的观点,我想了解一下在宏观上、较高层面上你是如何看待云计算技术的发展的,以及这里传达了什么样的价值观?

「能力」——用工程能力解决技术问题

杨镭:接着前面的话题说。尽管在方向上是对的,但是我们还是走了很多小的弯路。我们有一个核心的能力,也是 UCloud 的核心技术能力,就是出现 BUG 或者架构缺陷的时候可以很快地在现网透明地升级解决掉——这实际上是对我们后端的无缝升级能力特别大的挑战。我自己的感受是,一开始讲要这样做时我其实不太相信能做到,但是在第一年,我们就做到了很多这样的事情。

我举个例子,当时我们产品上线以后,做弹性 IP 的实现,一开始很简单,我们搞几台设备,用IPtables实现了弹性IP和内网云主机的映射,放在两台机器上,有故障时候服务自动切换,一切都很美好。但是上线以后就开始发现问题,这两台机器不停地宕机,其实就是出现了 “Kernel Panic”。因为我们一开始只有两台核心网络接入设备,宕机一台就是 50% 的服务不可用,然后客户自然就炸了。但是那时候我们是解决不了这个 “Kernel Panic” 问题的,尽管懂一点内核知识,但是对内核代码层面的问题并不了解,我不知道为什么会发生,虽然我知道肯定是那个方向的问题。

我们搞不定怎么办呢?当时老季和我们 COO 经常在外面和客户解释网络故障的原因,例如中午和客户吃饭,边吃边告诉客户我们出了什么问题,会采取什么样的措施确保不再出现。而在后面,我们做了一件什么事儿呢?我们大概花了 2-3 天的时间,我们把两台集中式的服务器变成分布式的了,因为在物理机上崩溃了之后、服务器就挂了嘛,所以我们把这个服务放到虚拟机里去,每一台物理机上我们放两台。这样比如说到时候这里宕机了,这两台就可以及时切换,而且因为是虚拟机,切换速度很快。我们写了一个自动化地拉起所有服务的脚本。两三天就完成了,就把这个问题救活了。如果当时不解决,可能 UCloud 就挂了。

我们靠这个机制顶了大半年,直到我们的内核负责人来了。最后,发现是什么问题呢?确实是流量带宽控制那里有一个隐藏的 BUG,这个 BUG 其实连 CentOS 都没修复——因为我们用的是 CentOS——它没修复,而我们也搞不定。当时去查找 CentOS 的补丁列表,并没发现有这方面的补丁。到最后是怎么发现的呢?是上游后来发一个修复,但是这个修复 CentOS 一直都没放进来。

你看,这本身是一个非常深入的技术问题,但在创业的时候你不一定能解决,而我们通过架构的优化把它解决掉了,这实际上是 UCloud 从成立第一年开始到现在的一个核心能力。我自己经历过这个事情以后,再遇到什么事情都不怕了。

用架构、用工程能力去解决了一个隐藏很深的技术问题,以成本最小的方法解决问题。

杨镭:这是一种变换的能力。这是整个 UCloud 技术文化所贯穿的一点,先提供一个方案把它解决掉,让我们的服务品质不会降低。而要做到这一点,我觉得最难的是你需要对工程这个事情有深刻的理解。大家都会说工程师很重要、工程能力很重要,但是说实话,就像我开始来到 UCloud 的时候,我也会讲我是工程师,我很自信这一点,但是在我第一年遇到并解决了很多问题以后,我发现自己其实还不太懂。比如说,你看现在最近很火一些知识付费类课程,当我走到那个高度后我跟你说这个事情应该这样,应该那样。但如果你是才进入行业两三年的人,你是听不懂的,你并不知道怎么做,只能知道这句话应该是对的。这句话可能确实是对的,但是在日常工作中,你第一时间是反应不过来的,因为你不会深刻理解这句话。 

一开始我们的工程能力就是很强的,因为这个基因来自于创始团队是当时最顶尖的工程团队。云计算天生对稳定的要求特别高,这是非常偏工程化,而这个能力对整个行业的影响是很深远的。

「尝试」——当时胆子真的太大了,走得很前面

杨镭:当时我们遇到的挑战很多,我们一开始第一代用 SDN 白盒交换机的,当时没多想就上了,然后我们遇到了非常多的问题,最早还用过 Open Switch。其实 UCloud 前几年在技术上走的比较靠前,因为我们规模较小,决策更快,而且我们的技术团队胆子也很大,因为对技术团队很自信,对自己的工程能力很自信,所以敢尝试新的技术。比如说在网络层,我们有一套是用的 OVS,还有一套是用白盒交换机,而我们在两套之间还做了无缝地升级。我们的胆子大,所以那时候我们玩的都是新的技术。我还记得我在 2013 年出去做过 SDN 相关的演讲,现在看来当时胆子真的太大了,走得很前面。

那时候大家都知道是趋势,但是到底会怎么发展还没有人敢下定论,就像 Service Mesh 一样,现在绝大多数公司在做研究,在做概念验证,而我们已经在产品环境上跑了,我们走在很前面,有点孤独。

从我自己的角度看,我们那时候技术还是走得很快的。我举一个例子,比如现在有的云服务商要在两个地域之间打通,比如说从北京到香港,一般会告诉你要找第三方的网络供应商帮你打通。而 UCloud 是怎么做的呢?我们在底层有物理专线,用户只要在控制台点一下两边就通了。大概在相当早的时候,我们就提供了两个地域连接打通的功能。现在有的云服务商还需要几天才能为客户打通,而我们只要控制台上点一下,计费之后就通了,两个地域间的虚拟机就全部都互通了。

我记得那时候在这个功能的发布前夕,我们为此做了一整个通宵。在早上 7 点钟的时候,公司有人来上班了,我就在群里发了一条消息,说我们这个搞完了,大家都很激动,虽然现在两个地域之间的云计算服务器连起来是很正常的,但是在那个时候是没有人做的,那时候就感觉很有成就感。

其实好几个 UCloud 早期的研发同事,他们都有类似于跟我一样的事情,只是我当时的领域全部在网络上,而他们的领域在其它的方面。

整个云计算这个事情,它的核心其实是一个技术问题,最终想在这个地方走长远,本质上是要比技术能力的,一不小心就会落后。

我再举一个例子,我们在 2014 年下半年的时候招了第一个做 DPDK 研发的人,那时候我们知道 DPDK 技术发展前景还不错,所以我们招了这个岗位;而到了 2018 年的下半年,如果哪家有云产品而没有 DPDK 技术,你的产品是完全不具备商业竞争力的,你会卖得很贵,性能非常差,而友商会卖得很便宜,性能又很好,这个就是技术的红利。DPDK 的红利,但是如果你当时不投入的话,到现在可能会来不及。这是看三年的,所以我们现在在做 Serverless 方面的工作,投入是比较大的,但是如果我们不投入,可能三年以后或者四五年以后就出局了。

杨镭:我们还做了很多很有意思的事情。比如,很多用户买了云计算的虚拟机以后由于密码不严格被黑掉了,然后就变成肉鸡对外发大量数据包。这个事情很多云服务商的处理是很简单粗暴的,就是把你机器关掉,但客户其实是很受伤的。而我们当时不是这样做的。我们看,它不是对外发包吗?我们在宿主机上打开 TCP 来抓包,比如说 10 秒钟的包——因为不能长抓,长抓的量太大了——把它放到数据库里,然后我们去分析这个 TCP 包的特征、出入的比例,如果只是出站没有入站的话,那就肯定是被利用攻击了嘛。后来我们发现,所有被反射攻击利用的特征都是这样的。我们发现如果符合这个特征,就把这个虚拟机的网络给处理掉——我们会把它的网络给漂走,叫做隔离区,并没有把机器关掉,不会影响其他人,但是他的虚拟机自己还是可以登进去的。我们把这叫做最优选择,但是这个技术上很复杂。

实际上这不是纯技术的问题,这是一个理念,你要懂技术,还要懂业务,还要懂数据分析,还要设计一套东西把它串起来。

我们觉得自豪的一点不是说这个技术很厉害,而是我们的友商没人这样去做。我们做了好几件类似的事情,我们最终带动了行业的发展,客户在 UCloud 里体会到好处以后,他跑到别的云服务商说,你看 UCloud 这样做的,别的云服务商没办法,就被我们反逼提供这样的功能。而且这种功能不是说我们为了超越谁,而是我们自己想出来的。我们自己的研发人员自己关起门来说,对这种事情还是挺自豪,某种意义上我觉得这其实是种创新。

「价值观」——我们相信云计算是长远的

老王:你刚才介绍了 UCloud 的情况,作为技术人员我也觉得很有心向往之的感觉。你觉得目前而言,你们这个四五百人的技术团队的优势主要是在工程能力上还是在你们团队上的技术文化上?

杨镭:从我这个角度,首先这是我们的精髓、文化或者说是技术文化。在这个问题上我们是不允许所谓的不纯粹的。所以在管理上,其实我们对刚才说的这几件事情,我们是要求很高的,如果你新来一个人你在文化上不认同,这个可能不适合你。

还有一方面,我们对整个技术的价值观就像上次我跟你聊的一样,我们会要求很高。我们除了自己不收集,还会帮用户把隐私保护好,告诉用户不要给我们任何的信息,而多数的公司是反过来的。我们大概会在 1 年多后完成大部分云上数据的加密,包括存量的数据。就像我们在去年的 TIC 大会上说的,这里会坚决投入,而且不是一个小的研发投入。因为说白了用户未必自己诉求那么强,很多时候没这个意识。而我们做这个事情因为有很多存量的云主机,几十万台的规模,我们要透明的、不影响性能、安全地放上去,而且密钥还要定期轮换,不能老是一把密钥,但是要轮换的时候又不能影响性能,所以在工程上是有挑战的和有技术深度的。我们做那么多的事情,说白了这就是价值观问题,我们真的对用户的数据安全非常重视。

树立了一个自己的独特价值观,而且为了这个价值观付出了代价、成本。

杨镭:尽管我们现在人不少了,但是我们产品线也很长,我们这点人也是不够的,我们现在做这个事情都在加班做,说白了时间不够,只能花时间解决这种问题。这种事情说白了是在价值观上,你做不做可能没有区别,但是我们认为真正长远地看这个事情是有意义的。眼前不会有太大的得益和收益,但是从长远的趋势看,从我们的信念看,保护隐私、保护数据安全其实是一个所有人都会走向的共同的目标,只是现在还看不到。 

所有的这些事情其实都是归纳到一点,你相信什么样的事情?我们相信云计算是长远的。我们跟客户的合作不是做一锤子买卖,我们甚至于对客户都有要求,我们都要做得很优秀,我们要长远看这件事情值不值得做?当然值得做。为什么要看长远?因为我们对自己还是有信心的。其实你的现在是被过去决定的,你现在是为未来做的,所以我们现在在这个层面上想的事情都是三年、五年以后的。现在这些从大势来看,我们做的这些其实都是因为我们前三年做了一些事情,我们坚持了一些事情,因为做了那些事情,我们活了下来了。现在数据隐私这个事情也好,数据安全这个事情也好,或者是很多 Serverless 产品也好,我们相信在那个时代会更重要,所以我们坚持做这个。

第三章 尾声

老王:做这个专访,一方面我们希望看到真正的技术人现在具体做哪些事情。另外一方面我们希望让大家看到有这样的公司在做具体的事情,这些事情会不会对他们产生触动、启发甚至吸引他们去关注或者参与,这是我们希望能进一步做到的东西。

我觉得今天你婉拒了很多采访的邀约而接受我们的专访,我觉得也很荣幸。一方面我们可以持续性地关注你们这边的技术进展,我们把有些可能在你们看来不值得一提,但是在我们看起来可能非常重要或者更有传播和示范意义事件传播给大家。我觉得今天的采访让我确实地了解到了很多我原来没有想到或者没有观察到的地方。

杨镭:我从一个运维人员走到现在,现在做这个事情我才能发现原来是这样的。我觉得我能理解你,因为大家专业不同,我们正好每天在这里做事情,所以就往这个方面想。我希望这篇采访能让大家知道有些事情怎么做更好,只是我们走在了前面一点,我们是这个行业里的人,我们有经验,我们传播出去,这个我很开心,就 OK 了。

“穿山甲专访”栏目是 Linux 中国社区推出的面向开源界、互联网技术圈的重要领军人物的系列采访,将为大家介绍中国开源领域中一些积极推动开源,谙熟开源思想的技术人,并辨析其思考、挖掘其动因,揭示其背后所发生的事情,为关注开源、有志于开源的企业和技术人标出一条路径。

取名为“穿山甲”寓意有二:取穿山甲挖掘、深入之意来象征技术进步和表征技术领袖的作用;穿山甲是珍稀保护动物,宣传公益。


小白观察:Let's Encrpt 正过渡到 ISRG Root

$
0
0

Big News

Let’s Encrpt 正过渡到 ISRG Root

非盈利加密组织 Let’s Encrypt  开始逐渐过渡为 ISRG Root, 这标志着它也逐渐成为顶级 CA (实际上还不是,但 Let’s Encrypt 已经被各家所认可)。【Scotthelme.co.uk】

Let’s Encrypt 推动了 HTTPS 的落地和推广,让过去成本极高的证书签发和部署成本不断降低。Let’s Encrypt 推动了 HTTPS 的落地和推广,让过去成本极高的证书签发和部署成本不断降低。对于整个行业来说,无疑是大功一件。 随着 Let’s Encrypt 的不断推广,终有一天, HTTPS 将成为标准。

Quick News

Ubuntu 19.04 将使用 Linux 5.0 内核

Ubuntu 将在新的桌面版本 19.04 中使用新的 Linux Kernel 5.0。相比前代,提供了 USB 3.2 、Type-C、AMD Radeon RX Vega M GPU 的支持。【ZDNet】

Google 将延长来自新开发者的应用核查

Google 表示,将加强对从未见过的开发者的核查,以避免“恶意”开发者。【BBC】

Pinterest 即将进行首次公开募股

知名设计网站 Pinterest 将于本周进行首次公开募股。Pinterest 是一个能够让设计师分享作品、获得灵感的地方。【CNET】

如何在 Linux 中配置 sudo 访问权限

$
0
0

Linux 系统中 root 用户拥有 Linux 中全部控制权力。Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为。

如果其他用户想去实施一些行为,不能为所有人都提供 root 访问权限。因为如果他或她做了一些错误的操作,没有办法去纠正它。

为了解决这个问题,有什么方案吗?

我们可以把 sudo 权限发放给相应的用户来克服这种情况。

sudo 命令提供了一种机制,它可以在不用分享 root 用户的密码的前提下,为信任的用户提供系统的管理权限。

他们可以执行大部分的管理操作,但又不像 root 一样有全部的权限。

什么是 sudo?

sudo 是一个程序,普通用户可以使用它以超级用户或其他用户的身份执行命令,是由安全策略指定的。

sudo 用户的访问权限是由 /etc/sudoers 文件控制的。

sudo 用户有什么优点?

在 Linux 系统中,如果你不熟悉一个命令,sudo 是运行它的一个安全方式。

  • Linux 系统在 /var/log/secure/var/log/auth.log 文件中保留日志,并且你可以验证 sudo 用户实施了哪些行为操作。
  • 每一次它都为当前的操作提示输入密码。所以,你将会有时间去验证这个操作是不是你想要执行的。如果你发觉它是不正确的行为,你可以安全地退出而且没有执行此操作。

基于 RHEL 的系统(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL))和基于 Debian 的系统(如 Debian、Ubuntu 和 LinuxMint)在这点是不一样的。

我们将会教你如何在本文中提及的两种发行版中执行该操作。

这里有三种方法可以应用于两个发行版本。

  • 增加用户到相应的组。基于 RHEL 的系统,我们需要添加用户到 wheel 组。基于 Debain 的系统,我们添加用户到 sudoadmin 组。
  • 手动添加用户到 /etc/group 文件中。
  • visudo 命令添加用户到 /etc/sudoers 文件中。

如何在 RHEL/CentOS/OEL 系统中配置 sudo 访问权限?

在基于 RHEL 的系统中(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL)),使用下面的三个方法就可以做到。

方法 1:在 Linux 中如何使用 wheel 组为普通用户授予超级用户访问权限?

wheel 是基于 RHEL 的系统中的一个特殊组,它提供额外的权限,可以授权用户像超级用户一样执行受到限制的命令。

注意,应该在 /etc/sudoers 文件中激活 wheel 组来获得该访问权限。

# grep -i wheel /etc/sudoers

## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL

假设我们已经创建了一个用户账号来执行这些操作。在此,我将会使用 daygeek 这个用户账号。

执行下面的命令,添加用户到 wheel 组。

# usermod -aG wheel daygeek

我们可以通过下面的命令来确定这一点。

# getent group wheel
wheel:x:10:daygeek

我将要检测用户 daygeek 是否可以访问属于 root 用户的文件。

$ tail -5 /var/log/secure
tail: cannot open /var/log/secure for reading: Permission denied

当我试图以普通用户身份访问 /var/log/secure 文件时出现错误。 我将使用 sudo 访问同一个文件,让我们看看这个魔术。

$ sudo tail -5 /var/log/secure
[sudo] password for daygeek:
Mar 17 07:01:56 CentOS7 sudo: daygeek : TTY=pts/0 ; PWD=/home/daygeek ; USER=root ; COMMAND=/bin/tail -5 /var/log/secure
Mar 17 07:01:56 CentOS7 sudo: pam_unix(sudo:session): session opened for user root by daygeek(uid=0)
Mar 17 07:01:56 CentOS7 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 07:05:10 CentOS7 sudo: daygeek : TTY=pts/0 ; PWD=/home/daygeek ; USER=root ; COMMAND=/bin/tail -5 /var/log/secure
Mar 17 07:05:10 CentOS7 sudo: pam_unix(sudo:session): session opened for user root by daygeek(uid=0)

方法 2:在 RHEL/CentOS/OEL 中如何使用 /etc/group 文件为普通用户授予超级用户访问权限?

我们可以通过编辑 /etc/group 文件来手动地添加用户到 wheel 组。

只需打开该文件,并在恰当的组后追加相应的用户就可完成这一点。

$ grep -i wheel /etc/group
wheel:x:10:daygeek,user1

在该例中,我将使用 user1 这个用户账号。

我将要通过在系统中重启 Apache httpd 服务来检查用户 user1 是不是拥有 sudo 访问权限。让我们看看这个魔术。

$ sudo systemctl restart httpd
[sudo] password for user1:

$ sudo grep -i user1 /var/log/secure
[sudo] password for user1:
Mar 17 07:09:47 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart httpd
Mar 17 07:10:40 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart httpd
Mar 17 07:12:35 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/grep -i httpd /var/log/secure

方法 3:在 Linux 中如何使用 /etc/sudoers 文件为普通用户授予超级用户访问权限?

sudo 用户的访问权限是被 /etc/sudoers 文件控制的。因此,只需将用户添加到 sudoers 文件中 的 wheel 组下即可。

只需通过 visudo 命令将期望的用户追加到 /etc/sudoers 文件中。

# grep -i user2 /etc/sudoers
user2 ALL=(ALL) ALL

在该例中,我将使用 user2 这个用户账号。

我将要通过在系统中重启 MariaDB 服务来检查用户 user2 是不是拥有 sudo 访问权限。让我们看看这个魔术。

$ sudo systemctl restart mariadb
[sudo] password for user2:

$ sudo grep -i mariadb /var/log/secure
[sudo] password for user2:
Mar 17 07:23:10 CentOS7 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/systemctl restart mariadb
Mar 17 07:26:52 CentOS7 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/grep -i mariadb /var/log/secure

在 Debian/Ubuntu 系统中如何配置 sudo 访问权限?

在基于 Debian 的系统中(如 Debian、Ubuntu 和 LinuxMint),使用下面的三个方法就可以做到。

方法 1:在 Linux 中如何使用 sudo 或 admin 组为普通用户授予超级用户访问权限?

sudoadmin 是基于 Debian 的系统中的特殊组,它提供额外的权限,可以授权用户像超级用户一样执行受到限制的命令。

注意,应该在 /etc/sudoers 文件中激活 sudoadmin 组来获得该访问权限。

# grep -i 'sudo\|admin' /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

假设我们已经创建了一个用户账号来执行这些操作。在此,我将会使用 2gadmin 这个用户账号。

执行下面的命令,添加用户到 sudo 组。

# usermod -aG sudo 2gadmin

我们可以通过下面的命令来确定这一点。

# getent group sudo
sudo:x:27:2gadmin

我将要检测用户 2gadmin 是否可以访问属于 root 用户的文件。

$ less /var/log/auth.log
/var/log/auth.log: Permission denied

当我试图以普通用户身份访问 /var/log/auth.log 文件时出现错误。 我将要使用 sudo 访问同一个文件,让我们看看这个魔术。

$ sudo tail -5 /var/log/auth.log
[sudo] password for 2gadmin:
Mar 17 20:39:47 Ubuntu18 sudo: 2gadmin : TTY=pts/0 ; PWD=/home/2gadmin ; USER=root ; COMMAND=/bin/bash
Mar 17 20:39:47 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by 2gadmin(uid=0)
Mar 17 20:40:23 Ubuntu18 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 20:40:48 Ubuntu18 sudo: 2gadmin : TTY=pts/0 ; PWD=/home/2gadmin ; USER=root ; COMMAND=/usr/bin/tail -5 /var/log/auth.log
Mar 17 20:40:48 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by 2gadmin(uid=0)

或者,我们可以通过添加用户到 admin 组来执行相同的操作。

运行下面的命令,添加用户到 admin 组。

# usermod -aG admin user1

我们可以通过下面的命令来确定这一点。

# getent group admin
admin:x:1011:user1

让我们看看输出信息。

$ sudo tail -2 /var/log/auth.log
[sudo] password for user1:
Mar 17 20:53:36 Ubuntu18 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/usr/bin/tail -2 /var/log/auth.log
Mar 17 20:53:36 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user1(uid=0)

方法 2:在 Debian/Ubuntu 中如何使用 /etc/group 文件为普通用户授予超级用户访问权限?

我们可以通过编辑 /etc/group 文件来手动地添加用户到 sudo 组或 admin 组。

只需打开该文件,并在恰当的组后追加相应的用户就可完成这一点。

$ grep -i sudo /etc/group
sudo:x:27:2gadmin,user2

在该例中,我将使用 user2 这个用户账号。

我将要通过在系统中重启 Apache httpd 服务来检查用户 user2 是不是拥有 sudo 访问权限。让我们看看这个魔术。

$ sudo systemctl restart apache2
[sudo] password for user2:

$ sudo tail -f /var/log/auth.log
[sudo] password for user2:
Mar 17 21:01:04 Ubuntu18 systemd-logind[559]: New session 22 of user user2.
Mar 17 21:01:04 Ubuntu18 systemd: pam_unix(systemd-user:session): session opened for user user2 by (uid=0)
Mar 17 21:01:33 Ubuntu18 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/systemctl restart apache2

方法 3:在 Linux 中如何使用 /etc/sudoers 文件为普通用户授予超级用户访问权限?

sudo 用户的访问权限是被 /etc/sudoers 文件控制的。因此,只需将用户添加到 sudoers 文件中的 sudoadmin 组下即可。

只需通过 visudo 命令将期望的用户追加到 /etc/sudoers 文件中。

# grep -i user3 /etc/sudoers
user3 ALL=(ALL:ALL) ALL

在该例中,我将使用 user3 这个用户账号。

我将要通过在系统中重启 MariaDB 服务来检查用户 user3 是不是拥有 sudo 访问权限。让我们看看这个魔术。

$ sudo systemctl restart mariadb
[sudo] password for user3:

$ sudo tail -f /var/log/auth.log
[sudo] password for user3:
Mar 17 21:12:32 Ubuntu18 systemd-logind[559]: New session 24 of user user3.
Mar 17 21:12:49 Ubuntu18 sudo: user3 : TTY=pts/0 ; PWD=/home/user3 ; USER=root ; COMMAND=/bin/systemctl restart mariadb
Mar 17 21:12:49 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user3(uid=0)
Mar 17 21:12:53 Ubuntu18 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 21:13:08 Ubuntu18 sudo: user3 : TTY=pts/0 ; PWD=/home/user3 ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/auth.log
Mar 17 21:13:08 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user3(uid=0)

via: https://www.2daygeek.com/how-to-configure-sudo-access-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:liujing97 校对:wxy

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

思科、谷歌重新赋能多/混合云共同开发

$
0
0

思科、VMware、HPE 等公司开始采用了新的 Google Cloud Athos 云技术。

Thinkstock

思科与谷歌已扩展它们的混合云开发活动,以帮助其客户可以在从本地数据中心到公共云上的任何地方更轻松地搭建安全的多云以及混合云应用。

这次扩张围绕着谷歌被称作 Anthos 的新的开源混合云包展开,它是在这周的 Google Next 活动上推出的。Anthos 基于并取代了谷歌现有的谷歌云服务测试版。Anthos 将让客户们无须修改应用就可以在现有的本地硬件或公共云上运行应用。据谷歌说,它可以在谷歌云平台 (GCP) 与 谷歌 Kubernetes 引擎 (GKE) 或者在数据中心中与 GKE On-Prem 一同使用。谷歌说,Anthos 首次让客户们可以无需管理员和开发者了解不同的坏境和 API 就能从谷歌平台上管理在第三方云上(如 AWS 和 Azure)的工作负荷。

关键在于,Athos 提供了一个单一的托管服务,它使得客户们无须担心不同的环境或 API 就能跨云管理、部署工作负荷。

作为首秀的一部分,谷歌也宣布一个叫做 Anthos Migrate 的测试计划,它能够从本地环境或者其它云自动迁移虚拟机到 GKE 上的容器中。谷歌说,“这种独特的迁移技术使你无须修改原来的虚拟机或者应用就能以一种行云流水般的方式迁移、更新你的基础设施”。谷歌称它给予了公司按客户节奏转移本地应用到云环境的灵活性。

思科和谷歌

就思科来说,它宣布对 Anthos 的支持并承诺将它紧密集成进思科的数据中心技术中,例如 HyperFlex 超融合包、应用中心基础设施(思科的旗舰 SDN 方案)、SD-WAN 和 StealthWatch 云。思科说,无论是本地的还是在云端的,这次集成将通过自动更新到最新版本和安全补丁,给予一种一致的、云般的感觉。

“谷歌云在容器(Kubernetes)和服务网格service mesh(Istio)上的专业与它们在开发者社区的领导力,再加上思科的企业级网络、计算、存储和安全产品及服务,将为我们的顾客促成一次强强联合。”思科的云平台和解决方案集团资深副总裁 Kip Compton 这样写道,“思科对于 Anthos 的集成将会帮助顾客跨本地数据中心和公共云搭建、管理多云/混合云应用,让他们专注于创新和灵活性,同时不会影响安全性或增加复杂性。”

谷歌云和思科

谷歌云工程副总裁 Eyal Manor 写道 通过思科对 Anthos 的支持,客户将能够:

  • 受益于全托管服务例如 GKE 以及思科的超融合基础设施、网络和安全技术;
  • 在企业数据中心和云中一致运行
  • 在企业数据中心使用云服务
  • 用最新的云技术更新本地基础设施

思科和谷歌从 2017 年 10 月就在紧密合作,当时他们表示正在开发一个能够连接本地基础设施和云环境的开放混合云平台。该套件,即思科为谷歌云打造的混合云平台,大致在 2018 年 9 月上市。它使得客户们能通过谷歌云托管 Kubernetes 容器开发企业级功能,包含思科网络和安全技术以及来自 Istio 的服务网格监控。

谷歌说开源的 Istio 的容器和微服务优化技术给开发者提供了一种一致的方式,通过服务级的 mTLS (双向传输层安全)身份验证访问控制来跨云连接、保护、管理和监听微服务。因此,客户能够轻松实施新的可移植的服务,并集中配置和管理这些服务。

思科不是唯一宣布对 Anthos 支持的供应商。谷歌表示,至少 30 家大型合作商包括 VMwareDell EMCHPE、Intel 和联想致力于为他们的客户在它们自己的超融合基础设施上提供 Anthos 服务。


via: https://www.networkworld.com/article/3388218/cisco-google-reenergize-multicloudhybrid-cloud-joint-development.html

作者:Michael Cooney 选题:lujun9972 译者:tomjlw 校对:wxy

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

每日安全资讯:黑客网上出售伊朗间谍部队的黑客工具源代码

$
0
0

2017 年,黑客组织 Shadow Brokers 对外宣称他们已经成功入侵了美国国家安全局(NSA)下属的黑客组织 Equation Group,下载了后者大量的攻击工具并在网上发起拍卖。而现在又有黑客发布了类似的黑客工具,不过这次来自于伊朗精英网络间谍部队之一,在业内被称之为 APT34、Oilrig 或 HelixKitten。

尽管本次发布的黑客工具并没有 2017 年 NSA 泄露的黑客工具那么复杂,但它们依然是非常危险的。这些黑客工具自今年 3 月中旬开始在网络上发布,以 Lab Dookhtegan 这个假名在 Telegram 频道上进行出售。

一些网络安全专家已经确认了这些工具的真实性。 Alphabet 的网络安全部门 Chronicle 今天早些时候向 ZDNet 证实了这一点。在今天发布的 Telegram 频道中,黑客共泄露了 6 个黑客工具的源代码,此外还有部分来自活跃后端面板的内容以及收集的受害者数据。

这6个黑客工具分别为:

  • Glimpse(基于 PowerShell 的新版木马,Palo Alto Networks 命名为 BondUpdater)
  • PoisonFrog(旧版 BondUpdater)
  • HyperShell(称之为 TwoFace 的 Palo Alto Networks 网络外壳)
  • HighShell(另一个 Web shell)
  • Fox Panel(钓鱼工具包)
  • Webmask(DNS 隧道,DNSpionage 背后的主要工具)

来源:cnBeta.COM

更多资讯

追剧有险 黑客利用《权利的游戏》勒索诈骗

追了八年的《权力的游戏》在 4 月 14 日迎来了最终季,朋友圈有人感叹,刚追剧时候自己还不是个“日天日地日卫星”的程序员,拥有茂密的头发,现在……这都不重要,剧王终章上映,前七季人物的关系,经典场景,甚至是床戏都被拿来一一盘点,剧迷们纷纷分享熟肉资源,在一本正经工作群里也出现了这种场面。

来源: 雷锋网

详情: http://t.cn/EX3xWrt 

美国学生使用 USB Killer 毁掉了数万美元的学校电脑

纽约 Saint Rose 学院的一名前学生承认使用 USB Killer 设备毁掉数万美元学校电脑的指控。USB Killer 设备设计通过释放负电涌毁坏计算机主板电路。27 岁的 Vishwanath Akuthota 面临最高 10 年的监禁和 25 万美元的罚款(大多数情况下不会面临最高刑期),他于 2 月 22 日在北卡罗来纳州被捕。

来源: solidot.org

详情: http://t.cn/EX3xRjJ 

微软动作太慢:0patch 团队抢先发布 Win10 IE 安全漏洞修复补丁

几天前,外媒爆料称 Internet Explorer 存在一个可能被黑客利用的安全漏洞。借助某些文件处理中的 bug,它可以窃取用户的文件。最令人害怕的是,就算你不是 IE 浏览器的用户,也会受到这个漏洞的影响。鉴于微软没能第一时间发布漏洞修复补丁,坐不住的第三方已经抢先推出了针对 Windows 10 平台的小补丁(micro-patch)。

来源: cnBeta.COM

详情: http://t.cn/EX3xrkH 

四部门抓紧推进 App 违法收集使用个人信息专项治理

中央网信办、工信部、公安部、市场监管总局指导成立 App 违法违规收集使用个人信息专项治理工作组以来,组织开展的 App 收集使用个人信息评估工作取得阶段性进展。记者从工作组负责人处获悉,截至 4 月 16 日,举报信息超过 3480 条,涉及 1300 余款 App。对于 30 款用户量大、问题严重的 App,工作组已向其运营者发送了整改通知。

来源: 新华网

详情: http://t.cn/EX3JPo7 

(信息来源于网络,安华金和搜集整理)

小白观察:Ubuntu 19.04 发布

$
0
0

Big News

Ubuntu 19.04 发布

Ubuntu 19.04 是 Ubuntu 最新的桌面端操作系统。目前已经开放了下载。 此版本不是 LTS 版本,最新的 LTS 版本依然是 Ubuntu 18.04.2 。【Ubuntu】

新的 Ubuntu 系统提供了更好的用户体验和操作的节奏,你可以现在安装 Ubuntu 19.04 来体验 Gnome 3.32 、Linux Kernel 5.X 以及性能的提升。

Quick News

微软收购了设计了 ThreadX 的 Express Logic 公司

Express Logic 公司于 1996 年创建,至今已有 23 年,其产品 ThreadX RTos部署超过了超过62亿个设备。【Express Logic】

Zoom 公司开盘价为 $65,超过发售价 $36

Zoom.us 是业界领先的视频会议解决方案提供商。Zoom 公司本周四在美国纳斯达克市场上交易,股票代码为“ZM”。【ZDnet】

中国在山东建立高速公路的自动驾驶汽车测试场

齐鲁交通发展集团有限公司发言人表示,该公司正在利用现有高速公路的一部分在山东省东部建立试验场地,这条26公里长的试验场地于 4 月 12 日开始施工,预计将于 9 月开始运营。【The Star】

25 年后再次采访 Linux 之父

$
0
0

编者按:1994 年,《Linux Journal》创刊。当时杂志的特写文章是杂志的第一位发行人 Robert Young(后来与人联合创办了Red Hat)对 Linus Torvalds(Linux 内核的作者)的采访。25 年之后,两人再度坐到了一起,就 Linus 本人的近况,Linux 的成功之道以及未来之路,自己的工作哲学,对社交媒体的看法,对网络喷子和匿名性的态度,对年轻开发者的建议等进行了推心置腹的交流。

Robert Young 与 Linus Torvalds 的访谈录

Robert Young:很高兴能有个借口跟你取得联系。你跟家人都挺好的吧?你的孩子现在应该都上大学了。我和 Nancy 还有我们的 3 个女儿都挺好。我和 Marc 创办 Red Hat 的时候老大 Zoe 11 岁,现在她准备有第二个孩子了——也就是说,我现在都当爷爷了。

Linus Torvalds:其实我的孩子都还没大学毕业,不过 Patricia(老大)今年5月会毕业。Celeste(最小的)在读高三,所以再过半年我们就成空巢老人了。

3 个孩子都还不错,当外公我想/希望是几年后的事情了。

Bob:1994 年我第一次采访你时,你会不会认为到 2019 年自己还会维护这个东西?

Linus:我想 1994 年的时候自己就已经感到惊讶了,想不到我的最新项目不仅仅又是一个“做点有趣的直到它做了我需要的一切然后再找点别的去做”这样的项目。当然,那时候还处在开发相当早期的阶段,但那已经是我做了几年的项目了,并且已经有了自己的生命。

所以我想我试图要表达的是,我未必会预料到会再做它几十年,但它已经迈过了一道坎,成为我生命当中一个相当重要的东西。其实我从来都没有给 Linux 制订过长期计划,我做事都是一天天来的,而不是考虑 5 年或者 10 年后的事情。

Bob:关于实现你的梦想的危险性,你过去有一句名言——在被问到对 Linux 的未来目标是什么时,你经常开玩笑说是“统治世界”。现在你——还有更广大的开源/自由软件圈——已经实现了这个目标,接下来呢?

Linus:呃,我很久以前就不开“统治世界”的玩笑了,因为随着时间推移这个看起来不怎么像是玩笑了。但它一直都是个玩笑,这也不是我(或者任何其他开发者)做所做的事情的原因。那个原因永远都只是为了做出更好的技术,去发掘有趣的挑战。

其实在核心层面没有一样东西改变。所有的细节都变了——硬件已经很不一样,我们的问题已经很不一样,我的角色已经很不一样。但“做得更好,发现有趣的挑战”依旧不变。

比如说,1994 年那时,我基本上是个开发者。当然,我也是首席维护者,但虽说我花了很多时间在合并补丁上,但我基本上都是写自己的代码。现在我很少写很多代码了,而且我写的往往是伪代码或者样例补丁,然后发邮件给真正的开发者。我曾经对把自己叫做“经理”犹豫过,因为其实我并没有做过年度考评或者预算之类的事(感谢上帝!),但我绝对更像是技术领导而不是实际的程序员,过去许多年里一直都是这样。

所以真正重要的东西没有变过,但跟 1994 年相比,我的角色以及所有那些细节,显然已经非常非常不一样了。

Bob:再过 25 年,你以及这个代码库会去到哪里?

Linus:呃,那时候我都 75 岁了,我怀疑到时候还能不能每天都这么投入。但考虑到我一直做这个都快 30 年了,也许我届时还会跟进下去。

好消息是我们的确有一个非常坚实的开发者群体,我不担心“Linus 会走向何方”之类的问题。当然,很长一段时间以来,大家一直都在讨论核心开发者怎么变得越来越老的问题,但这其实不是因为我们找不到任何新人,而完全是因为我们依然有很多做了很久的人还在做,并且仍然享受其中。

我曾以为有朝一日会有个令人兴奋的全新 OS 出现,取代 Linux(嘿,1994 年那时候我大概仍然认为也许 Hurd 会做到这一点!),但我们不仅做这个做了很长一段时间,而且仍然做得非常好,我也意识到开发新的操作系统要比我想象的难多了。这的确需要很多人付出很多努力,而 Linux——或者更广大的开源——的优势,正在于你可以站在别人的肩膀上做开发。

所以,除非技术版图出现了翻天覆地的变化,否则的话我认为 Linux 再过 25 年依然会做得相当好。这不是因为代码本身的任何细节怎样,而完全是因为其开发模式和问题空间使然。

到那时候我可能干不动了,而且很多代码都会被升级替换,但我认为这个项目仍将保留下来。

Bob:这些年来为了让你满意,你和内核团队是不是一直在更新内核代码?已有 25 年历史的不断扩张的 Linux 代码库是否存在重写的需要或者压力?是不是可以用比 C 语言“现代”一点的语言来重写?

Linus:这些年来我们已经对大多数子系统进行了很多的大规模重写——当然不是一次性地——很多代码块最终都已经成为了没人再想去修改的了(通常是因为那是过时硬件的驱动程序,已经很少人用,但我们还将支持)。不过,整个内核有一个大一统的代码库的好处之一,是当我们需要做出一些大的改变时,我们就能做到。可能有一些内核之外的驱动程序等(包括源码和二进制文件),但我们一直以来的政策都是,如果是内核以外的话,就不关开发的事。所以,必要的时候我们可以做出彻底改变。

至于 C,没有比这更好的语言出现。我们已经针对新的改进过的功能更新了内核源码(在这些年里 C 语言本身也发生了变化),而且我们还为额外的类型检查、运行时验证以及强化等给 C 语言上添加了各种扩展,但基本上除了一些小细节之外,这门语言基本上还是一样的。

而且说实话,这看起来不大可能会变。大家看到处在活跃开发中的那种语言不是用来进行底层系统开发的,而是为了让用好看的 UI 等开发用户应用更容易而准备的。这类语言显然不想干内核需要的事情,比如底层人工内存管理等。

可以想象,我们会有一些“框架”语言来生成驱动程序或类似东西,而且在我们内部实际上也有自己的简化“语言”来进行配置,我们在建构过程中的确也使用了一些其他语言,所以 C 不是我们使用的唯一语言。但到目前为止,这是大部分都是用 C 写的,“真核”都是用 C 来写的。

Bob:你选什么样的硬件?是不是那种 Linux(或任意其他)笔记本牌子货?还是平板或者手机?

Linus:我的主要开发设备是非常普通的 PC 工作站。那是这些年来组装起来的。机器没什么特别,自打我对它大改之后其实已经有 2 年了,所以甚至都算不上先进。在家里我的主要要求其实就是要彻底的安静。除了几个风扇以外,里面没有任何的活动件(所以再也没有机械硬盘了),而且风扇大部分时间内甚至都不用转。

外出时(幸好不用经常),我的主要需求是屏幕要好、要够轻。我的目标重量是 1 公斤(带电源),说实话,我还没有达到这个理想目标,但目前对我来说最好的折衷是 XPS13。

Bob:似乎 Linux 在桌面的成功不在于 PC 桌面而在于(通过 Android 实现的)设备桌面。你怎么看?

Linus:呃,传统 PC 显然不再像以往那样占主导了。哪怕你一台电脑(即便仍跑 Windows 或 OS X),很多人也主要是通过 web 浏览器和一些应用程序来使用。当然,还有那种“工作站”用户,这是那种我个人一直设想中的桌面。虽说还很重要,但它似乎已经不能像当年的 PC 那样去推动市场发展了。强大的台式机似乎主要是用来开发、玩游戏、或做媒体编辑。那种“休闲”类桌面似乎更多是浏览器类的东西,而且往往只是一台平板或者手机。

当然,Chrome 在其中某些领域似乎做得不错。不过就每天都跟 Linux 打交道的人数而言, Android 显然占了大块头。

[Bob 注:就“统治”的严格意义来说,这可能是公平的。但尽管过去几年 PC 总出货量有所下降,但 1994 年到 2014 年 PC 市场的累积增长依然可观,以致于即便在 PC 市场放缓的今天,每年 PC 的安装量仍然是 1994 年的四五倍]

 

25年后再接受采访,Linux之父这次说了很多

Linux 之父(Linus Torvalds)

Bob:如果你得解决网络世界的其中一个问题,那会是什么?

Linus:都不是技术性的问题。但是,我对现代的“社交媒体”深恶痛绝——如 Twitter、Facebook、Instagram 等。这是一种病,似乎鼓励了坏行为。

我认为其实邮件也有部分同样的问题,我之前曾经说过:“在互联网上,没人能听得出你的微妙”。只要不是面对面的交流,你就会错过所有正常的社会线索,很容易就会错过幽默和挖苦,但也很容易就会错过对方的反应,所以就会有吵得不可开交等面对面交流不易出现的情况。

但电子邮件仍然管用。你仍然必须花精力去写,而且一般都会有一些实际内容(技术性或者其他)。那些“点赞”和“分享”之类根本就是垃圾。不用付出,也没有质量控制。实际上,这些都跟质量控制是背道而驰的,大家目标的共同点最少,都是些标题党,是为了唤起情绪反应,往往是道德义愤之一。

再加上匿名,这完全是令人作呕。当你甚至都不把真名写在你的垃圾(或者你分享或点赞的垃圾)上时,的确是一点作用都没有的。

其实我是认为匿名性被高估的人之一。一些人将隐私与匿名混为一谈,认为这两者是息息相关的,保护隐私意味着你需要保护匿名。我想这是错误的。如果你是告密者的话匿名是重要的,但如果你无法证明自己的身份,你在一些社交媒体平台上的疯狂谩骂就不应该可见,而且你也不应该能够分享它或者点赞。

好吧,我这也是谩骂。我不上任何的社交媒体(我试过一段时间的 G+,因为上面的人不是脑残,但显然它从来都没火过),但这依然令我困扰。

Bob:本期的《Linux Journal》关注的是孩子与 Linux。对于年轻的程序员/计算机科学学生你有什么建议?

Linus:其实我是最不应该问的人。我知道自己很小的时候就对数学和计算机感兴趣,直到大学之前我基本上都是自学的。我做的一切差不多都是自发的。所以当大家说“我应该做什么?”时,我不能理解大家面临的问题。我根本就没有这样的问题。

Bob:你我的第一次见面是在 DEC 展上。在“疯狗” Jon Hall 和 DEC 的资助下,那是你第一次去美国。

Linus:我认为那其实是我第二次到美国。我想第一次是去犹他普洛佛,跟 Novell 讨论 Linux(为了 Novell 的一个内部项目,是 Caldera 的前身)。

不过 DECUS 展(是在新奥尔良吗?也许我记错了)的确是我最早到美国的目的地之一。

Bob:我曾经问过你回到赫尔辛基时是怎么处理掉积压的电子邮件的。你的回答令我感到吃惊,后来我一直都引用你说的话。你只是说你会把积压的邮件发往 /dev/null。我表示震撼并且问你:“如果收件箱有重要邮件怎么办?”你耸耸肩回答道:“如果是重要的话,写信的人会再发一遍的。”这可能是任何人能给我的最释怀的建议了。你现在还遵循这种邮件处理哲学吗?

Linus:多少还是这样的,但与此同时,我的工作流已经改变了很多,所以旅行不会像过去那样对我的工作造成那么大的干扰了。所以一这段时间以来我往往会尽量不让大家注意到我出去了。如果在一两天内我的互联网连接可能有问题的话(尤其是如果你是水肺潜水员的话)我会提前警告一下。但大多数时候,我在世界任何地方都可以干活。我试过把行程安排在合并窗口期以外(有时候会失败),因为那这是我收到拉取请求最多的时候。

所以这段时间我都是把邮件存在云端,这样子机器间切换就容易多了,这也意味着当我旅行并且使用我的笔记本时,不再会像过去那样下载邮件到本地机器那么痛苦了。

而且不仅我的邮件是这样——实际上,几乎所有的内核开发最终都是靠 git 来分发的,这也意味着我在哪台机器上基本上已经不是问题,而且同步要比过去通过电子邮件一个个去处理补丁容易多了。

不过,我那个“如果邮件重要,对方会重新发送”的看法依然有效。大家都知道,我差不多是全年连轴转的,如果我几天内都没有对拉取请求做出响应的话,这仍然意味着它可能会被埋没在我一堆邮件当中,大家就会再发一封邮件来提醒我一下。

但这种情况其实已经比过去少见多了。1994 年的时候,我还没那么工作过度,离开一周也没什么大不了的,但是,在接下来的几年里,情况慢慢变得越来越糟,以至于我们以前那种邮件发补丁的工作流意味着我有时被迫忽略补丁,因为我已经没有时间去处理,且知道大家还会再次发邮件的。

很高兴,那样的时光早已一去不复返。BitKeeper 对我产生了很大的的影响,尽管不是所有的维护者都喜欢它。现在 git 意味着我不再通过邮件收取成千上万的补丁,我的收件箱看起来不再像过去那么糟糕了。所以跟它相处也容易些了。

顺便说一句,有一条规则可能比“如果邮件重要,对方会再次发送”还要重要,我已经执行力很长一段时间:如果不必回复,那就不回复。如果我收到邮件后的反应是别人可以处理的话,我会干脆忽略这封邮件。一些日理万机的邮件人会设置自动回复说“抱歉,我最终会处理的你邮件的”。但我会忽略任何自己觉得与我无关的事情。这么做纯粹是因为我觉得我承受不起鼓励大家给我发送梗更多邮件的后果。

所以我收到很多邮件,但其实大部分我都不回的。实际上,我的工作很多都是掌控全局,知道发生了什么事。所以我会看很多邮件,但一般不怎么写邮件。

Bob:1995 年 5 月,Don Becker 在华盛顿组织的一场 Linux 用户组会议中,你发表过一次演讲,中途你曾停下来问听众谁知道男子冰球世锦赛芬兰对瑞典的比分。作为与会的加拿大代表,我得以向你保证芬兰赢得了比赛。说道这个,芬兰最近赢得了世界青年锦标赛,你肯定感到很开心。还是你会为美国欢呼?

Linus:嗨!冰球也许是芬兰的国球,但我不是狂热的体育迷。搬到美国并不意味着我会选棒球或者橄榄球,只是意味着冰球也失去了那种“我周围的人在乎”的感觉。

Bob:我们很多人都对你在 Linux 技术决策的公开辩论中直言不讳的态度感到钦佩。嗯,其他人就不喜欢你直率的说话风格。随着时间的推移,你认为自己是不是多多少少有了一些外交辞令的味道了?

Linus:如果说有什么区别的话,我想我已经变得更安静了。我不会说这是“更加外交辞令”,但也许是更有自知之明了,而且我也在试着不那么咄咄逼人。

这部分是因为大家不再像过去那样对我进行解读。过去的环境更加随心所欲一点,我们也是一群享受乐趣的极客。现在的环境跟过去不一样了。再者也不像过去那样个人化了,现在参与开发的人已经成千上万,这还只是计算量发出补丁的人数,还不是做 Linux 的人的全部。

而“用不同的方式解读我”的部分原因在于,大家用一种 1994 年时不曾有的严肃态度来对待我。这绝对不是抱怨说当时大家没有认真对待我——其实恰恰相反。这更多是我的抱怨,抱怨大家现在太过认真地对待我了,所以我再也不能说一些愚蠢的废话了。

所以我仍然会号召大家(尤其是公司)做些蠢事,但现在我这么做的时候必须知道这是新闻,如果我朝某些公司竖中指的话是会被记住几十年的。不管是否活该,这种行为可能都不值得。

Bob:你还有什么要说的吗,无论是公开或者私下?

Linus:我从来都没有想要传播的“讯息”,所以…… 

如何在 Linux 上安装并启用 Flatpak 支持?

$
0
0

目前,我们都在使用 Linux 发行版的官方软件包管理器来安装所需的软件包。

在 Linux 中,它做得很好,没有任何问题。(它不打折扣地很好的完成了它应该做的工作)

但在一些方面它也有一些限制,所以会让我们考虑其他替代解决方案来解决。

是的,默认情况下,我们不能从发行版官方软件包管理器获取到最新版本的软件包,因为这些软件包是在构建当前 OS 版本时构建的。它们只会提供安全更新,直到下一个主要版本发布。

那么,这种情况有什么解决办法吗?是的,我们有多种解决方案,而且我们大多数人已经开始使用其中的一些了。

有些什么呢,它们有什么好处?

使用上面的仓库,我们将获得最新的软件包。这些软件包通常都得到了很好的维护,还有大多数社区的推荐。但这些只是建议,可能并不总是安全的。

近年来,出现了一下通用软件包封装格式,并且得到了广泛的应用。

  • Flatpak:它是独立于发行版的包格式,主要贡献者是 Fedora 项目团队。大多数主要的 Linux 发行版都采用了 Flatpak 框架。
  • Snaps:Snappy 是一种通用的软件包封装格式,最初由 Canonical 为 Ubuntu 手机及其操作系统设计和构建的。后来,更多的发行版都接纳了它。
  • AppImage:AppImage 是一种可移植的包格式,可以在不安装和不需要 root 权限的情况下运行。

我们之前已经介绍过 Snap 包管理器和包封装格式。今天我们将讨论 Flatpak 包封装格式。

什么是 Flatpak?

Flatpak(以前称为 X Desktop Group 或 xdg-app)是一个软件实用程序。它提供了一种通用的包封装格式,可以在任何 Linux 发行版中使用。

它提供了一个沙箱(隔离的)环境来运行应用程序,不会影响其他应用程序和发行版核心软件包。我们还可以安装并运行不同版本的软件包。

Flatpak 的一个缺点是不像 Snap 和 AppImage 那样支持服务器操作系统,它只在少数桌面环境下工作。

比如说,如果你想在系统上运行两个版本的 php,那么你可以轻松安装并按照你的意愿运行。

这就是现在通用包封装格式非常有名的地方。

如何在 Linux 中安装 Flatpak?

大多数 Linux 发行版官方仓库都提供 Flatpak 软件包。因此,可以使用它们来进行安装。

对于 Fedora 系统,使用 DNF 命令 来安装 flatpak。

$ sudo dnf install flatpak

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 来安装 flatpak。

$ sudo apt install flatpak

对于较旧的 Ubuntu 版本:

$ sudo add-apt-repository ppa:alexlarsson/flatpak
$ sudo apt update
$ sudo apt install flatpak

对于基于 Arch Linux 的系统,使用 Pacman 命令 来安装 flatpak。

$ sudo pacman -S flatpak

对于 RHEL/CentOS 系统,使用 YUM 命令 来安装 flatpak。

$ sudo yum install flatpak

对于 openSUSE Leap 系统,使用 Zypper 命令 来安装 flatpak。

$ sudo zypper install flatpak

如何在 Linux 上启用 Flathub 支持?

Flathub 网站是一个应用程序商店,你可以在其中找到 flatpak 软件包。它是一个中央仓库,所有的 flatpak 应用程序都可供用户使用。

运行以下命令在 Linux 上启用 Flathub 支持:

$ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

为 GNOME 桌面环境安装 Software Flatpak 插件。

$ sudo apt install gnome-software-plugin-flatpak

此外,如果你使用的是 GNOME 桌面环境,则可以启用 GNOME 仓库。它包含所有 GNOME 核心应用程序。

$ wget https://sdk.gnome.org/keys/gnome-sdk.gpg
$ sudo flatpak remote-add --gpg-import=gnome-sdk.gpg --if-not-exists gnome-apps https://sdk.gnome.org/repo-apps/

如何列出已配置的 flakpak 仓库?

如果要查看系统上已配置的 flatpak 仓库列表,运行以下命令:

$ flatpak remotes
Name       Options
flathub    system
gnome-apps system

如何列出已配置仓库中的可用软件包?

如果要查看已配置仓库中的可用软件包的列表(它将显示所有软件包,如应用程序和运行环境),运行以下命令:

$ flatpak remote-ls | head -10

org.freedesktop.GlxInfo gnome-apps
org.gnome.Books gnome-apps
org.gnome.Builder   gnome-apps
org.gnome.Calculator    gnome-apps
org.gnome.Calendar  gnome-apps
org.gnome.Characters    gnome-apps
org.gnome.Devhelp   gnome-apps
org.gnome.Dictionary    gnome-apps
org.gnome.Documents gnome-apps
org.gnome.Epiphany  gnome-apps

仅列出应用程序:

$ flatpak remote-ls --app

列出特定的仓库应用程序:

$ flatpak remote-ls gnome-apps

如何从 flatpak 安装包?

运行以下命令从 flatpak 仓库安装软件包:

$ sudo flatpak install flathub com.github.muriloventuroso.easyssh

Required runtime for com.github.muriloventuroso.easyssh/x86_64/stable (runtime/org.gnome.Platform/x86_64/3.30) found in remote flathub
Do you want to install it? [y/n]: y
Installing in system:
org.gnome.Platform/x86_64/3.30                          flathub 4e93789f42ac
org.gnome.Platform.Locale/x86_64/3.30                   flathub 6abf9c0e2b72
org.freedesktop.Platform.html5-codecs/x86_64/18.08      flathub d6abde36c0be
com.github.muriloventuroso.easyssh/x86_64/stable        flathub 337db43043d2
  permissions: ipc, network, wayland, x11, dri
  file access: home, xdg-run/dconf, ~/.config/dconf:ro
  dbus access: ca.desrt.dconf
com.github.muriloventuroso.easyssh.Locale/x86_64/stable flathub af837356b222
Is this ok [y/n]: y
Installing: org.gnome.Platform/x86_64/3.30 from flathub
[####################] 1 metadata, 14908 content objects fetched; 228018 KiB transferred in 364 seconds
Now at 4e93789f42ac.
Installing: org.gnome.Platform.Locale/x86_64/3.30 from flathub
[####################] 4 metadata, 1 content objects fetched; 16 KiB transferred in 2 seconds
Now at 6abf9c0e2b72.
Installing: org.freedesktop.Platform.html5-codecs/x86_64/18.08 from flathub
[####################] 26 metadata, 131 content objects fetched; 2737 KiB transferred in 8 seconds
Now at d6abde36c0be.
Installing: com.github.muriloventuroso.easyssh/x86_64/stable from flathub
[####################] 191 metadata, 3633 content objects fetched; 24857 KiB transferred in 117 seconds
Now at 337db43043d2.
Installing: com.github.muriloventuroso.easyssh.Locale/x86_64/stable from flathub
[####################] 3 metadata, 1 content objects fetched; 14 KiB transferred in 2 seconds
Now at af837356b222.

所有已安装的应用程序都将放在以下位置:

$ ls /var/lib/flatpak/app/
com.github.muriloventuroso.easyssh

如何运行已安装的应用程序?

运行以下命令以启动所需的应用程序,确保替换为你的应用程序名称:

$ flatpak run com.github.muriloventuroso.easyssh

如何查看已安装的应用程序?

运行以下命令来查看已安装的应用程序:

$ flatpak list
Ref                                                Options
com.github.muriloventuroso.easyssh/x86_64/stable   system,current
org.freedesktop.Platform.html5-codecs/x86_64/18.08 system,runtime
org.gnome.Platform/x86_64/3.30                     system,runtime

如何查看有关已安装应用程序的详细信息?

运行以下命令以查看有关已安装应用程序的详细信息:

$ flatpak info com.github.muriloventuroso.easyssh

Ref: app/com.github.muriloventuroso.easyssh/x86_64/stable
ID: com.github.muriloventuroso.easyssh
Arch: x86_64
Branch: stable
Origin: flathub
Collection ID: org.flathub.Stable
Date: 2019-01-08 13:36:32 +0000
Subject: Update com.github.muriloventuroso.easyssh.json (cd35819c)
Commit: 337db43043d282c74d14a9caecdc780464b5e526b4626215d534d38b0935049f
Parent: 6e49096146f675db6ecc0ce7c5347b4b4f049b21d83a6cc4d01ff3f27c707cb6
Location: /var/lib/flatpak/app/com.github.muriloventuroso.easyssh/x86_64/stable/337db43043d282c74d14a9caecdc780464b5e526b4626215d534d38b0935049f
Installed size: 100.0 MB
Runtime: org.gnome.Platform/x86_64/3.30
Sdk: org.gnome.Sdk/x86_64/3.30

如何更新已安装的应用程序?

运行以下命令将已安装的应用程序更新到最新版本:

$ flatpak update

对于特定应用程序,使用以下格式:

$ flatpak update com.github.muriloventuroso.easyssh

如何移除已安装的应用程序?

运行以下命令来移除已安装的应用程序:

$ sudo flatpak uninstall com.github.muriloventuroso.easyssh

进入 man 页面以获取更多细节和选项:

$ flatpak --help

via: https://www.2daygeek.com/how-to-install-and-enable-flatpak-support-on-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:MjSeven 校对:wxy

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


Vim 入门:基础

$
0
0

为工作或者新项目学习足够的 Vim 知识。

我还清晰地记得我第一次接触 Vim 的时候。那时我还是一名大学生,计算机学院的机房里都装着 Ubuntu 系统。尽管我在上大学前也曾接触过不同的 Linux 发行版(比如 RHEL —— Red Hat 在百思买出售它的 CD),但这却是我第一次要在日常中频繁使用 Linux 系统,因为我的课程要求我这样做。当我开始使用 Linux 时,正如我的前辈和将来的后继者们一样,我感觉自己像是一名“真正的程序员”了。

Real Programmers comic

真正的程序员,来自 xkcd

学生们可以使用像 Kate 一样的图形文本编辑器,这也安装在学校的电脑上了。对于那些可以使用 shell 但不习惯使用控制台编辑器的学生,最流行的选择是 Nano,它提供了很好的交互式菜单和类似于 Windows 图形文本编辑器的体验。

我有时会用 Nano,但当我听说 Vi/VimEmacs 能做一些很棒的事情时我决定试一试它们(主要是因为它们看起来很酷,而且我也很好奇它们有什么特别之处)。第一次使用 Vim 时吓到我了 —— 我不想搞砸任何事情!但是,一旦我掌握了它的诀窍,事情就变得容易得多,我就可以欣赏这个编辑器的强大功能了。至于 Emacs,呃,我有点放弃了,但我很高兴我坚持和 Vim 在一起。

在本文中,我将介绍一下 Vim(基于我的个人经验),这样你就可以在 Linux 系统上用它来作为编辑器使用了。这篇文章不会让你变成 Vim 的专家,甚至不会触及 Vim 许多强大功能的皮毛。但是起点总是很重要的,我想让开始的经历尽可能简单,剩下的则由你自己去探索。

第 0 步:打开一个控制台窗口

在使用 Vim 前,你需要做一些准备工作。在 Linux 操作系统打开控制台终端。(因为 Vim 也可以在 MacOS 上使用,Mac 用户也可以使用这些说明)。

打开终端窗口后,输入 ls 命令列出当前目录下的内容。然后,输入 mkdir Tutorial 命令创建一个名为 Tutorial 的新目录。通过输入 cd Tutorial 来进入该目录。

Create a folder

这就是全部的准备工作。现在是时候转到有趣的部分了——开始使用 Vim。

第 1 步:创建一个 Vim 文件和不保存退出

还记得我一开始说过我不敢使用 Vim 吗?我当时在害怕“如果我改变了一个现有的文件,把事情搞砸了怎么办?”毕竟,一些计算机科学作业要求我修改现有的文件。我想知道:如何在不保存更改的情况下打开和关闭文件?

好消息是你可以使用相同的命令在 Vim 中创建或打开文件:vim <FILE_NAME>,其中 <FILE_NAME> 表示要创建或修改的目标文件名。让我们通过输入 vim HelloWorld.java 来创建一个名为 HelloWorld.java 的文件。

你好,Vim!现在,讲一下 Vim 中一个非常重要的概念,可能也是最需要记住的:Vim 有多种模式,下面是 Vim 基础中需要知道的的三种:

模式 描述
正常模式 默认模式,用于导航和简单编辑
插入模式 用于直接插入和修改文本
命令行模式 用于执行如保存,退出等命令

Vim 也有其他模式,例如可视模式、选择模式和命令模式。不过上面的三种模式对我们来说已经足够用了。

你现在正处于正常模式,如果有文本,你可以用箭头键移动或使用其他导航键(将在稍后看到)。要确定你正处于正常模式,只需按下 esc (Escape)键即可。

提示: Esc 切换到正常模式。即使你已经在正常模式下,点击 Esc 只是为了练习。

现在,有趣的事情发生了。输入 : (冒号键)并接着 q! (完整命令::q!)。你的屏幕将显示如下:

Editing Vim

在正常模式下输入冒号会将 Vim 切换到命令行模式,执行 :q! 命令将退出 Vim 编辑器而不进行保存。换句话说,你放弃了所有的更改。你也可以使用 ZQ 命令;选择你认为更方便的选项。

一旦你按下 Enter (回车),你就不再在 Vim 中。重复练习几次来掌握这条命令。熟悉了这部分内容之后,请转到下一节,了解如何对文件进行更改。

第 2 步:在 Vim 中修改并保存

通过输入 vim HelloWorld.java 和回车键来再次打开这个文件。你可以在插入模式中修改文件。首先,通过 Esc 键来确定你正处于正常模式。接着输入 i 来进入插入模式(没错,就是字母 i)。

在左下角,你将看到 -- INSERT --,这标志着你这处于插入模式。

Vim insert mode

写一些 Java 代码。你可以写任何你想写的,不过这也有一份你可以参照的例子。你的屏幕将显示如下:

public class HelloWorld {
  public static void main([String][11][] args) {
  }
}

非常漂亮!注意文本是如何在 Java 语法中高亮显示的。因为这是个 Java 文件,所以 Vim 将自动检测语法并高亮颜色。

保存文件:按下 Esc 来退出插入模式并进入命令行模式。输入 : 并接着 x! (完整命令::x!),按回车键来保存文件。你也可以输入 wq 来执行相同的操作。

现在,你知道了如何使用插入模式输入文本并使用以下命令保存文件::x! 或者 :wq

第 3 步:Vim 中的基本导航

虽然你总是可以使用上箭头、下箭头、左箭头和右箭头在文件中移动,但在一个几乎有数不清行数的大文件中,这将是非常困难的。能够在一行中跳跃光标将会是很有用的。虽然 Vim 提供了不少很棒的导航功能,不过在一开始,我想向你展示如何在 Vim 中到达某一特定的行。

单击 Esc 来确定你处于正常模式,接着输入 :set number 并键入回车。

瞧!你现在可以在每一行的左侧看到行号。

Showing Line Numbers

好,你也许会说,“这确实很酷,不过我该怎么跳到某一行呢?”再一次的,确认你正处于正常模式。接着输入 :<LINE_NUMBER>,在这里 <LINE_NUMBER> 是你想去的那一行的行数。按下回车键来试着移动到第二行。

:2

现在,跳到第三行。

Jump to line 3

但是,假如你正在处理一个一千多行的文件,而你正想到文件底部。这该怎么办呢?确认你正处于正常模式,接着输入 并按下回车。

你将来到最后一行!

现在,你知道如何在行间跳跃了,作为补充,我们来学一下如何移动到一行的行尾。确认你正处于有文本内容的一行,如第三行,接着输入 $

Go to the last character

你现在来到这行的最后一个字节了。在此示例中,高亮左大括号以显示光标移动到的位置,右大括号被高亮是因为它是高亮的左大括号的匹配字符。

这就是 Vim 中的基本导航功能。等等,别急着退出文件。让我们转到 Vim 中的基本编辑。不过,你可以暂时顺便喝杯咖啡或茶休息一下。

第 4 步:Vim 中的基本编辑

现在,你已经知道如何通过跳到想要的一行来在文件中导航,你可以使用这个技能在 Vim 中进行一些基本编辑。切换到插入模式。(还记得怎么做吗?是不是输入 i ?)当然,你可以使用键盘逐一删除或插入字符来进行编辑,但是 Vim 提供了更快捷的方法来编辑文件。

来到第三行,这里的代码是 public static void main(String[] args) {。双击 d 键,没错,就是 dd。如果你成功做到了,你将会看到,第三行消失了,剩下的所有行都向上移动了一行。(例如,第四行变成了第三行)。

Deleting A Line

这就是删除delete命令。不要担心,键入 u,你会发现这一行又回来了。喔,这就是撤销undo命令。

Undoing a change in Vim

下一课是学习如何复制和粘贴文本,但首先,你需要学习如何在 Vim 中突出显示文本。按下 v 并向左右移动光标来选择或反选文本。当你向其他人展示代码并希望标识你想让他们注意到的代码时,这个功能也非常有用。

Highlighting text in Vim

来到第四行,这里的代码是 System.out.println("Hello, Opensource");。高亮这一行的所有内容。好了吗?当第四行的内容处于高亮时,按下 y。这就叫做复制yank模式,文本将会被复制到剪贴板上。接下来,输入 o 来创建新的一行。注意,这将让你进入插入模式。通过按 Esc 退出插入模式,然后按下 p,代表粘贴paste。这将把复制的文本从第三行粘贴到第四行。

Pasting in Vim

作为练习,请重复这些步骤,但也要修改新创建的行中的文字。此外,请确保这些行对齐工整。

提示: 您需要在插入模式和命令行模式之间来回切换才能完成此任务。

当你完成了,通过 x! 命令保存文件。以上就是 Vim 基本编辑的全部内容。

第 5 步:Vim 中的基本搜索

假设你的团队领导希望你更改项目中的文本字符串。你该如何快速完成任务?你可能希望使用某个关键字来搜索该行。

Vim 的搜索功能非常有用。通过 Esc 键来进入命令模式,然后输入冒号 :,我们可以通过输入 /<SEARCH_KEYWORD> 来搜索关键词, <SEARCH_KEYWORD> 指你希望搜索的字符串。在这里,我们搜索关键字符串 Hello。在下面的图示中没有显示冒号,但这是必须输入的。

Searching in Vim

但是,一个关键字可以出现不止一次,而这可能不是你想要的那一个。那么,如何找到下一个匹配项呢?只需按 n 键即可,这代表下一个next。执行此操作时,请确保你没有处于插入模式!

附加步骤:Vim 中的分割模式

以上几乎涵盖了所有的 Vim 基础知识。但是,作为一个额外奖励,我想给你展示 Vim 一个很酷的特性,叫做分割split模式。

退出 HelloWorld.java 并创建一个新文件。在控制台窗口中,输入 vim GoodBye.java 并按回车键来创建一个名为 GoodBye.java 的新文件。

输入任何你想输入的让内容,我选择输入 Goodbye。保存文件(记住你可以在命令模式中使用 :x! 或者 :wq)。

在命令模式中,输入 :split HelloWorld.java,来看看发生了什么。

Split mode in Vim

Wow!快看! split 命令将控制台窗口水平分割成了两个部分,上面是 HelloWorld.java,下面是 GoodBye.java。该怎么能在窗口之间切换呢? 按住 Control 键(在 Mac 上)或 Ctrl 键(在 PC 上),然后按下 ww (即双击 w 键)。

作为最后一个练习,尝试通过复制和粘贴 HelloWorld.java 来编辑 GoodBye.java 以匹配下面屏幕上的内容。

Modify GoodBye.java file in Split Mode

保存两份文件,成功!

提示 1: 如果你想将两个文件窗口垂直分割,使用 :vsplit <FILE_NAME> 命令。(代替 :split <FILE_NAME> 命令,<FILE_NAME> 指你想要使用分割模式打开的文件名)。

提示 2: 你可以通过调用任意数量的 split 或者 vsplit 命令来打开两个以上的文件。试一试,看看它效果如何。

Vim 速查表

在本文中,您学会了如何使用 Vim 来完成工作或项目,但这只是你开启 Vim 强大功能之旅的开始,可以查看其他很棒的教程和技巧。

为了让一切变得简单些,我已经将你学到的一切总结到了 一份方便的速查表 中。


via: https://opensource.com/article/19/3/getting-started-vim

作者:Bryant Son 选题:lujun9972 译者:Modrisco 校对:wxy

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

小白观察:如何将你的应用生态从 Apple 迁移到其他平台?

$
0
0

Deep News

《如何将你的应用生态从 Apple 迁移到其他平台?》

这篇文章从软件、硬件两个方面,解读了如何将你的日常使用设备从 Apple 迁移到其他平台。其中提到的主要是 Google 的服务。 具体的替换如下:

Apple 生态 Google 生态
iPhone Pixel 3 or Pixel 3XL
mac book Pixelbook
Apple Watch Fossil Sport
AirPods Samsung Galaxy Buds
Homepod Google Home, Google Home Mini, or Google Home Max
Homepod Google Home Hub
Apple TV Chromecast or Android TV box

当初的屠龙少年终成尾大不掉的恶龙,一代一代的屠龙者不断出现,Google 又能否检查不作恶呢?拭目以待。

Quick News

微软 Hotmail (Outlook)发生数据泄露

据报道,一批非企业用户的邮箱遭到了泄漏 ,泄漏信息包括邮箱地址、文件夹名、邮件标题等。受影响的邮件为从 2019 年 1 月 1日 到 2019 年 3 月 28 日的邮件。微软表示已经做了处理,避免问题的扩大。【GadgetsNow】

微软推出 Google G Suite 迁移到 Office 365 的工具

微软推出了 Google G Suite 迁移到 Office 365 的工具,帮助用户从 Google G Suite 迁移数据到 Office 365 中。【ZDNet】

Facebook 仍未走出隐私风波

据华盛顿邮报报道,美国联邦贸易委员会(FTC)正在考虑和研究设计新的法规来规范企业行为以及如何让扎克伯格对 Facebook 数据丢失负责。【华盛顿邮报】

每日安全资讯:BGP 路由表即将突破 768k,可能会引发网络故障

$
0
0

768k 日即将临近,它有可能会导致部分网络发生故障,但不用恐慌,你也可能会很幸运的体验不到任何问题。768k 日发源于 512k 日,512k 日是指路由器耗尽了储存全球 BGP 路由表的内存,它于 2014 年 8 月 12 日到来,导致了全世界数以百计的 ISP 发生网络故障。

在 512k 日来临之际,许多旧的路由器收到了紧急更新,分配了更多内存去储存 BGP 路由表,而新分配的值是 768k 或 768,000。现在 768k 的限制又要突破了。根据最新的数据,全球路由表已经达到了 767,392,无限接近 768k。

网络工程师和专家预测,768k 日将会在下个月到来,但这一次应该不会发生像 2014 年那样严重的网络问题,不过小型的地区 ISP 可能会遇到问题。

来源:solidot.org

更多资讯

car2go 汽车共享 App 遭黑客入侵,100 多辆豪华汽车被窃

据 TheDrive 网站报道,黑客近日入侵 car2go 汽车共享应用 APP,并在芝加哥窃取了 100 多辆高端豪华汽车。

来源: 盖世汽车

详情: http://t.cn/EXkMHek 

穆勒报告披露更多俄罗斯如何攻击 DNC 及希拉里竞选团队的信息

据外媒报道,穆勒报告带来了俄罗斯政府如何入侵希拉里·克林顿总统竞选团队以及美国民主党全国委员会(DNC)文件和电子邮件的新信息。该份报告证实,俄罗斯曾一度使用位于美国的服务器展开大规模数据渗漏行动。

来源: cnBeta.COM

详情: http://t.cn/EXkMEgM 

Facebook 承认员工可获取数百万 Instagram 用户的明文密码

Facebook 周四称,该公司员工可在一个内部数据库中看到数以百万计的 Instagram 用户密码,这些密码以可搜索的格式存储在数据库中。Facebook 此次宣布的这一消息是对上个月发表的一篇博文的更新,当时该公司披露信息称,公司员工可以看到数百万 Facebook 用户密码。

来源: 新浪科技

详情: http://t.cn/EXkxvOH 

(信息来源于网络,安华金和搜集整理)

小白观察:Erlang 的设计者 Joe Armstrong 去世

$
0
0

Breaking News

Erlang 的设计者 Joe Armstrong 去世

Erlang 的设计者,计算机科学家及程序员 Jow Armstrong 昨日过世,享年 69 岁。

Quick News

Fastly 提交了 IPO 的文件

服务了 Github、Twitter、Yelp、Vogue、imgur、vimeo 的 CDN 服务提供商 Fastly 提交了 IPO 上市的文件。

【TechCrunch】

Fastly 能发展的很好么?看看他的竞品吧, Akamai CDN 的股票目前每股 75.34 元;Cloudflare 也在寻求上市。

缺乏睡眠最终会导致你死亡

工业社会的发展,我们用更多的时间来工作,更少的时间来睡觉。根据畅销书《Why we Sleep Unlocking Dreams》的作者 Walker 表示,“睡眠不足会渗透到我们身体的每一个角落里,而且,睡眠是一种必须品“。【Wired】

结合 996 ICU 一起看,还是身体重要。

Chrome 将于 4 月 23 日发布 Chrome 74

新的 Chrome 74 为 Windows 提供了 Darkmode ,为 Linux 提供了 Container Backup、 Audio Support、GPU Acceleration、USB Device Access、Linux Apps Search and Installation 等特性。【HowToGeek】

这次的更新,怎么看怎么像 Linux 专版

解决 Ubuntu 在启动时冻结的问题

$
0
0

本文将向你一步步展示如何通过安装 NVIDIA 专有驱动来处理 Ubuntu 在启动过程中冻结的问题。本教程仅在一个新安装的 Ubuntu 系统上操作验证过,不过在其它情况下也理应可用。

不久前我买了台宏碁掠夺者笔记本电脑来测试各种 Linux 发行版。这台庞大且笨重的机器与我喜欢的,类似戴尔 XPS那般小巧轻便的笔记本电脑大相径庭。

我即便不打游戏也选择这台电竞笔记本电脑的原因,就是为了 NVIDIA 的显卡。宏碁掠夺者 Helios 300 上搭载了一块 NVIDIA Geforce GTX 1050Ti 显卡。

NVIDIA 那糟糕的 Linux 兼容性为人们所熟知。过去很多 It’s FOSS 的读者都向我求助过关于 NVIDIA 笔记本电脑的问题,而我当时无能为力,因为我手头上没有使用 NVIDIA 显卡的系统。

所以当我决定搞一台专门的设备来测试 Linux 发行版时,我选择了带有 NVIDIA 显卡的笔记本电脑。

这台笔记本原装的 Windows 10 系统安装在 120 GB 的固态硬盘上,并另外配有 1 TB 的机械硬盘来存储数据。在此之上我配置好了 Windows 10 和 Ubuntu 18.04 双系统。整个的安装过程舒适、方便、快捷。

随后我启动了 Ubuntu。那熟悉的紫色界面展现了出来,然后我就发现它卡在那儿了。鼠标一动不动,我也输入不了任何东西,然后除了长按电源键强制关机以外我啥事儿都做不了。

然后再次尝试启动,结果一模一样。整个系统就一直卡在那个紫色界面,随后的登录界面也出不来。

这听起来很耳熟吧?下面就让我来告诉你如何解决这个 Ubuntu 在启动过程中冻结的问题。

如果你用的不是 Ubuntu

请注意,尽管是在 Ubuntu 18.04 上操作的,本教程应该也能用于其他基于 Ubuntu 的发行版,例如 Linux Mint、elementary OS 等等。关于这点我已经在 Zorin OS 上确认过。

解决 Ubuntu 启动中由 NVIDIA 驱动引起的冻结问题

我介绍的解决方案适用于配有 NVIDIA 显卡的系统,因为你所面临的系统冻结问题是由开源的 NVIDIA Nouveau 驱动所导致的。

事不宜迟,让我们马上来看看如何解决这个问题。

步骤 1:编辑 Grub

在启动系统的过程中,请你在如下图所示的 Grub 界面上停下。如果你没看到这个界面,在启动电脑时请按住 Shift 键。

在这个界面上,按 E 键进入编辑模式。

按“E”按键

你应该看到一些如下图所示的代码。此刻你应关注于以 “linux” 开头的那一行。

前往 Linux 开头的那一行

步骤 2:在 Grub 中临时修改 Linux 内核参数

回忆一下,我们的问题出在 NVIDIA 显卡驱动上,是开源版 NVIDIA 驱动的不适配导致了我们的问题。所以此处我们能做的就是禁用这些驱动。

此刻,你有多种方式可以禁用这些驱动。我最喜欢的方式是通过 nomodeset 来禁用所有显卡的驱动。

请把下列文本添加到以 “linux” 开头的那一行的末尾。此处你应该可以正常输入。请确保你把这段文本加到了行末。

 nomodeset

现在你屏幕上的显示应如下图所示:

通过向内核添加 nomodeset 来禁用显卡驱动

Ctrl+XF10 保存并退出。下次你就将以修改后的内核参数来启动。

对以上操作的解释

所以我们究竟做了些啥?那个 nomodeset 又是个什么玩意儿?让我来向你简单地解释一下。

通常来说,显卡是在 X 或者是其他显示服务器开始执行后才被启用的,也就是在你登录系统并看到图形界面以后。

但近来,视频模式的设置被移进了内核。这么做的众多优点之一就是能你看到一个漂亮且高清的启动画面。

若你往内核中加入 nomodeset 参数,它就会指示内核在显示服务启动后才加载显卡驱动。

换句话说,你在此时禁止视频驱动的加载,由此产生的冲突也会随之消失。你在登录进系统以后,还是能看到一切如旧,那是因为显卡驱动在随后的过程中被加载了。

步骤 3:更新你的系统并安装 NVIDIA 专有驱动

别因为现在可以登录系统了就过早地高兴起来。你之前所做的只是临时措施,在下次启动的时候,你的系统依旧会尝试加载 Nouveau 驱动而因此冻结。

这是否意味着你将不得不在 Grub 界面上不断地编辑内核?可喜可贺,答案是否定的。

你可以在 Ubuntu 上为 NVIDIA 显卡安装额外的驱动。在使用专有驱动后,Ubuntu 将不会在启动过程中冻结。

我假设这是你第一次登录到一个新安装的系统。这意味着在做其他事情之前你必须先更新 Ubuntu。通过 Ubuntu 的 Ctrl+Alt+T 系统快捷键打开一个终端,并输入以下命令:

sudo apt update && sudo apt upgrade -y

在上述命令执行完以后,你可以尝试安装额外的驱动。不过根据我的经验,在安装新驱动之前你需要先重启一下你的系统。在你重启时,你还是需要按我们之前做的那样修改内核参数。

当你的系统已经更新和重启完毕,按下 Windows 键打开一个菜单栏,并搜索“软件与更新Software & Updates”。

点击“软件与更新”(Software & Updates)

然后切换到“额外驱动Additional Drivers”标签页,并等待数秒。然后你就能看到可供系统使用的专有驱动了。在这个列表上你应该可以找到 NVIDIA。

选择专有驱动并点击“应用更改Apply Changes”。

NVIDIA 驱动安装中

新驱动的安装会费点时间。若你的系统启用了 UEFI 安全启动,你将被要求设置一个密码。你可以将其设置为任何容易记住的密码。它的用处我将在步骤 4 中说明。

你可能需要设置一个安全启动密码

安装完成后,你会被要求重启系统以令之前的更改生效。

在新驱动安装好后重启你的系统

步骤 4:处理 MOK(仅针对启用了 UEFI 安全启动的设备)

如果你之前被要求设置安全启动密码,此刻你会看到一个蓝色界面,上面写着 “MOK management”。这是个复杂的概念,我试着长话短说。

对 MOK(设备所有者密码)的要求是因为安全启动的功能要求所有内核模块都必须被签名。Ubuntu 中所有随 ISO 镜像发行的内核模块都已经签了名。由于你安装了一个新模块(也就是那个额外的驱动),或者你对内核模块做了修改,你的安全系统可能视之为一个未经验证的外部修改,从而拒绝启动。

因此,你可以自己对系统模块进行签名(以告诉 UEFI 系统莫要大惊小怪,这些修改是你做的),或者你也可以简单粗暴地禁用安全启动

现在你对安全启动和 MOK 有了一定了解,那咱们就来看看在遇到这个蓝色界面后该做些什么。

如果你选择“继续启动”,你的系统将有很大概率如往常一样启动,并且你啥事儿也不用做。不过在这种情况下,新驱动的有些功能有可能工作不正常。

这就是为什么,你应该“选择注册 MOK”。

它会在下一个页面让你点击“继续”,然后要你输入一串密码。请输入在上一步中,在安装额外驱动时设置的密码。

别担心!

如果你错过了这个关于 MOK 的蓝色界面,或不小心点了“继续启动”而不是“注册 MOK”,不必惊慌。你的主要目的是能够成功启动系统,而通过禁用 Nouveau 显卡驱动,你已经成功地实现了这一点。

最坏的情况也不过就是你的系统切换到 Intel 集成显卡而不再使用 NVIDIA 显卡。你可以之后的任何时间安装 NVIDIA 显卡驱动。你的首要任务是启动系统。

步骤 5:享受安装了专有 NVIDIA 驱动的 Linux 系统

当新驱动被安装好后,你需要再次重启系统。别担心!目前的情况应该已经好起来了,并且你不必再去修改内核参数,而是能够直接启动 Ubuntu 系统了。

我希望本教程帮助你解决了 Ubuntu 系统在启动中冻结的问题,并让你能够成功启动 Ubuntu 系统。

如果你有任何问题或建议,请在下方评论区给我留言。


via: https://itsfoss.com/fix-ubuntu-freezing/

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

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

5 个有用的开源日志分析工具

$
0
0

监控网络活动既重要又繁琐,以下这些工具可以使它更容易。

监控网络活动是一项繁琐的工作,但有充分的理由这样做。例如,它允许你查找和调查工作站和连接到网络的设备及服务器上的可疑登录,同时确定管理员滥用了什么。你还可以跟踪软件安装和数据传输,以实时识别潜在问题,而不是在损坏发生后才进行跟踪。

这些日志还有助于使你的公司遵守适用于在欧盟范围内运营的任何实体的通用数据保护条例(GDPR)。如果你的网站在欧盟可以浏览,那么你就有遵守的该条例的资格。

日志记录,包括跟踪和分析,应该是任何监控基础设置中的一个基本过程。要从灾难中恢复 SQL Server 数据库,需要事务日志文件。此外,通过跟踪日志文件,DevOps 团队和数据库管理员(DBA)可以保持最佳的数据库性能,又或者,在网络攻击的情况下找到未经授权活动的证据。因此,定期监视和分析系统日志非常重要。这是一种重新创建导致出现任何问题的事件链的可靠方式。

现在有很多开源日志跟踪器和分析工具可供使用,这使得为活动日志选择合适的资源比你想象的更容易。自由和开源软件社区提供的日志设计适用于各种站点和操作系统。以下是五个我用过的最好的工具,它们并没有特别的顺序。

Graylog

Graylog 于 2011 年在德国创立,现在作为开源工具或商业解决方案提供。它被设计成一个集中式日志管理系统,接受来自不同服务器或端点的数据流,并允许你快速浏览或分析该信息。

Graylog screenshot

Graylog 在系统管理员中有着良好的声誉,因为它易于扩展。大多数 Web 项目都是从小规模开始的,但它们可能指数级增长。Graylog 可以均衡后端服务网络中的负载,每天可以处理几 TB 的日志数据。

IT 管理员会发现 Graylog 的前端界面易于使用,而且功能强大。Graylog 是围绕仪表板的概念构建的,它允许你选择你认为最有价值的指标或数据源,并快速查看一段时间内的趋势。

当发生安全或性能事件时,IT 管理员希望能够尽可能地根据症状追根溯源。Graylog 的搜索功能使这变得容易。它有内置的容错功能,可运行多线程搜索,因此你可以同时分析多个潜在的威胁。

Nagios

Nagios 始于 1999 年,最初是由一个开发人员开发的,现在已经发展成为管理日志数据最可靠的开源工具之一。当前版本的 Nagios 可以与运行 Microsoft Windows、Linux 或 Unix 的服务器集成。

Nagios Core

它的主要产品是日志服务器,旨在简化数据收集并使系统管理员更容易访问信息。Nagios 日志服务器引擎将实时捕获数据,并将其提供给一个强大的搜索工具。通过内置的设置向导,可以轻松地与新端点或应用程序集成。

Nagios 最常用于需要监控其本地网络安全性的组织。它可以审核一系列与网络相关的事件,并帮助自动分发警报。如果满足特定条件,甚至可以将 Nagios 配置为运行预定义的脚本,从而允许你在人员介入之前解决问题。

作为网络审计的一部分,Nagios 将根据日志数据来源的地理位置过滤日志数据。这意味着你可以使用地图技术构建全面的仪表板,以了解 Web 流量是如何流动的。

Elastic Stack (ELK Stack)

Elastic Stack,通常称为 ELK Stack,是需要筛选大量数据并理解其日志系统的组织中最受欢迎的开源工具之一(这也是我个人的最爱)。

ELK Stack

它的主要产品由三个独立的产品组成:Elasticsearch、Kibana 和 Logstash:

  • 顾名思义, Elasticsearch 旨在帮助用户使用多种查询语言和类型在数据集之中找到匹配项。速度是它最大的优势。它可以扩展成由数百个服务器节点组成的集群,轻松处理 PB 级的数据。
  • Kibana 是一个可视化工具,与 Elasticsearch 一起工作,允许用户分析他们的数据并构建强大的报告。当你第一次在服务器集群上安装 Kibana 引擎时,你会看到一个显示着统计数据、图表甚至是动画的界面。
  • ELK Stack 的最后一部分是 Logstash,它作为一个纯粹的服务端管道进入 Elasticsearch 数据库。你可以将 Logstash 与各种编程语言和 API 集成,这样你的网站和移动应用程序中的信息就可以直接提供给强大的 Elastic Stalk 搜索引擎中。

ELK Stack 的一个独特功能是,它允许你监视构建在 WordPress 开源网站上的应用程序。与跟踪管理日志和 PHP 日志的大多数开箱即用的安全审计日志工具相比,ELK Stack 可以筛选 Web 服务器和数据库日志。

糟糕的日志跟踪和数据库管理是导致网站性能不佳的最常见原因之一。没有定期检查、优化和清空数据库日志,不仅会降低站点的运行速度,还可能导致其完全崩溃。因此,ELK Stack 对于每个 WordPress 开发人员的工具包来说都是一个优秀的工具。

LOGalyze

LOGalyze 是一个位于匈牙利的组织,它为系统管理员和安全专家构建开源工具,以帮助他们管理服务器日志,并将其转换为有用的数据点。其主要产品可供个人或商业用户免费下载。

LOGalyze

LOGalyze 被设计成一个巨大的管道,其中多个服务器、应用程序和网络设备可以使用简单对象访问协议(SOAP)方法提供信息。它提供了一个前端界面,管理员可以登录界面来监控数据集并开始分析数据。

在 LOGalyze 的 Web 界面中,你可以运行动态报告,并将其导出到 Excel 文件、PDF 文件或其他格式。这些报告可以基于 LOGalyze 后端管理的多维统计信息。它甚至可以跨服务器或应用程序组合数据字段,借此来帮助你发现性能趋势。

LOGalyze 旨在不到一个小时内完成安装和配置。它具有预先构建的功能,允许它以法律所要求的格式收集审计数据。例如,LOGalyze 可以很容易地运行不同的 HIPAA 报告,以确保你的组织遵守健康法律并保持合规性。

Fluentd

如果你所在组织的数据源位于许多不同的位置和环境中,那么你的目标应该是尽可能地将它们集中在一起。否则,你将难以监控性能并防范安全威胁。

Fluentd 是一个强大的数据收集解决方案,它是完全开源的。它没有提供完整的前端界面,而是作为一个收集层来帮助组织不同的管道。Fluentd 在被世界上一些最大的公司使用,但是也可以在较小的组织中实施。

Fluentd architecture

Fluentd 最大的好处是它与当今最常用的技术工具兼容。例如,你可以使用 Fluentd 从 Web 服务器(如 Apache)、智能设备传感器和 MongoDB 的动态记录中收集数据。如何处理这些数据完全取决于你。

Fluentd 基于 JSON 数据格式,它可以与由卓越的开发人员创建的 500 多个插件一起使用。这使你可以将日志数据扩展到其他应用程序中,并通过最少的手工操作从中获得更好的分析。

写在最后

如果出于安全原因、政府合规性和衡量生产力的原因,你还没有使用活动日志,那么现在开始改变吧。市场上有很多插件,它们可以与多种环境或平台一起工作,甚至可以在内部网络上使用。不要等发生了严重的事件,才采取一个积极主动的方法去维护和监督日志。


via: https://opensource.com/article/19/4/log-analysis-tools

作者:Sam Bocetta 选题:lujun9972 译者:MjSeven 校对:wxy

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

每日安全资讯:阻止了 WannaCry 传播的安全研究员被控传播银行木马

$
0
0

英国安全研究员 Marcus Hutchins(MalwareTech),2017 年因发现 WannaCry 的关闭开关阻止了该勒索软件的进一步传播而被视为一位安全领域的英雄,但他在当年前往美国参加安全会议 Black Hat 和 DEF CON 后准备在机场离境时遭到 FBI 逮捕,被控开发、传播和维护了银行木马 Kronos。

来源:solidot.org

更多资讯

勒索软件攻击致使 The Weather Channel 停播

根据《华尔街日报》报道,周四 The Weather Channel(天气频道)遭勒索软件攻击,导致其一个现场直播的电视节目停播。停播持续大约一个多小时,攻击发生时美国东南部天气十分恶劣。美国联邦调查局告诉《华尔街日报》,勒索软件攻击是问题的根源,该机构正在进行调查。

来源: solidot.org

详情: http://www.dbsec.cn/zx/20190421-2.html 

印度支付卡欺诈发案率快速上升 名列全球第二

根据网络安全公司Gemini Advisory发布的网络犯罪统计数据,2018年,超过320万张印度支付卡记录被泄露,并在网上发布供出售,这与去年相比有了很大的飞跃,当时只有80万张印度支付卡的详细信息被发布在网络犯罪论坛上。

来源: cnBeta.COM

详情: http://t.cn/EaActwV 

计算机故障被指延误了巴黎圣母院的灭火

巴黎圣母院周一晚上六点左右失火,最有可能的失火原因是电梯的电气短路,但一个计算机 bug 被指耽搁了灭火行动,导致了火势的快速蔓延。法国媒体报道称,在晚上六点后不久火警响起,但计算机 bug 在错误的地点显示了起火的位置。

来源: solidot.org

详情: http://t.cn/EaAcxIJ 

薅羊毛薅到犯罪 有人非法套取信用卡积分获利被判刑

获取积分,兑换礼品,这是不少消费者,尤其是年轻群体熟悉的生活方式,有人把这种赚取优惠的行为戏称为“薅羊毛”。但是,“羊毛”薅得太狠,也会违法犯罪,山东、上海等地最近先后有人因为通过虚假交易等方式获取信用卡积分和礼品,被判诈骗罪。

来源: 央广网

详情: http://t.cn/EaAco6w 

(信息来源于网络,安华金和搜集整理)


从用户成为“股东” —— 在 Apache 基金会的 2600 天

$
0
0

4 月 1 日,腾讯云大数据及人工智能产品研发的专家研究员堵俊平受邀成为 Apache 软件基金会成员,一封名为 “邀请成为 ASF 成员” 的电子邮件正式为堵俊平敲开了开源世界的新大门。

从用户成为“股东” —— 在 Apache 基金会的 2600 天

从 2011 年开始为 Hadoop 的初始版本打补丁,堵俊平已经在 Apache Hadoop 社区深耕了 8 年,13 年成为提交者,15年成为 PMC 成员,时至今年,正式荣升 ASF 成员。“我很荣幸,但从此,我也有了更多的责任。” 

现在全世界有 883 位 ASF 成员 ,中国区仅有 13 人,其中较为出名的包括 Kyligence 联合创始人兼 CEO 韩卿(Luke Han) ,以及中国开源社的理事长刘天栋(Ted Liu)。 

与在一个项目单元下垂直贡献不同,ASF 成员会收到 Apache 基金会下超过 350 个开源项目的季度报告,横向地对更多的项目起到管理义务。

ASF 成员关注的是 Apache 基金会本身,这通常通过项目相关和跨项目活动来证明。从法律上讲,成员是基金会的“股东”,也是业主之一。他们有权选举董事会,成为董事会选举的候选人。他们也有权作为导师提出一个新的孵化项目。

有一点需要特别指出,Apache 基金会中从提交者开始的每个角色都只能通过他人提名并投票决定,这代表社区伙伴的认可,每上一个新台阶的背后都有着日日夜夜事无巨细的付出:不断贡献高质量代码、提交补丁,组织发布,回答用户问题,参与投票,培养和提名提交者,发表合理合适意见,还有一些影响更加深远的贡献,推动腾讯内部持续贡献 Apache 基金会,组织黑客松和聚会 ,身体力行地推广 Hadoop,传递开源理念。 

堵俊平今年的想法是主动去挖掘 1-2 个合适的项目,推荐进入孵化流程,“Mentor 有点像投资人,只不过我们是拿出自己的时间来投资”,堵俊平做了这样的比喻,时间比资金更有限、更私人,所以选择开源项目时会坚持从技术驱动,在自己有兴趣的领域帮助有潜力的项目快速成熟。

代码、人,社区都在成长 —— Apache基金会的运作模式 

Apache 基金会的官网上有几十份、累计数十万字的文档内容在介绍 Apache 基金会的运作模式,在真正接触到基金会的“内部人士”前,外界似乎很难相信一个跨时区、跨文化、跨公司的组织能够严格按照这样的模式运作了 20 年。它详细到超乎想象,哪怕是针对一些意外情况,也多能在这些文档找到解决方案。

“ASF 成员想要退休怎么办?”,“决策投票的有效期在跨时区的情况下如何保证?”,“投出 +0.9 票的成员是怎么想的”……诸如此类。

Apache 基金会中的每个人、每个项目、每个社区,都并非固定一成不变的,它是一个极其动态的过程,每个人、项目和社区时刻都在成长,而这一切是透明的,作为一个普通用户,几乎不要花多少功夫,你就能了解这个庞大的社区每天发生的一切变化:代码量的增减、提交者的变化、最新的发布清单。Apache 基金会像是一个精密的齿轮,日夜不停地转动,开源这个概念自身的魅力正是其磨合剂。

作为社区中的人,只要你参与在 Apache 基金会的项目中,你就肯定能找到一个对应角色:

  • 用户User:开始使用一个或多个 Apache 基金会的开源项目。

  • 贡献者Contributor:提交代码或文档的patches,在官方渠道(邮件列表,IRC 等)支持其它用户。

  • 提交者Committer:持续贡献,坚持贡献,被提名、投票通过后,拥有直接访问并提交代码的权限。

  • 项目管理成员PMC Member:做了更多不局限于代码的贡献,进入单个项目个管理委员会,通过投票影响这个项目的发展方向。

  • Apache 基金会成员ASF Member:对 Apache 基金会直接负责,在多个项目中做出贡献,拥有董事会的投票权。

如果你已经在维护一个开源项目,想让它进入 Apache 基金会,那你则需要充分了解项目在社区不断演进的过程,“提名→进入孵化器→成为顶级项目”,每一步都有迹可循。

(图为一个开源项目进入孵化器的过程)

从 Apache Way 到 Tencent Way —— 以 TOSA 加速力行开源实践 

Apache 之道影响了包括腾讯在内的众多中国公司,近几年,中国的开源爱好者们在大会演讲中终于不是只会讲系统是如何设计的、代码是如何实现的,“开源社区”成为业内一个有点抽象的流行词。

“社区”到底是什么?其实就是多人+互动关系,开源社区就是指大家的互动关系围绕着开源项目而产生。不过这种关系并不会凭空产生,原始开发者需要站在一个完全陌生的开发者角度去思考“我为什么要加入你?

这里有很多方法已经在 Apache 之道中得到总结:首先这应该是一个创新的项目,简单易懂的上手指南、详细全面的项目文档、统一规范的代码格式,都能够降低其他开发者的门槛,吸纳贡献者之前要先想清楚项目需要哪方面的帮助,贡献者加入之前也要明确如何协调工作。

对于自由开发者来说,践行以上方法,可能只需要多一点点决心而已,但对于公司体制下的开源开发者,得到公司和所在团队的支持也许更加实际。

18 年中旬,腾讯正式成立了开源管理办公室,腾讯 BG 相对独立、自下而上的管理模式其实和 Apache 软件基金会颇有类似之处,因此这个办公室的组织架构也设计成类似于 Apache 软件基金会的模式。开源合规组应对开源的法律风险,TPMC 聚集了每个项目的内外部开发者,而这个略带江湖气息的腾讯开源联盟(TOSA)则是整个组织的大脑,负责决策腾讯开源要向哪个方向前行。

堵俊平现任腾讯开源联盟的主席,除了负责 Apache 基金会 的各项事宜外,他还主动承担起管理和治理腾讯开源工作的职责。“我非常高兴能看到腾讯开源选择 Apache 的模式,这奠定了一个项目不断壮大的基础,对于发展中遇到的问题,我会坚持开放透明的方式去解决”,堵俊平提出了三点目标:

  1. 改进腾讯开源的审核流程。发布统一的审核平台,能让大家看到自己及其它正在审核中的项目的进程,尽量从内部开始,就把流程透明化。此外,目前开源前的审核大多是法律方面的流程,很少有针对项目本身代码质量、文档建设的考量,我希望腾讯也能发扬导师制度,导师深度参与到一个新的开源项目中,给予帮助。我们甚至可以建立一个 tencent-incubator 的仓库,放置一些不那么成熟的项目,这样外部开发者使用的时候也更容易选择:选择成熟的,成本低;选择孵化中的,有机会一起改变。
  2. 帮助项目构建外部的生态。对于构建开源项目的外部生态,堵俊平表示这对腾讯来说并不是一个轻松的过程,除了他个人愿意作为导师推荐腾讯的开源项目在 Apache 基金会中孵化成顶级项目以外,腾讯云也在持续为开源 Hadoop 等项目贡献补丁和功能,包括验证发布用于生产环境。
    他表示腾讯云愿意为开源项目提供支持,可能有很多方式,帮助开源项目打包成商业级服务在腾讯云上便捷的提供给用户,或者组织技术大会给开源提供更多的曝光窗口等。
  3. 建立腾讯对开源的评估体系。“国内有一些有关各大公司开源水平的评价新闻我认为并不够确切,纯粹去比拼数量和 Star 其实是个简单粗暴的行为”,堵俊平谈到:“就像 Apache 基金会对孵化的项目提出的要求——至少有来自三家公司以上的贡献者才能毕业,这个行为其实是在保护用户,我希望腾讯对于自己的开源项目也能有一些更加细致、更加专业的评估体系,这样无论在任何场合,面对任何报道,我们都让外界对腾讯的开源、腾讯的技术充满信心。”

我们做了一个极简的文章列表小程序

$
0
0

一直想有个 Linux 中国的 APP,因为种种条件限制而没有达成这个目标。

微信小程序出来之后,也考虑过是否可以用微信小程序来实现一个 Linux 中国的 APP。但是在这个小程序内应该实现什么功能呢?经过几番考虑,可能也是因为最近比较喜欢极简风格,因此就做了一个(真的)极简的 Linux 中国小程序。

好吧,以上是给我自己找的理由,实在是因为这个小程序里面不知道该放些什么功能才是大家需要的,所以这个小程序只有 3  个页面:一闪而过的封面、显示文章题图及标题的翻页列表,以及一个显示文章内容的 web-view。

扫描或搜索“Linux文章”小程序

打开这个小程序,封面闪过之后,就是这样的列表:

竖版界面

向左滑动,就是下一篇。

点击这个页面,会切换显示模式,以横屏模式显示题图。再次点击切换回来。横屏模式下长按图片,可以保存该图片(需要授权才行)。之所以做这样的功能,是因为我们的每篇文章,都会尽力去选择一张漂亮的题图,不能辜负这种对读者的心意。

横版题图

什么,你说如何访问文章?哦,是我忘记啦——在竖屏模式下,长按即可访问。

此外,要是遇到喜欢的文章,可以方便的分享出去:

分享

最后,拉了一个小群,有什么建议和 bug 反馈可以进群交流。

限时入群

在 Bash 中使用[方括号](二)

$
0
0

square brackets

我们继续来看方括号的用法,它们甚至还可以在 Bash 当中作为一个命令使用。

欢迎回到我们的方括号专题。在前一篇文章当中,我们介绍了方括号在命令行中可以用于通配操作,如果你已经读过前一篇文章,就可以从这里继续了。

方括号还可以以一个命令的形式使用,就像这样:

[ "a" = "a" ]

上面这种 [ ... ] 的形式就可以看成是一个可执行的命令。要注意,方括号内部的内容 "a" = "a" 和方括号 [] 之间是有空格隔开的。因为这里的方括号被视作一个命令,因此要用空格将命令和它的参数隔开。

上面这个命令的含义是“判断字符串 "a" 和字符串 "a" 是否相同”,如果判断结果为真,那么 [ ... ] 就会以状态码status code 0 退出,否则以状态码 1 退出。在之前的文章中,我们也有介绍过状态码的概念,可以通过 $? 变量获取到最近一个命令的状态码。

分别执行

[ "a" = "a" ]
echo $?

以及

[ "a" = "b" ]
echo $?

这两段命令中,前者会输出 0(判断结果为真),后者则会输出 1(判断结果为假)。在 Bash 当中,如果一个命令的状态码是 0,表示这个命令正常执行完成并退出,而且其中没有出现错误,对应布尔值 true;如果在命令执行过程中出现错误,就会返回一个非零的状态码,对应布尔值 false。而 [ ... ] 也同样遵循这样的规则。

因此,[ ... ] 很适合在 if ... thenwhileuntil 这种在代码块结束前需要判断是否达到某个条件结构中使用。

对应使用的逻辑判断运算符也相当直观:

[ STRING1 = STRING2 ] => 检查字符串是否相等
[ STRING1 != STRING2 ] => 检查字符串是否不相等
[ INTEGER1 -eq INTEGER2 ] => 检查整数 INTEGER1 是否等于 INTEGER2 
[ INTEGER1 -ge INTEGER2 ] => 检查整数 INTEGER1 是否大于等于 INTEGER2
[ INTEGER1 -gt INTEGER2 ] => 检查整数 INTEGER1 是否大于 INTEGER2
[ INTEGER1 -le INTEGER2 ] => 检查整数 INTEGER1 是否小于等于 INTEGER2
[ INTEGER1 -lt INTEGER2 ] => 检查整数 INTEGER1 是否小于 INTEGER2
[ INTEGER1 -ne INTEGER2 ] => 检查整数 INTEGER1 是否不等于 INTEGER2
等等……

方括号的这种用法也可以很有 shell 风格,例如通过带上 -f 参数可以判断某个文件是否存在:

for i in {000..099}; \
 do \
  if [ -f file$i ]; \
  then \
   echo file$i exists; \
  else \
   touch file$i; \
   echo I made file$i; \
  fi; \
done

如果你在上一篇文章使用到的测试目录中运行以上这串命令,其中的第 3 行会判断那几十个文件当中的某个文件是否存在。如果文件存在,会输出一条提示信息;如果文件不存在,就会把对应的文件创建出来。最终,这个目录中会完整存在从 file000file099 这一百个文件。

上面这段命令还可以写得更加简洁:

for i in {000..099};\
do\
 if [ ! -f file$i ];\
 then\
  touch file$i;\
  echo I made file$i;\
 fi;\
done

其中 ! 运算符表示将判断结果取反,因此第 3 行的含义就是“如果文件 file$i 不存在”。

可以尝试一下将测试目录中那几十个文件随意删除几个,然后运行上面的命令,你就可以看到它是如何把被删除的文件重新创建出来的。

除了 -f 之外,还有很多有用的参数。-d 参数可以判断某个目录是否存在,-h 参数可以判断某个文件是不是一个符号链接。可以用 -G 参数判断某个文件是否属于某个用户组,用 -ot 参数判断某个文件的最后更新时间是否早于另一个文件,甚至还可以判断某个文件是否为空文件。

运行下面的几条命令,可以向几个文件中写入一些内容:

echo "Hello World" >> file023
echo "This is a message" >> file065
echo "To humanity" >> file010

然后运行:

for i in {000..099};\
do\
 if [ ! -s file$i ];\
 then\
  rm file$i;\
  echo I removed file$i;\
 fi;\
done

你就会发现所有空文件都被删除了,只剩下少数几个非空的文件。

如果你还想了解更多别的参数,可以执行 man test 来查看 test 命令的 man 手册(test[ ... ] 的命令别名)。

有时候你还会看到 [[ ... ]] 这种双方括号的形式,使用起来和单方括号差别不大。但双方括号支持的比较运算符更加丰富:例如可以使用 == 来判断某个字符串是否符合某个模式pattern,也可以使用 <> 来判断两个字符串的出现顺序。

可以在 Bash 表达式文档中了解到双方括号支持的更多运算符。

下一集

在下一篇文章中,我们会开始介绍圆括号 () 在 Linux 命令行中的用法,敬请关注!

更多


via: https://www.linux.com/blog/learn/2019/4/using-square-brackets-bash-part-2

作者:Paul Brown 选题:lujun9972 译者:HankChow 校对:wxy

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

怎样在 Kubernetes 上运行 PostgreSQL

$
0
0

创建统一管理的,具备灵活性的云原生生产部署来部署一个个性化的数据库即服务(DBaaS)。

cubes coming together to create a larger cube

通过在 Kubernetes 上运行 PostgreSQL 数据库,你能创建统一管理的,具备灵活性的云原生生产部署应用来部署一个个性化的数据库即服务为你的特定需求进行量身定制。

对于 Kubernetes,使用 Operator 允许你提供额外的上下文去管理有状态应用。当使用像PostgreSQL 这样开源的数据库去执行包括配置、扩展、高可用和用户管理时,Operator 也很有帮助。

让我们来探索如何在 Kubernetes 上启动并运行 PostgreSQL。

安装 PostgreSQL Operator

将 PostgreSQL 和 Kubernetes 结合使用的第一步是安装一个 Operator。在针对 Linux 系统的Crunchy 的快速启动脚本的帮助下,你可以在任意基于 Kubernetes 的环境下启动和运行开源的Crunchy PostgreSQL Operator

快速启动脚本有一些必要前提:

  • Wget 工具已安装。
  • kubectl 工具已安装。
  • 在你的 Kubernetes 中已经定义了一个 StorageClass
  • 拥有集群权限的可访问 Kubernetes 的用户账号,以安装 Operator 的 RBAC 规则。
  • 一个 PostgreSQL Operator 的 命名空间

执行这个脚本将提供给你一个默认的 PostgreSQL Operator 部署,其默认假设你采用 动态存储和一个名为 standard 的 StorageClass。这个脚本允许用户采用自定义的值去覆盖这些默认值。

通过下列命令,你能下载这个快速启动脚本并把它的权限设置为可执行:

wget <https://raw.githubusercontent.com/CrunchyData/postgres-operator/master/examples/quickstart.sh>
chmod +x ./quickstart.sh

然后你运行快速启动脚本:

./examples/quickstart.sh

在脚本提示你相关的 Kubernetes 集群基本信息后,它将执行下列操作:

  • 下载 Operator 配置文件
  • $HOME/.pgouser 这个文件设置为默认设置
  • 以 Kubernetes Deployment 部署 Operator
  • 设置你的 .bashrc 文件包含 Operator 环境变量
  • 设置你的 $HOME/.bash_completion 文件为 pgo bash_completion 文件

在快速启动脚本的执行期间,你将会被提示在你的 Kubernetes 集群设置 RBAC 规则。在另一个终端,执行快速启动命令所提示你的命令。

一旦这个脚本执行完成,你将会得到提示设置一个端口以转发到 PostgreSQL Operator pod。在另一个终端,执行这个端口转发操作;这将允许你开始对 PostgreSQL Operator 执行命令!尝试输入下列命令创建集群:

pgo create cluster mynewcluster

你能输入下列命令测试你的集群运行状况:

pgo test mynewcluster

现在,你能在 Kubernetes 环境下管理你的 PostgreSQL 数据库了!你可以在官方文档找到非常全面的命令,包括扩容,高可用,备份等等。

这篇文章部分参考了该作者为 Crunchy 博客而写的在 Kubernetes 上开始运行 PostgreSQL


via: https://opensource.com/article/19/3/how-run-postgresql-kubernetes

作者:Jonathan S. Katz 选题:lujun9972 译者:arrowfeng 校对:wxy

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

小白观察:Google 的 Stadia 是否会杀死实体游戏机?

$
0
0

Deep News

Google 的 Stadia 是否会杀死实体游戏机?

这篇文章中讨论了关于 Stadia 的问题,笔者的结论是 Stadia 不会杀死实体游戏机。理由如下:

  1. Stadia 对网速有极高依赖,然而并不是所有的设备都有足够的网速。
  2. Stadia 需要和游戏厂商合作来开发游戏,但目前盈利等尚不明朗,所以不太可能杀死实体游戏机。

【VentureBeat】

能够杀死现有游戏的,不会是我们所能想到的,一定是基础技术有了大的提升后,新的娱乐形态杀死的。 

Quick News

法国推出安全加密聊天应用

法国推出了专属于政府的安全加密聊天应用 Tchap 的测试版,不过近期的测试版显示你只需要将 @elysee.fr (法国总统府的邮件后缀)添加到你的账户中,就可以注册成功。【Engadget】

Apple 希望将更多 iOS 端的应用体验迁移到 macOS 上

根据 9to5Mac 的报道,Apple 可能将一些移动端的应用迁移到 macOS 端。比如 Siri Shortcuts 、 ScreenTime 等。【9To5Mac】

Viewing all 9060 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>