SE Linux初级教程:总揽

接下来是有关在什么情况下你该使用SE Linux和它的基本使用的简短介绍。 2.2 部分规定了后面章节将常使用的的术语。, 所以请熟悉他们。

2.1 为什么使用SE Linux?

SE Linux 可以为你的系统提供较棒的安全防护。 使用者能被分配预先定义好的角色,以便他们不能存取文件或者访问他们不拥有的程序。 这可不是简单的 " chmod 777" 同等物操作。 这在角色, 或他所在的安全上下文已经限制接触的文件和其他的资源的使用者定义中是不同于一般的 Unix 许可权限的,除了在一种比较受约束的流行之外。 带一个用户的.rhosts 文件在一个一般的 Unix 系统上申请。 如果他们使它成为任何人可写入 , 那么任何能登录的人都可以作危险的操作。 在 SE Linux 之下,你能控制其它用户是否有能力改变他们的.rhosts文件, 以及阻止其他的人写入 , 就算拥有者已经使它成为任何人可写入。

一个通常的疑问是 SE Linux 的权限设置如何与标准的 Unix 的权限设置共存。 当你做特定的操作的时候, Unix 权限首先被检查。 如果他们允许你的操作 , 那么然后, SE Linux 将会检查并且允许或拒绝使用者的使用。 但是如果 Unix 许可不让你做某事,在那里的运行的操作被禁止和 SE Linux 检查没关系。

另外的一个例子是,如果有一个设置了SUID的可执行文件,如/usr/bin/passwd 他可以运行命令chmod 666 /etc/shadow,SE Linux 会阻止任何人非法的这样设置文件。

2.2 术语

接下来的术语将在本文当中经常出现, 也是来自SE Linux的基本概念. It is somewhat tricky to define one word without including the other terms so I realise my definitions include things that need defining(译者注:这句实在不敢乱译,sorry。不过不耽误学习;-)) ;)

2.2.1 (身份)">identity

在 SE Linux 中,身份的概念不同于传统的Unix uid (user id). 它们可以共存于一个系统, 但却是十分不同的概念。 在SE Linux中的身份是安全上下文的一部分,它会影响哪个域可以进入,也就是本质上的可以被执行。一个SE Linux 的身份(identity)会跟标准的Unix登录名有很相似的文本表示 (大部分情况下它们是这样), 无论如何,了解它们是两个完全不同的概念是很重要的。 运行su 命令不会改变SE Linux中的身份(identity)。(译者注:我在红帽系统中做的实验却不是这样,不过这无所谓,可能红帽系统的策略设置不同,我目前还没来得及研究具体是什么问题,只是猜测。)

举例: 一个无特权用户 faye 运行 id 命令 (在启动SE Linux的情况下) 可以看到用户的安全上下文:

context=faye:user_r:user_t

安全上下文中的身份部分就是 "faye"。 现在, 如果 faye su切换成 root 再运行id, 他将发现安全上下文仍然是:

context=faye:user_r:user_t

身份保持相同, 跟没切换到root时一样。, 不管怎样,如果faye 身份被允许进入sysadm_r 角色并转换成了sysadm_r (这里可以使用newrole -r 命令),再运行id 命令,他将看到:

context=faye:sysadm_r:sysadm_t

身份字段保持一样但是角色和域(第二和第三字段)的字段已经变了。这样保持身份的方式是用户职责所必需的。身份将影响系统决定哪个角色和域可以被什么身份所使用,这将对系统安全期决定性的作用。

2.2.2 域

所有进程都在域中运行。域直接决定了进程的访问。 域基本上是一个进程允许做的操作的列表, 或者说它决定了一个进程可以对哪些类型进行操作。 域就好像一个标准UNIX的uid的概念。 假设一个属于root用户的可执行程序被设置了setuid。 在这个系统上的任何用户,只要可以执行这个程序,它就有可能获得root的权限。这是一个很大的安全漏洞。 再有SE Linux的系统上, 如果一个正在执行的进程想要转换进入特权域执行时,如果这个进程的角色被设置成不允许进入特权与的话, 这个进程就不能执行。

常见的例子是sysadm_t是系统管理域, user_t 是无特权用户域。 Init运行在init_t 域, named 运行在 named_t 域。

2.2.3 类型

类型分配给一个对象并决定谁可以访问这个对象。 它的定义和域基本相同, 不同就是域是对进程的应用而类型是分配给目录,文件,和套接字的。

2.2.4 角色

角色决定了那些域可以使用。 有关哪些与可以被哪些角色使用可以预先定义在策略的配置文件里。如果一个策略数据库中定义了一个角色不可以使用一个域, 它将被拒绝。

例子: 如果允许一个属于 user_t 域 (无特权用户域) 的用户执行passwd 命令, 那么必需在相关的策略配置文件中进行如下设置:

role user_r types user_passwd_t

这样设置了一个属于user_r角色的用户允许进入user_passwd_t域。也就是说他可以执行 passwd 命令。

时间: 2024-09-20 06:24:30

