分类 观点 下的文章

Linux 中的可选项似乎“无穷无尽”,因为每个人都可以通过修改一个已经发行的版本或者新的白手起家的版本 (LFS) 来构建 Linux。

关于 Linux 发行版的选择,我们关注的因素包括用户界面、文件系统、软件包分发、新的特性以及更新周期和可维护性等。

在这篇文章中,我们会讲到两个较为熟知的 Linux 发行版,实际上,更多的是介绍两者之间的不同,以及在哪些方面一方比另一方更好。

什么是 CentOS?

CentOS(Community Enterprise Operating System)是脱胎于 Red Hat Enterprise Linux (RHEL) 并与之兼容的由社区支持的克隆版 Linux 发行版,所以我们可以认为 CentOS 是 RHEL 的一个免费版。CentOS 的每一套发行版都有 10 年的维护期,每个新版本的释出周期为 2 年。在 2014 年 1 月 8 日,CentOS 声明正式加入红帽,为新的 CentOS 董事会所管理,但仍然保持与 RHEL 的独立性。

扩展阅读:如何安装 CentOS?

CentOS 的历史和第一次释出

CentOS 第一次释出是在 2004 年,当时名叫 cAOs Linux;它是由社区维护和管理的一套基于 RPM 的发行版。

CentOS 结合了包括 Debian、Red Hat Linux/Fedora 和 FreeBSD 等在内的许多方面,使其能够令服务器和集群稳定工作 3 到 5 年的时间。它有一群开源软件开发者作为拥趸,是一个大型组织(CAOS 基金会)的一部分。

在 2006 年 6 月,David Parsley 宣布由他开发的 TAO Linux(另一个 RHEL 克隆版本)退出历史舞台并全力转入 CentOS 的开发工作。不过,他的领域转移并不会影响之前的 TAO 用户, 因为他们可以通过使用 yum update 来更新系统以迁移到 CentOS。

2014 年 1 月,红帽开始赞助 CentOS 项目,并移交了所有权和商标。

CentOS 设计

确切地说,CentOS 是付费 RHEL (Red Had Enterprise Edition) 版本的克隆。RHEL 提供源码以供之后 CentOS 修改和变更(移除商标和 logo)并完善为最终的成品。

Ubuntu

Ubuntu 是一个基于 Debian 的 Linux 操作系统,应用于桌面、服务器、智能手机和平板电脑等多个领域。Ubuntu 是由一个英国的名为 Canonical Ltd. 的公司发行的,由南非的 Mark Shuttleworth 创立并赞助。

扩展阅读:安装完 Ubuntu 16.10 必须做的 10 件事

Ubuntu 的设计

Ubuntu 是一个在全世界的开发者共同努力下生成的开源发行版。在这些年的悉心经营下,Ubuntu 的界面变得越来越现代化和人性化,整个系统运行也更加流畅、安全,并且有成千上万的应用可供下载。

由于它是基于 Debian 的,因此它也支持 .deb 包、较新的包系统和更为安全的 snap 包格式 (snappy))。

这种新的打包系统允许分发的应用自带满足所需的依赖性。

扩展阅读:点评 Ubuntu 16.10 中的 Unity 8

CentOS 与 Ubuntu 的区别

  • Ubuntu 基于 Debian,CentOS 基于 RHEL;
  • Ubuntu 使用 .deb 和 .snap 的软件包,CentOS 使用 .rpm 和 flatpak 软件包;
  • Ubuntu 使用 apt 来更新,CentOS 使用 yum;
  • CentOS 看起来会更稳定,因为它不会像 Ubuntu 那样对包做常规性更新,但这并不意味着 Ubuntu 就不比 CentOS 安全;
  • Ubuntu 有更多的文档和免费的问题、信息支持;
  • Ubuntu 服务器版本在云服务和容器部署上的支持更多。

结论

不论你的选择如何,是 Ubuntu 还是 CentOS,两者都是非常优秀稳定的发行版。如果你想要一个发布周期更短的版本,那么就选 Ubuntu;如果你想要一个不经常变更包的版本,那么就选 CentOS。在下方留下的评论,说出你更钟爱哪一个吧!


