Linux操作系统的权限管理概述

我们在Linux系统下面部署一些软件的时候,总是习惯性的将SELinux关闭。很多人用了几年Linux操作系统了,知道SELinux是安全相关的,却说不出更多细节来。您知道SELinux具体是做什么的吗?

Linux操作系统是一个多用户操作系统,这样就存在资源共享与隔离的问题。也就是说用户A的资源可能不愿意让用户B访问;同时,又存在超级用户访问所有用户资源的可能性。因此在Linux操作系统下就需要一套权限管理的功能。

Linux原生的权限管理机制是基于用户角色的管理机制,也就是UGO+RWX/ACL权限控制。其中UGO是User、Group和Other的简称;RWX则是Read、Write和eXecute的简称;ACL是Access Control List的简称。Linux原生的访问控制称为自主访问控制。


图片.png

自主访问控制(Discretionary Access Control, DAC)是指对象(比如程序、文件、进程)的拥有者可以任意修改或者授予此对象相应的权限。这里的拥有者就是指具体的用户,也就是角色(例如root)。这种控制方式的问题在于黑客入侵后可以以该用户的角色执行任何允许的操作。

另外一种访问控制策略是基于标签的访问控制。比如我们给程序和其访问的资源打上标签,这样程序就可以访问有标签的资源,对于没有标签的资源则不能访问。这种模式并非基于用户,而是基于许可。这种策略被称作强制访问控制(Mandatory Access Control ,简称MAC)。其中SELinux就是强制访问控制。

RWX访问控制

RWX访问控制恐怕是我们见得最多的访问控制了。当我们通过ls命令获取文件的详细信息时,其前面的rwx字符串就是对文件权限的标示,而后面跟的root root则是其所属用户和组的信息。如图1就是RWX的一个实例。

image

RWX的组成及含义如图2所示。整个权限描述分为4段,第一段用于描述该文件的类型,可以是常规文件(-)、目录(d)、块设备(b)、链接(l)和字符设备(c)等等。


image

后面三段是文件具体的权限描述信息了,分别是文件主权限、组用户权限和其它用户的权限。通过上述三段的组合就可以实现比较复杂的权限控制。比如允许某个用户的文件可以被其它用户读,但是不可以改写和执行等等。

上述权限控制信息中包含rwx-四种字符,具体含义如下:

  1. r表示对于该用户可读,对于文件来说是允许读取内容,对于目录来说是允许读取其中的文件;
  2. w表示对于该用户可写,对于文件来说是允许修改其内容,对于目录来说可以写信息到目录中,即可以创建、删除文件、移动文件等操作。
  3. x表示对于该用户可执行,对于文件来说就是可以执行该文件,对于目录来说则是可以进入目录;可以搜索(能用该目录名称作为路径名去访问它所包含的文件和子目录)

从用户角度来说文件的权限是通过rwx字符串表示的,其实在底层实现就是一些标示位。如果该位置1则表示有该权限,否则没有该权限。这些信息保持在文件的inode信息中。

image

图3中的宏定义就是Linux内核中对文件权限属性的宏定义,例如S_IRUSR表示主权限可读的标示。这里需要理解的是每个标示占用一个位,本文暂时不过多介绍,这里先有个概念就可以了。

修改文件的权限

我们经常使用的chmod和chown等命令就是用来修改文件的访问权限信息的。其中chmod用于修改文件权限熟悉,而chown则用于修改文件所属的用户和组。

例如我们想让文件b具有执行权限,那么可以执行如下命令:

sudo chmod +x b

执行后结果如图4所示,可以对比图中上下两部分,看到文件b的权限熟悉发生了变化。其中增加了可执行属性。

image

由于底层是二进制的方式存储的,chmod也是支持通过数字的方式修改其权限属性的。比如执行如下命令:

sudo chmod 777 b

由于777其实就是使所有的RWX为1,也即可以被任何用户和组访问。执行效果如下。

image

关于RWX的权限访问控制就先介绍到这里,后续我们在详细介绍,并且介绍在内核中是如何实现的。

SELinux访问控制

SELinux是另外一种访问控制机制,它并非通过角色,而是通过标签的方式实现对主体与被访问对象的控制。这句话可能不太容易理解,比如对于Apache进程想访问某个目录下的文件,那么需要对Apache进程和该目录都打上标签,并且标注其可访问性。这样Apache进程才可以访问该目录。

文章《Linux下SELinux卡通图解,豁然开悟》(<pgclink data-tteditor-tag="tteditorTag" style="box-sizing: border-box; display: inline-block; margin-left: 5px; margin-right: 5px;">「译」Linux下SELinux卡通图解,豁然开悟</pgclink>)通过卡通的方式介绍了该机制的原理,非常形象生动。如果对上文的解释还是稀里糊涂,那么推荐看看这篇文章。

SELinux通常并非默认打开的,如果使用该特性需要我们手动打开。当然,SELinux已经为我们做了很多事情了,通常情况下打开后就可以使用,并不需要我们做更多的事情。如果想实时打开SELinux,直接执行如下命令即可。

setenforce 1

但如果想永久生效,则需要修改SELinux的配置文件。修改起来也非常简单,只需要修改图中红色方框一行的内容即可。


image

上图中,将disabled修改为enforcing就可以使SELinux永久生效(需重启系统)。另外一个参数是permissive,该参数的含义是只记录日志,不进行实际的控制。

最下面一行参数表示该SELinux使用的规则库。SELinux默认定义了很多规则库,所以通常情况下,我们只需要开启就可以了。但是有时候也并非如此,此时就需要根据情况定义自己的规则(策略,policy)。

SELinux的原理也是比较简单的,其核心是规则库(Policy Database)。当有进程访问资源(例如文件,或者套接字)时,内核中的接口中会通过规则库中的数据进行匹配,如果满足要求,则放行;否则阻止访问,并记录审计日志。

image

当然,SELinux的内容还是很多的,今天我们先介绍一下基本原理。后续我们再详细的介绍,敬请期待。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,707评论 0 10
  • 内容概要 为什么要进行权限管理? 在生产服务器上,所有用户都用管理员权限登录吗?显然这是不可以也是不可能的。 因此...
    若兮缘阅读 935评论 1 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,720评论 0 10
  • Linux的权限管理操作 一、权限概述 总述:Linux系统一般将文件可存/取访问的身份分为3个类别:owner...
    白色衬衫_f48d阅读 895评论 0 0
  • 0324练字心得(Day86) 🌟今天是进入练字句子的第4天,先回顾一下那些师父的句子。 🌟0321的任务是(不要...
    薛帅阅读 844评论 1 50