SE Linux初级教程:总揽的相关文章

SE Linux初级教程:介绍

本文的最原始版本为2004年3月所写,此份HOWTO是作者在今年2月根据最新的SE Linux所作的修改后的版本.新的SE Linux与以前的有比较大的变化,而且这项技术本身也正在飞速的发展,并未最后成熟.阅读本文是需要对Linux本身有一定深度的了解作为基础的.本文并不是Linux的初级教程,但却是SE Linux技术的初级教程. 新的SE Linux是基于2.6.*内核的,但是仍然支持2.4.*的内核.这份文档的大部分内容是原来的,我在需要修改的地方做了调整. 这份文档是美国http://w

SE Linux初级教程:建立用户帐户

现在来作点有意思的事情! 我们将会建立一个 SE Linux 用户并分配给他一个角色,然后为用户设定默认的安全上下文. 在旧的SE Linux环境下, 封装程序的建立用 vipw (svipw)来设置,比如, useradd (suseradd), passwd (spasswd), chfn (schfn) 等, 在新的 SE Linux环境下, 这些程序有其它的名称. 5.1 建立一个新的用户 我们现在建立一个新用户.我们叫它setest. 转换到 sysadm_r:sysadm_t 角色:

SE Linux初级教程:添加新的用户域

现在让我们建立一个我们自己的用户域, 并把它叫做second_t . 我们也将会建立一个新的角色叫做second_r . 要建立second_r 角色首先在前面的部分(刚刚分配了 user_r 角色并且并不真正建立这样的用户) 中一步一步跟着作,但是不要运行第 5.2 节中的make命令.在你已经编辑 /etc/selinux/user之后,回到这里并且继续下一部分,关于编辑使用者领域文件的部分. 关于为什么我不想要你运行make指令的原因,是因为早先的部分刚刚分配了缺省的一个 user_r 的

SE Linux初级教程:安装

接下来的一章我们讲解释怎样获得软件包以及安装, 和怎样获得新的SE Linux的软件包以及安装. 因为我运行的是http://www.aliyun.com/zixun/aggregation/33836.html">Debian,所以我演示的安装过程式基于它的. 我们假定你知道该怎样在你所用的发布版上安装软件, 编译内核,并且给内核打补丁. 如果你是从旧的SE Linux上升级的, 并且运行了 SE Linux kernel, 请进入permissive 模式 (用 avc_toggle

Silverlight初级教程-开发工具

Silverlight初级教程 开发工具 在silverlight越来越流行的同时有很多的供应商开始筹划制作编辑和设计silverlight的工具.现在最常见的设计和开发工具是:Visual Studio 2008 Visual Studio是微软整合的集成开发环境. 截止此时Visual Studio 2008已经提供了编辑和预览silverlight中xaml的能力,暂时没提供设计视图的编辑.(不过提供了设计视图专用的编辑工具Blend稍后会介绍) Expression Blend 2 Ex

七 CSS初级教程总结:属性结合起来使用

css|教程 如果你学完HTML初级教程即可学习CSS初级教程,使用CSS处理HTML样式. 下面的代码覆盖了初级教程的所有方面,保存下面的CSS文件并且在浏览器里观看连接的HTML,你可以明白各个CSS属性的用法.最好的学习方法就是理解作用在HTML上的CSS文件,改变CSS HTML会发生什么变化. body {font-family: arial, helvetica, sans-serif;font-size: 80%;color: black;background-color: #ff

linux GTK教程(消息机制/标签/按钮/图像/文本/对话框/菜单/容器)

GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发.跨平台的图形工具包.最初是为GIMP写的,已成为一个功能强大.设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一. 1.GTK安装 2.一个简单的GTK窗口程序 #include <stdio.h> #include <gtk/gtk.h> int main(int argc, char **argv) { GtkWidget *window; gtk_init(&a

Mac OS X Terminal 101:终端使用初级教程

Mac OS X Terminal 101:终端使用初级教程 2012-07-29Renfei Song 10 条评论 内容提要 [隐藏] 1 为什么要使用命令行/如何开启命令行? 2 初识Command Line 3 关于 man 命令 4 命令行,文件和路径 4.1 两种路径:绝对路径和相对路径 4.2 切换到其他路径和目录 4.3 处理特殊字符 4.4 查看隐藏文件 4.5 前往其他卷 5 用Command-Line管理文件 5.1 检视文件 5.1.1 cat 5.1.2 less 5.

《量化金融R语言初级教程》一导读

前 言 量化金融R语言初级教程 本书将向你讲述如何使用统计计算语言R和量化金融知识来解决真实世界的量化金融问题.本书包括了丰富的主题,从时间序列分析到金融网络.每章都会简要地介绍理论知识并使用R来解决一个具体问题. 本书内容 第1章"时间序列分析"(Michael Puhle),介绍了用R处理时间序列数据.并且,你会学到如何建模和预测房价,使用协整改善对冲比,以及对波动率建模. 第2章"投资组合优化"(Péter Csóka,Ferenc Illés,Gergely