via: http://www.linuxandubuntu.com/home/centos-vs-ubuntu

作者:linuxandubuntu.com 译者:Meditator-hkx 校对:wxy

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

 title=

今年是我们一起庆祝 SELinux 纪念日的第十个年头了(LCTT 译者注:本文发表于 2013 年)。真是太难以置信了!SELinux 最初在 Fedora Core 3 中被引入,随后加入了红帽企业版 Linux 4。从来没有使用过 SELinux 的家伙,你可要好好儿找个理由了……

SElinux 是一个标签型系统。每一个进程都有一个标签。操作系统中的每一个文件/目录 客体 object 也都有一个标签。甚至连网络端口、设备,乃至潜在的主机名都被分配了标签。我们把控制访问进程的标签的规则写入一个类似文件的客体标签中,这些规则我们称之为 策略 policy 。内核强制实施了这些规则。有时候这种“强制”被称为 强制访问控制体系 Mandatory Access Control (MAC)。

一个客体的拥有者对客体的安全属性并没有自主权。标准 Linux 访问控制体系,拥有者/分组 + 权限标志如 rwx,常常被称作 自主访问控制 Discretionary Access Control (DAC)。SELinux 没有文件 UID 或拥有权的概念。一切都被标签控制,这意味着在没有至高无上的 root 权限进程时,也可以设置 SELinux 系统。

注意: SELinux 不允许你摒弃 DAC 控制。SELinux 是一个并行的强制模型。一个应用必须同时支持 SELinux 和 DAC 来完成特定的行为。这可能会导致管理员迷惑为什么进程被拒绝访问。管理员被拒绝访问是因为在 DAC 中有些问题,而不是在 SELinux 标签。

类型强制

让我们更深入的研究下标签。SELinux 最主要的“模型”或“强制”叫做 类型强制 type enforcement 。基本上这意味着我们根据进程的类型来定义其标签,以及根据文件系统客体的类型来定义其标签。

打个比方

想象一下在一个系统里定义客体的类型为猫和狗。猫(CAT)和狗(DOG)都是 进程类型 process type

Image showing a cartoon of a cat and dog.

我们有一类希望能与之交互的客体,我们称之为食物。而我希望能够为食物增加类型:cat_food (猫的食物)和 dog_food(狗的食物)。

Cartoon Cat eating Cat Food and Dog eating Dog Food

作为一个策略制定者,我可以说一只狗有权限去吃狗粮(dog_chow),而一只猫有权限去吃猫粮(cat_chow)。在 SELinux 中我可以将这条规则写入策略中。

 title=

allow cat cat_chow:food eat;

允许 猫 猫粮:食物 吃;

allow dog dog_chow:food eat;

允许 狗 狗粮:食物 吃;

有了这些规则,内核会允许猫进程去吃打上猫粮标签 cat_chow 的食物,允许狗去吃打上狗粮标签 dog_chow 的食物。

Cartoon Cat eating Cat Food and Dog eating Dog Food

此外,在 SELinux 系统中,由于禁止是默认规则,这意味着,如果狗进程想要去吃猫粮 cat_chow,内核会阻止它。

同理,猫也不允许去接触狗粮。

 title=

现实例子

我们将 Apache 进程标为 httpd_t,将 Apache 上下文标为 httpd_sys_content_thttpdsys_content_rw_t。假设我们把信用卡数据存储在 MySQL 数据库中,其标签为 msyqld_data_t。如果一个 Apache 进程被劫持,黑客可以获得 httpd_t 进程的控制权,从而能够去读取 httpd_sys_content_t 文件并向 httpd_sys_content_rw_t 文件执行写操作。但是黑客却不允许去读信用卡数据(mysqld_data_t),即使 Apache 进程是在 root 下运行。在这种情况下 SELinux 减轻了这次闯入的后果。

多类别安全强制

打个比方

上面我们定义了狗进程和猫进程,但是如果你有多个狗进程:Fido 和 Spot,而你想要阻止 Fido 去吃 Spot 的狗粮 dog_chow 怎么办呢?

 title=

一个解决方式是创建大量的新类型,如 Fido_dogFido_dog_chow。但是这很快会变得难以驾驭因为所有的狗都有差不多相同的权限。

