请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需要一步,快速开始

搜索
开启左侧

如何向女朋友解释Linux文档的安全机制

圣道 2019-11-7 23:57:22 显示全部楼层 阅读模式

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
作者:justmine(大数据达摩院)
出处:https://www.cnblogs.com/justmine
创作不易,欢迎转载,但必须在文章开头保留此段公告,否则保留追究法律责任的权利。
写在前面

前面的章节 详解Linux文档属性、拥有者、群组、权限、差异,详情了文档的基本权限,包括读写执行(r,w,x),还有文档若干的属性,包括是否为目录(d)、文件(-)、链接文件(l)、拥有者、所属群组、容量大小(字节数)、最后修改时间等等,可以通过chown、chgrp、chmod来变更这些属性和权限。正所谓,打铁要趁热,理解了这些基本的权限和属性后,本篇我们就来谈谈文档的默认安全机制、隐藏属性、特殊权限。
默认安全机制

首先,我们使用管理员root账户分别创建文件file001和目录dir001:
000537xhcsvvml90lvbekv.jpg


从上图可以看到,

  • 文件file001的默认权限为rw-r--r--,即拥有者可读写,同群组下账户只能读取文件,其他人也只能读取文件。
  • 目录dir001的默认权限为rwxr-xr-x,即拥有者可访问、进入、编辑、删除目录下的文件,同一群组下的账户可以访问、进入该目录,其他人也可以访问、进入该目录。
然后,我们再使用一般justmine账户分别创建文件file001和目录dir001:
000537tkce1e1167hb9hfd.jpg


从上图可以看到,

  • 文件file001的默认权限为rw-rw-r--,即拥有者可读写文件,同群组下的账户可读写文件,其他人只能读取文件。
  • 目录dir001的默认权限为rwxrwxr-x,即拥有者可访问、进入、编辑、删除目录下的文件,同群组下的账户可以访问、进入、编辑、删除目录下的文件,其他人也可以访问、进入该目录。
看到了吧,不同账户创建的文档,它们的默认权限是不一样的,这是因为Linux系统应用了默认的文档安全机制,那么这些默认权限是如何计算出来的呢,这里就需要弄清楚两个概念。
文档的默认权限

  • 文件
  • 文件的默认权限为rw-rw-rw-,即默认没有x权限,数字分数表示为666。所以,我们经常需求为shell文件分配执行权限,因为默认去掉这个权限的,现在晓得了吧。
  • 目录
  • 目录的默认权限为rwxrwxrwx,数字分数表示为777
umask
表示要拿掉的文档默认权限。比如:002,即拿掉其他人的w权限。
我们知道r、w、x对应的权限分为4、2、1,权限次序为拥有者、群组、其他人,那么假如拿掉其他人的w权限,umask应该设置为002。假如拿掉群组和其他人的w权限,umask应该设置为022。Linux系统就是将这两种默认的文档安全机制,分别应用于一般账户和管理员。
示例说明:
root账户:
000537tj539jiemkiu8k7j.jpg


justmine账户:
000537z9kszmrksmks99m8.jpg


根据这两种默认的安全机制,现在我们来计算创建文件和目录时的实际默认权限
root管理员账户

  • 创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
  • 创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
justmine一般账户

  • 创建文件时:(-rw-rw-rw-) - (--------w-) ==> -rw-rw-r--
  • 创建目录时:(drwxrwxrwx) - (d-------w-) ==> drwxrwxr-x
瞧见了吧,文档实际的默认权限就是这么计算出来的。明白了这个机制,大家应该可以举一反三建立自己的文档默认安全机制了吧,嘿嘿。那么,如何修改umask呢,超级简单,直接在后面输入权限分数,如:umask 002。顺便说一下,supervisor进程守护器就运用了这个机制来保护子进程,如下:
000537qkqh54zqmvhvbfh0.jpg


隐藏属性

除了9大基本权限外,文档还可以使用chattr来设置隐藏属性,比如完全不可修改,连文档拥有者都不可修改此文档哦。这些隐藏属性,只能通过lsattr来查看。
Centos7.x使用的xfs文件系统,而不是传统的Ext2/Ext3/Ext4文件系统,并不支持所有的chattr参数。
语法
chattr [+-=] [文件|目录]
+ 增加隐藏属性
- 拿掉隐藏属性
= 设置隐藏属性
用法

  • 变更目录为完全不可修改
000537kvhyr3vif2r2yr9q.jpg




  • 变更文件为完全不可修改
000537vcnnnkmisffzsfkj.jpg




  • 看到了吧,这个属性的作用,可以让我们再也不用担心误操作rm -rf然后跑路了吧!!!
  • 尤其是在系统安全层面上,假如需要强烈的系统安全,那么隐藏属性就显得非常有用了
特殊权限

什么文档还有特殊权限,前面9大权限脑壳都整大了,呜呜呜。其实特殊权限才是最难理解的,包括SUID, SGID, SBIT

  • SUID
  • s占据文档拥有者x权限的位置时,称为 Set UID,简称为 SUID,如:-rwsr-xr-x。


  • SUID 权限仅对二进制程序(binary program)有效;
  • 执行者对于该程序需要具有 x 的可执行权限;
  • 仅在执行该程序的过程中有效(run-time);
  • 执行者将具有该程序拥有者 (owner)的权限(此权限最重要的作用,赋予了一般用户通过二进制程序暂时获得root账户的权利)。

  • GUID
  • s占据文档群组x权限的位置时,称为 Set GID,简称为 SGID,如:-rwxr-sr-x。


  • SGID 对二进制程序有用;
  • 程序执行者对于该程序来说,需具备 x 的权限;
  • 执行者在执行的过程中将会获得该程序群组的支持(对于文档多租户的管理非常有用,详情可以阅读:Linux如何管理文档多租户);

  • GBID


  • 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
  • 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件;
备注:SBIT只对目录有效,对于文件没有任何效果
特殊权限的设置
前面我们详情使用数字法设置文档基本权限,如:chmod 777,表示拥有者、群组、其他人的权限组合。那么特殊权限的设置呢,它的位置在拥有者的前面。它们的权限分数分别为SUID=4,SGID=2,SBID=1
用法
设置文件test6的权限为-rwxr-sr-x,由于s占据了群组x的位置,所以特殊权限为SGID,那么命令就为:chmod 2755 test6
000538nezzyyv8yofvyyyi.jpg


总结

本篇我们详细详情了Linux文档的默认安全机制、隐藏属性、特殊权限,写这几篇的文章的目的,就是为了能够玩转Linux系统的多租户。好记性不如烂笔头,荀子说“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之,学至于行而止矣,行之,明也。”对于基础知识的学习,光看过不了多久,可能就忘了,所以大家跟我一起行动起来吧。
假如你觉得本篇文章对您有帮助的话,感谢您的【推荐】
假如你对 linux 感兴趣的话可以关注我,我会定期的在博客分享我的学习心得
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

  • 0 关注
  • 0 粉丝
  • 11 帖子
广告招商