写在前面

我们都知道Linux是一个支持多用户、多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机,同时,为了保护每个人的隐私和工作环境,针对某一个文档(文件、目录),Linux系统定义了三种身份,分别是拥有者(owner)、群组(group)、其他人(others),每一种身份又对应三种权限,分别是可读(readable)、可写(writable)、可执行(excutable),通过这样的设计就可以保证每个使用者所拥有数据的隐密性

文档属性

使用命令ls -al --full-time,或者此命令的简写ll可以查看文件或者目录的所有属性。如下:



从上面可以看到,每一行都有7列,分别是:

  1. 第一列

    共10位,第1位表示文档类型,d表示目录,-表示文件,l表示链接文件,d表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x---的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可写,其他人没有任何权限
  2. 第二列

    表示链接数,表示有多少个文件链接到inode号码。
  3. 第三列

    表示拥有者
  4. 第四列

    表示所属群组
  5. 第五列

    表示文档容量大小,单位字节
  6. 第六列

    表示文档最后修改时间,注意不是文档的创建时间哦
  7. 第七列

    表示文档名称。以点(.)开头的是隐藏文档

变更拥有者(owner)

位置

cat /etc/passwd

注意:必须是该位置下已存在的帐号。也就是在/etc/passwd中有记录的拥有者才能改变。

语法

chown [-R] [帐号名称] [文件或目录]
chown [-R] [帐号名称]:[群组名称] [文件或目录]

备注:此命令也可以顺便变更文档群组,但还是建议使用chgrp命令来变更文档群组。

选项

-R 递归变更,即连同次目录下的所有文件(夹)都要变更。

用法

chown daemon test 变更文件夹test账号为daemon



chown daemon:root test 变更文件夹test群组为root

chown root.users test 变更文件夹账号为root,群组为users



chown .root test 单独变更群组为root

备注:虽然也可以在拥有者与群组间加小数点(.),但为了避免有的同学命名中带点,故还是建议使用冒号“:”来隔开拥有者与群组,避免误判。

变更群组(group)

位置

etc/group

备注:从这里可以查看到所有群组

语法

chgrp [-options] [群组名] [文档路径]

备注:关于options,可以通过man chgrp、info chgrp、chgrp --help等命令查询详细用法。

用法

chgrp -R users test 改变test文件夹及其所有子文件(夹)的群组为users

注意:群组名称不在位置内,将会报错invalid group

变更权限

Linux文档的基本权限就三个,分别是read/write/execute,加上身份owner/group/others也一共也只有九个。权限变更的方式有2种,分别是符号法数字法

符号法

分别使用u,g,o来代表三种身份,a表示全部身份;分别使用r、w、x表示三种权限;分别使用+、-、=表示操作行为

语法

chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文档路径

设置权限(=)

变更目录test的权限为任何人都可读、写、执行。

chmod u=rwx,g=rwx,o=rwx test

chmod ugo=rwx test

chmod a=rwx test

去掉权限(-)

去掉目录test执行权限

chmod u-x,g-x,o-x test

chmod ugo-x test

chmod a-x test

备注:执行权限(x),对目录而已就是其他用户能否cd test成为工作目录。

添加权限(+)

增加目录test执行权限

chmod u+x,g+x,o+x test

chmod ugo+x test

chmod a+x test

备注:很熟悉吧,如果我们编写完一个shell文件test.sh后,通过chmod a+x test.sh就添加了文件执行权限。

数字法

顾名思义,就是使用数字来代表权限,r,w,x分别为4,2,1。三种权限累加就可以得出一种身份的权限。

设置目录test的权限为任何人都可读、写、执行。

chmod 777 test



设置目录test的权限为任何人都可读、写。

chmod 666 test

赋予一个shell文件test.sh可执行权限,拥有者可读、写、执行,群组账号和其他人可读、执行。

chmod 755 test

备注:有没有发现数字法更简单啊!!!

文件和目录权限差异

文档权限对于文件和目录有巨大的差异

文件

针对的是该文件内容

  • readable 可读取该文件的实际内容
  • writable 可以编辑、新增或者是修改该文件的内容
  • executable 有可以被系统执行的权限

备注:具有w权限不并不代表可以删除文件,删除文件是目录权限控制的范围。那是因为目录的相关权限及属性是记录到目录的inode,而目录下的所有文件的名称和对应的索引文件(inode)号码又是记录到目录所属的block中,所以当我们读取某个文件时,必须先读到目录的inode,然后再读取目录的block信息,拿到待读取文件的索引信息,即具体存储在哪个block上,最后才能读到文件内容(这块内容,需要先理解Linux的文件系统,比如Ext2/Ext3/Ext4,后面我们会详细介绍) ------ 先记住文件权限仅仅对文件内容有效。

示例说明

使用root身份读取目录test001下的文件test001-1

查看目录物理全路径:pwd