为了解决这个问题我们发明了一种新的强制形式,叫做 多类别安全 Multi Category Security (MCS)。在 MCS 中,我们在狗进程和狗粮的标签上增加了另外一部分标签。现在我们将狗进程标记为 dog:random1(Fido)dog:random2(Spot)

Cartoon of two dogs fido and spot

我们将狗粮标记为 dog_chow:random1(Fido)dog_chow:random2(Spot)

 title=

MCS 规则声明如果类型强制规则被遵守而且该 MCS 随机标签正确匹配,则访问是允许的,否则就会被拒绝。

Fido (dog:random1) 尝试去吃 cat_chow:food 被类型强制拒绝了。

Cartoon of Kernel (Penquin) holding leash to prevent Fido from eating cat food.

Fido (dog:random1) 允许去吃 dog_chow:random1

Cartoon Fido happily eating his dog food

Fido (dog:random1) 去吃 spot(dog_chow:random2)的食物被拒绝。

Cartoon of Kernel (Penquin) holding leash to prevent Fido from eating spots dog food.

现实例子

在计算机系统中我们经常有很多具有同样访问权限的进程,但是我们又希望它们各自独立。有时我们称之为 多租户环境 multi-tenant environment 。最好的例子就是虚拟机。如果我有一个运行很多虚拟机的服务器,而其中一个被劫持,我希望能够阻止它去攻击其它虚拟机和虚拟机镜像。但是在一个类型强制系统中 KVM 虚拟机被标记为 svirt_t 而镜像被标记为 svirt_image_t。 我们允许 svirt_t 可以读/写/删除标记为 svirt_image_t 的上下文。通过使用 libvirt 我们不仅实现了类型强制隔离,而且实现了 MCS 隔离。当 libvirt 将要启动一个虚拟机时,它会挑选出一个 MCS 随机标签如 s0:c1,c2,接着它会将 svirt_image_t:s0:c1,c2 标签分发给虚拟机需要去操作的所有上下文。最终,虚拟机以 svirt_t:s0:c1,c2 为标签启动。因此,SELinux 内核控制 svirt_t:s0:c1,c2 不允许写向 svirt_image_t:s0:c3,c4,即使虚拟机被一个黑客劫持并接管,即使它是运行在 root 下。

我们在 OpenShift 中使用类似的隔离策略。每一个 gear(user/app process)都有相同的 SELinux 类型(openshift_t)(LCTT 译注:gear 为 OpenShift 的计量单位)。策略定义的规则控制着 gear 类型的访问权限,而一个独一无二的 MCS 标签确保了一个 gear 不能影响其他 gear。

请观看下面的视频来看 OpenShift gear 切换到 root 会发生什么。

多级别安全强制

另外一种不经常使用的 SELinux 强制形式叫做 多级别安全 Multi Level Security (MLS);它开发于上世纪 60 年代,并且主要使用在受信操作系统上如 Trusted Solaris。

其核心观点就是通过进程使用的数据等级来控制进程。一个 secret 进程不能读取 top secret 数据。

MLS 很像 MCS,除了它在强制策略中增加了支配的概念。MCS 标签必须完全匹配,但一个 MLS 标签可以支配另一个 MLS 标签并且获得访问。

打个比方

不讨论不同名字的狗,我们现在来看不同种类。我们现在有一只格雷伊猎犬和一只吉娃娃。

Cartoon of a Greyhound and a Chihuahua

我们可能想要允许格雷伊猎犬去吃任何狗粮,但是吉娃娃如果尝试去吃格雷伊猎犬的狗粮可能会被呛到。

我们把格雷伊猎犬标记为 dog:Greyhound,把它的狗粮标记为 dog_chow:Greyhound,把吉娃娃标记为 dog:Chihuahua,把它的狗粮标记为 dog_chow:Chihuahua

Cartoon of a Greyhound dog food and a Chihuahua dog food.

使用 MLS 策略,我们可以使 MLS 格雷伊猎犬标签支配吉娃娃标签。这意味着 dog:Greyhound 允许去吃 dog_chow:Greyhounddog_chow:Chihuahua

 title=

但是 dog:Chihuahua 不允许去吃 dog_chow:Greyhound

Cartoon of Kernel (Penquin) stopping the Chihahua from eating the greyhound food.  Telling him it would be a big too beefy for him.

当然,由于类型强制, dog:Greyhounddog:Chihuahua 仍然不允许去吃 cat_chow:Siamese,即使 MLS 类型 GreyHound 支配 Siamese。

Cartoon of Kernel (Penquin) holding leash to prevent both dogs from eating cat food.

现实例子

有两个 Apache 服务器:一个以 httpd_t:TopSecret 运行,一个以 httpd_t:Secret 运行。如果 Apache 进程 httpd_t:Secret 被劫持,黑客可以读取 httpd_sys_content_t:Secret 但会被禁止读取 httpd_sys_content_t:TopSecret

但是如果运行 httpd_t:TopSecret 的 Apache 进程被劫持,它可以读取 httpd_sys_content_t:Secret 数据和 httpd_sys_content_t:TopSecret 数据。

我们在军事系统上使用 MLS,一个用户可能被允许读取 secret 数据,但是另一个用户在同一个系统上可以读取 top secret 数据。

结论

SELinux 是一个功能强大的标签系统,控制着内核授予每个进程的访问权限。最主要的特性是类型强制,策略规则定义的进程访问权限基于进程被标记的类型和客体被标记的类型。也引入了另外两个控制手段,分离有着同样类型进程的叫做 MCS,而 MLS,则允许进程间存在支配等级。

*所有的漫画都来自 Máirín Duffy


作者简介:

Daniel J Walsh - Daniel Walsh 已经在计算机安全领域工作了将近 30 年。Daniel 于 2001 年 8 月加入红帽。


via: https://opensource.com/business/13/11/selinux-policy-guide

作者:Daniel J Walsh 译者:xiaow6 校对:wxy

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

sudo board game

今天为大家带来一款棋盘游戏 Sudo ——没错,就是叫 sudo 。其得名于一款名为 Ludo) (印度马棋)的一款棋盘游戏,它是飞行棋的前身。规则与飞行棋大体相同。

我们平时玩的棋子,在这款游戏中叫做进程。而我们平时使用的骰子,也变成了二进制的了。

游戏支持 2 ~ 4 人一起玩耍,每一方起始有四枚“进程”。总共有 4 方:CentOS 队、Fedora 队、Ubuntu 队和 Mint 队。

开局时,各方将四枚“进程”放入各自区域的“基地”中,然后轮流掷骰子,掷得最高点数者开局。开局后再次轮流掷骰子,只有掷得 6 点的人才可以将一枚棋子从“基地”移入起始点(init),并再掷一次来确定移动步数。

玩家掷骰子之后,可以选择任一已经进入了起始点(init)的“进程”移动。没有进入起始点(init)的“进程”不可移动。

“进程”从起始点(init)沿外侧白色格子盘旋整个棋盘一周后才能回到自己本色的中间那一列(主列)抵达中间区域(kernel space)。最终将四枚“进程”全部都移入了中间区域(kernel space)的玩家获胜。

具体的规则还有:

  • 六点连掷:在游戏过程中,掷得 6 点的玩家可以再次掷骰子,直到不是 6 点;然后就轮到(顺时针)下一位玩家掷骰子;
  • 撞击占领:当走到的格子有其它方的“进程”时,将其撞回“基地”,我方的“进程”占领此格子;
  • 叠子阻越:格子内已有我方“进程”,则可以叠放;其它方的“进程”不可越过此格子;
  • 单撞叠子:当我方掷出骰子数,刚好使我方“进程”可停于他方的两个叠子时,则三个“进程”俱都打回“基地”;
  • 无敌叠子:当我方掷出骰子数,刚好使我方“进程”可停于他方的三个叠子时,则只有我方“进程”被打回“基地”;
  • 盘旋达阵:中间终点同色格子,当掷出的点数使“进程”刚好到达此处才可放入“kernel space”,否则超过的点数要后退。