列出有关的目录和文件:ll -di / /root /root/test001 /root/test001/test001-1

通过man ls 查看-i,全称inode,即 print the index number of each file

  1. 目录/的inode: 通过挂载点的信息找到inode号码为2的block。
  2. 目录/的block:通过上一步骤找到的block,找到root/目录的inode号码为131073。
  3. 目录root/的inode:读取编号为131073的inode找到目录的block。
  4. 目录root/的block:通过上一步骤找到的block,找到root/test001/目录的inode号码为527524。
  5. 目录root/test001/的inode:读取编号为527524的inode找到目录的block。
  6. 目录root/test001/的block:通过上一步骤找到的block,找到文件test001-1目录的inode号码为527526。
  7. 文件test001-1的inode:读取编号为527526的inode找到文件的block。
  8. 文件test001-1的block:通过上一步骤找到的block,读取文件内容。

由于使用的是root身份,具有读取任何文档的权限。如果,使用一般账号,上面每一个步骤的读取,还会匹配权限。

目录

针对的是该目录下的文件对象

  • readable 具有读取目录结构清单的权限,即可以通过ls命令,查询该目录清单。
  • writable 具有变动该目录结构清单的权限,即可以创建、迁移、删除、更名该目录下的文件。
  • executable 具备进入该目录的权限,即可以通过cd命令,成为工作目录。

备注:从上面可以得出,开放目录给任何人浏览时,至少需要赋予rx权限。读取目录文件内容,至少需要目录权限x和文件权限r

总结

Linux的每个文档可以分别针对三种身份赋予rwx权限;chgrp命令变更文件群组,chmod命令变更文件权限,chown变更文件拥有者;那么如何运用这些属性和权限来保证每个租户数据的安全性和隐密性,请看下一篇,Linux如何管理文档多租户进行实战练习。

如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】

如果你对 linux 感兴趣的话可以关注我,我会定期的在博客分享我的学习心得

详解Linux文档属性、拥有者、群组、权限、差异的更多相关文章

  1. Elasticsearch配置详解、文档元数据

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch配置文件详解 a. 在上面博客中,我们已经安装并且成功 ...

  2. HTTP协议详解(文档)

    目录引言................................................................................................ ...

  3. 理解Linux文档的默认安全机制、隐藏属性、特殊权限,妈妈在也不用担心你从删库到跑路!!!

    写在前面 前面的章节 详解Linux文档属性.拥有者.群组.权限.差异,介绍了文档的基本权限,包括读写执行(r,w,x),还有文档若干的属性,包括是否为目录(d).文件(-).链接文件(l).拥有者. ...

  4. 一文详解 Linux 系统常用监控工一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop)具(top,htop,iotop,iftop)

    一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop)     概 述 本文主要记录一下 Linux 系统上一些常用的系统监控工具,非常好用.正所谓磨刀不误砍柴工,花点时间 ...

  5. 详解linux运维工程师入门级必备技能

    详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...

  6. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  7. 详解Linux运维工程师

    运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...

  8. 五分钟搞定 Linux 文档全部知识,就看这篇文章

    作者:无痴迷,不成功 来源:见文末 写在前面 我们都知道Linux是一个支持多用户.多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机,同时,为了保护每个人 ...

  9. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

随机推荐

  1. LeetCode之“动态规划”:Climbing Stairs

    题目链接 题目要求 You are climbing a stair case. It takes n steps to reach to the top. Each time you can eit ...

  2. "《算法导论》之‘图’":深度优先搜索、宽度优先搜索(无向图、有向图)

    本文兼参考自<算法导论>及<算法>. 以前一直不能够理解深度优先搜索和广度优先搜索,总是很怕去碰它们,但经过阅读上边提到的两本书,豁然开朗,马上就能理解得更进一步. 下文将会用 ...

  3. 瑞芯微RK3188如何配置USB摄像头支持

  4. two sum II

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  5. Javac的实现过程

    主要介绍Javac的实现过程及原理. 首先弄明白什么是Javac? Javac是一种编译器,将一种语言转换为另一种语言规范.编译器的作用就是将符合java语言规范的源代码转化为JVM虚拟机能够识别的字 ...

  6. 详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一 ...

  7. Beta 冲刺day 6

    1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:在导入导出方面遇到了困难,导出的文件不能直接导入. 今天解决的进度:完成了登录页面的背景设计,并再次测试了整个系统的功能. 明天要做的事 ...

  8. css那些事(一)

    一.内边框padding和外边框margin属性缩写 内外边框有四个属性:padding-top,padding-right,padding-bottom,padding-left;margin-to ...

  9. 15.linux基础

    1.目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始.当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录 ...

  10. 【转】Python的下划线

    原文: 1. Python中的下划线(译文) 2. [转]关于python中带下划线的变量和函数的意义 总结: 1. 单下划线开头.保护变量,不可被其他包导入使用,除非在__all__声明可以显示引用 ...