(规则参考:http://oursogo.com/thread-1881293-1-1.html)

此外,这里还有补充的规则:

  • Kill-9 格子:Kill-9 会杀掉我们的“进程”。你需要让你的“进程”回到起始点(init)格子去。
  • /dev/cool 格子: /dev/cool 会帮助我们越过长长的区块,一下子就跳到内核的面前。不过,只有在这个区块的颜色和我们的棋子的颜色一致时,才有用。
  • Fork 格子 : 如果你有一个进程已经抵达了目的地(kernel space),当你有别的进程走到 fork 时,你之前的进程就要返回到路上,并移动到这个格子上。

如果你真的对这个游戏很感兴趣,不妨把我们提供的图片打印出来,进行裁剪、黏贴。就可以真正的玩一把 Sudo 游戏啦!


via: http://turnoff.us/geek/sudo-board-game/

作者:Daniel Stori 译者:Bestony 校对:wxy

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

消沉的程序员 1

depressed-developer

很有意思吧,很多看到这样的漫画对话的程序员,应该感觉似曾相识吧。Bug 出现了?

消沉的程序员 2

depressed-developer

有点疑惑,有好像有点眉目,好像是感觉到哪里错了,是不是要重构。

消沉的程序员 3

depressed-developer

哎,终于发现错误了,感觉有点可笑,自己居然犯这样的错误,原来是那次急于提交代码造成的。

消沉的程序员 4

depressed-developer

是啊,在编程里一生戎马,代码编写无数,各种平台、规范等等,到头来也是满身的错误啊。该是技术不行吧!

消沉的程序员 5

depressed-developer

呀,快要消除错误了,可是,不对。相信事后的 Bug 和 Debug 会是程序员生活中的一个部分。

消沉的程序员 6

depressed-developer

每个新建的工程都是有美好的设想吧,可后来为什么总是渐行渐远?大多时候的自言自语,总是有人认为是在和代码对话吧?可没有身在其中,别人又怎么懂得!

消沉的程序员 7

depressed-developer

好吧,产品的上线,总是要经过无数次的创建分支,Bug 和 Debug 总还是程序员的永恒话题。其中,有些东西总免不了自己推翻自己,感觉要从头再来一样。

消沉的程序员 10

depressed-developer

为了某项专门的研究,学习一门相关的语言,不知道是不是值得?是不是先要思考其必要性呢?最后发现自己并不喜欢这门语言,导致怀疑自己的专业技能,这样大概不好吧!

消沉的程序员 11

depressed-developer

其实,本来是愉快的蹲个坑,却不自觉的陷入编码的思考。想想,不仅是程序员,很多人有都有类似此景的情况吧,明明在做着某事,却想着另外一件事。

后记

看至此处,各位朋友是不是感觉少了系列的第 8 和第 9 篇?起初,译者也这么想,后来问了作者 Daniel Stori 之后,才恍然,原来序号采用了八进制,按照作者说的,一个隐式的玩笑。明白了吗,朋友们?

大伙儿都习惯了日常的十进制。当常态处于优先级的时候,日常一些非常态就如同细枝末节,也就往往容易被人们忽略。大概就是这样吧。


译者简介:

GHLandy —— 生活中所有欢乐与苦闷都应藏在心中,有些事儿注定无人知晓,自己也无从说起。


via:

作者:Daniel Stori 译者:GHLandy 校对:wxy

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

Linux 世界的新同学们,大家好,当你看到这么多基于 Linux 内核的发行版后,是不是在选择的过程中无从下手呢。很多同学都是刚刚从熟悉的 Windows 系统来到陌生的 Linux 世界里,都希望使用一款既简单易用,又跟 Windows 长得很像的 Linux 发行版,因此我今天将给大家介绍几款这样的 Linux 发行版,它们的桌面环境跟 Windows 系统界面十分相似,咱们开始吧!

Linux Mint

linux mint for new linux users

我给大家介绍的第一款非常流行的 Linux 发行版就是 “Linux Mint 操作系统” 。当你决定使用 Linux 系统来代替 Windows 系统时,你应该在某些地方听说过 Linux Mint 这个发行版吧。 Linux Mint 和 Ubuntu 系统一样被公认为是最好用的 Linux 发行版之一, Linux Mint 系统因其简洁易用、功能强大的 Cinnamon 桌面环境而出名。 Cinnamon 使用起来非常简单,而且你还可以使用各种桌面主题、图标库、桌面小工具和应用组件来把 Linux Mint 系统配置得跟 Windows XP 、 Windows 7 、 Winows 8 或者 Windows 10 系统的界面一样。 Cinnamon 也是 Linux 系统中非常流行的桌面环境之一。你一定会对这个简单易用、功能强大的桌面环境爱不释手。

同时,你也可以阅读这两篇文章 Linux Mint 18.1 "Serena" —— 最幽雅的 Linux 发行版之一​ 以及 Cinnamon ——给新手的最佳 Linux 桌面环境 来进一步了解 Linux Mint 操作系统和 Cinnamon 桌面环境。

Zorin OS

zorin os for windows users

Zorin OS 操作系统 也是可以用来替代 Windows 7 系统的一款非常流行的 Linux 发行版。其开始菜单和任务栏非常漂亮,整体界面美观充满活力,而且在速度和稳定性方面也相当出色。如果你喜欢的是 Windows 7 而不是 Windows 10 系统,那么 Zorin OS 将会是你最好的选择。 Zorin OS 同样预安装了很多软件,因此你再也不用费尽周折的去找软件来安装了。其华丽的仿 Windows 7 系统的界面风格更是让人一见如故。大胆去尝试吧。

你还可以阅读Zorin OS 12 评测 | 本周 Linux 和 Ubuntu 发行版评测这篇文章来进一步了解 Zorin OS 系统。

Robolinux

robolinux for new users

Robolinux 操作系统 是一个内嵌了 Windows 运行环境(Wine)的 Linux 发行版。它支持用户在 Linux 系统中运行 Windows 应用程序,因此,你再也不用担心自己喜欢的 Windows 应用程序在 Linux 系统中无法使用的问题了。在 Robolinux 系统中,这个特性被称为“隐形虚拟机(Stealth VM)”。我对这个新颖独特的功能非常感兴趣。同时, Rololinux 系统还包括其它几个桌面环境,你可以根据自己的喜好选择某一个桌面环境。这个系统中还有一个用于完全备份 C 盘的工具,不会让你丢失任何文件。很独特吧,对不对?

ChaletOS

chalet os for new users

大家有谁用过 ChaletOS 操作系统 吗?这是一款在界面外观和使用感觉上最接近于 Windows 的 Linux 发行版 之一。上面的截图是在我使用了 Windows 10 图标和主题包后的效果,使用这个主题包后,可以让 ChaletOS 的桌面变得和 Windows 10 界面一样。一些预安装的应用程序也可以帮助你更好的使用 ChaletOS 系统。在使用的过程中你仿佛又回到了熟悉的 Windows 世界里。上面的截图竟然让我的朋友们信以为真了。去试一试吧,你肯定会喜欢这个发行版。

你还可以通过 ChaletOS —— Linux 发行版中的新秀 这篇文章来进一步了解 ChaletOS 系统。

总结

这篇文章中列出的发行版我尽量写得简短一些,否则会给新手们在选择的过程中造成太多的困惑,无从下手。还有一些大家正在使用的 Linux 发行版在本文中并未提及。希望你们在下面的评论中提出来,以帮助我们的新朋友们在选择 Linux 发行版的过程中作出正确的选择。

好吧,到此为止吧,这 4 款操作系统都是从 Windows 转向 Linux 的新用户在学习过程中使用最广泛的 Linux 发行版 ,当然 Kubuntu 和 Elementary OS 系统也不甘示弱。想安装哪个版本,完全由你自己决定。大多数情况下 Linux Mint 操作系统 一直独占鳌头。如果你刚踏入 Linux 的世界,我建议你从 Linux Mint 系统开始。行动起来吧,现在就安装一个自己喜欢的 Linux 系统,勇往直前,成为改变 Linux 开源世界的一员。|


via: http://www.linuxandubuntu.com/home/best-windows-like-linux-distributions-for-new-linux-users

作者:linuxandubuntu.com 译者:rusking 校对:wxy

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