文件权限(待补充)

文章目录

  • 文件权限(待补充)
    • 0.前言
    • 1.基本权限UGO
      • 1.1UGO的基本概念
      • 1.2RWX针对目录和文件的意义
      • 1.3修改文件的所属者和所属组
      • 1.4修改UGO权限
    • 2.预设权限和隐藏属性和特殊权限
      • 2.1预设权限
      • 2.2隐藏属性
      • 2.3特殊权限(待补充)
    • 3.ACL访问控制列表
      • 3.1针对特殊用户和组设置ACL
      • 3.2设置权限最大范围
      • 3.3使目录的文件也保持ACL
      • 3.4取消ACL
        • 3.4.1取消预设的ACL
        • 3.4.2取消部分ACL
        • 3.4.3取消所有ACL
    • 4.总结

  本文关于文件特殊权限的SUID,SGID,SBIT的部分没有阐述,以后时机成熟了就再补上。除此以外,下文参考了《鸟哥的Linux私房菜-基础版》第五章Linux的文件权限与目录配置,第六章6.4节文件与目录的默认权限与隐藏权限,第十三章13.3节主机的细部权限规划:ACL的使用,并引用了其中的一些图片。

0.前言

  Linux一般将文件的使用权限分为三类用户,即用户本身(User),用户所属组(Group)和其他人(Others),这也是后面将提到的UGO模型。但是你可能会想到,如果一个文件仅能针对一个用户而不是多用户,针对一个所属组而不能多个组,是不是有些局限呢?是的,后文ACL访问控制列表将阐述如何将文件分为多用户和多组别管理。当然如果仅能用普通的UGO模型就能解决的文件权限问题,就没必要使用ACL了,毕竟杀鸡焉用牛刀嘛。

  那么文件权限到底指的是什么呢?一般指的是rwx,简单来说r代表可读,w代表可写,x代表可执行,但是针对目录和文件而言,rwx代表的意义却是不同的,这在后文rwx针对目录和文件的意义一节里有阐述。

  当然,我们也可以修改文件的UGO模型和RWX,这在后面有关的章节会阐述。除此以外还有一些关于文件的默认权限umask隐藏属性也会在后面的章节有所阐述。

1.基本权限UGO

1.1UGO的基本概念

  UGO到底该怎么来解释呢?下面借用鸟哥的一张图片来解释:

  王大毛是一个用户(U,User),他的家就是一个G,Group,而张小猪一家对于王大毛而言就是O,Others。怎么来解释文件权限呢?可以这样解释,王大毛经常写日记,显然这个只能他(U)看,又比如王大毛写了一封家书,显然这是他的家庭(G)可以看的,再比如王大毛写东西写多了变成了作家,他在论坛上连载文章,那么其他人(O)也就可以看。也就是说,不同的文件针对不同的人(UGO)的权限是不同的。当然,有一个人很牛逼格拉斯,它是超管root,谁的东西也能看,普通的文件权限对他根本不起作用,这一点要记住。

  下面用ls -l 命令来展示UGO到底是个什么东西:

以dir目录为例

如上图所示,第一个字段的后9个字符就是针对UGO的权限设置,其中9个字符中3个为一组,分别针对U,G,O。所谓U就是第3个字段文件所属者root,所谓G就是第4个字段root(代表的是超管用户所在组,这个组名刚好也叫root),所谓O就是除了U和G的那一拨人。

1.2RWX针对目录和文件的意义

  rwx分别对应可读,可写和可执行,对应目录和文件意义却是不同的,如下面的表所示。

r w x
文件 表示文件是否可读,
对应命令cat more less等
表示文件是否可写,
对应vim和管道添加内容等等
表示文件是否可执行,
比如脚本,二进制命令能否执行,如sh命令等
目录 表示目录内容能否展现
对应ls等命令
表示目录的内容能否修改,
对应mv,rm,touch,mkdir
表示能否进入该目录,
对应cd等

  在理解目录和文件的读写权限上,可以将目录理解为容器,而文件就是容器里的东西。下面这个例子是来自于鸟哥书里面的,我觉得很有意义。

案例如下

简单总结为:

  1. 针对目录,如果某用户要访问目录里面的东西,那么该目录至少要给这个用户x权限。
  2. 针对目录,如果涉及到修改目录的结构,比如添加一个文件,那么该目录至少要给这个用户w权限。
  3. 针对文件,如果涉及到内容的访问,那么该文件至少要个这个用户一个r权限。

通常情况下,一个文件是不应该给x权限的,这是为了安全着想,因为病毒木马等执行至少需要x权限。在Linux中,文件的创建都是没有x权限,需要以后设置才有x权限

除此以外,一个目录的权限通常要么rx权限一起给,要么一起不给。为什么呢?因为一般一个用户访问一个目录,代表他是知道目录里面的内容并想进入目录内部的,所以要给rx权限。

1.3修改文件的所属者和所属组

  修改文件的所属组的命令是 chgrp;修改文件的所属者的命令是chown,当然这个命令也能修改文件的所属组。两个命令都有一个选项R,其表示将目录下的文件也顺带着更改所属者或所属组。

# chgrp  [-R]  newGroupName   filename
# 比如将testDir目录(含目录内的内容)都给与avenger组
chgrp -R  avenger    testDir# chown  [-R]  newUserName:newGroupName   filename
# 当然:也可以替换为 .  也行,但是针对有些用户名带.的就会出bug,
# 事实上 .号的用途是单独来更改文件的所属组的# 将demo.file 的所属者更换为ironman
chown  ironman    demo.file# 将demo.file 的所属者更换为ironman,所属组更换为avenger
chown  ironman:avenger    demo.file
# 或
chown  ironman.avenger    demo.file# 将demo.file 的所属组更换为avenger
chown  .avenger    demo.file

chgrp案例

chown案例

修改所属者

修改所属者和所属组

修改所属组

  其实chownchgrp这两个命令是用来变更文件的拥有权,比如root将一个文件拷给普通用户ironman时,为了能让ironman能够访问,那么就会文件的所属者。

1.4修改UGO权限

  想象一下,如果你想让你的文件能够被其他人访问,但是你又不想把文件的所有权给别人,显然chownchgrp这两个命令就不再适合了。这里有一个命令chmod就能满足上述需求。

  chmod命令有两种形式,一种形式是数字型,一种形式是字符型。它有一个重要的选项是R,当然它的含义和chown和chgrp的R选项含义是一样的,这里就不在赘述。

1.数字型

r,w,x对应的数字如下:

r w x
4 2 1

U,G,O分别对应一组 rwx 。 以下面的为例,最开始的demo.file文件的UGO权限为rw-r–r--.对应4+2,4,4也就是644.假设我现在想让该文件能让G和O也能写,那么权限就要设置为rw-rw-rw-,也就是4+2,4+2,4+2,那么做法就是chmod 666 demo.file即可。

2.字符型

  字符型当然更加直观,而且可以只针对U或是G或是O来修改权限。下面的图来自于鸟哥的私房菜,

其中a代表所有人,像刚才的例子(让其他人也能有写的权限),我们就可以用如下的方法

注意g+x,o+w之间不要有空格哦!

2.预设权限和隐藏属性和特殊权限

2.1预设权限

  在创建文件的时候,你会发现有如下这种清况,root用户创建的文件一般是rw-r–r--,目录一般是rwxr-xr-x,

而普通用户创建的文件一般是rw-r–r--,目录一般是rwxr-xr-x。

root用户

普通用户

那么我们该如何查看默认的文件权限呢?

采用umask指令就能查看默认的文件权限:

普通用户:

第一种展示是4位数字,第一位数字与特殊权限有关,这里暂时不管,剩下的数字是002。那么怎么换算文件的默认权限呢?

针对目录,总的权限是rwxrwxrwx,002对应UGO的-------w-,意思是拿掉O的w权限,所以目录的默认床架权限是rwxrwxr-x,即755.针对文件,由于默认没有x权限(处于安全考虑),总的权限是rw-rw-rw-,这里拿掉O的w权限就是rw-rw-r–,即664。

现在问题是,假如umask的值是777,即rwxrwxrwx,那么针对文件来说,它是rw-rw-rw-,根本没有x,这怎么算?其实,这里该这样理解,针对任何的文件或是目录,所谓umask值,就是将它们的对应权限拿掉,没有就不拿就可以了。这里算出来的文件的创建默认权限是---------,即000。当然,从另一个方面也揭示了一个东西:由于文件的创建默认没有x权限,所以仅仅从刚刚创建的文件的UGO,是无法推断出umask值的

如下:

所以仅从刚创建的文件是不能来推算uamsk值的。

第二种是从符号来展现文件的默认创建权限的,当然,如果是普通的文件而不是目录,就默认去除掉x权限。

进一步,可以如下总结:

2.2隐藏属性

  这里的隐藏属性,指的是其实文件也有一些隐藏的属性,通过lsattr可以查看文件的隐藏属性,通过chattr可以修改文件的默认属性。

  chattr 最常见的选项是i和a,i表示该文件的内容不能有任何变化,该文件无法删除等等,就算是root也无法删除,当然这个命令也只能由root进行设定。除此以外,a表示文件内容只能追加,但是也不能删除,这对于日志等文件就是极好的。

下面展示给文件添加i属性发现即使root也无法删除:

给文件取消掉i属性

2.3特殊权限(待补充)

3.ACL访问控制列表

  UGO只能针对三类用户,即User,Group,Others,但是这并不能满足实际的情况,所以有一个命令setacl可以来设置文件针对更多用户的权限。getacl可以查看文件的ACL访问控制列表。简单来说,这玩意儿就是UGO的进阶版。

下面的图来自鸟哥的Linux私房菜。

3.1针对特殊用户和组设置ACL

  其实用户和组差不多,下面展示两个例子即可:

给用户batman添加rw权限

1.假如ll发现有个+号,这说明这个文件设置了ACL,而且你会发现G莫名其妙多了个w权限。所以,针对设置过ACL的文件,真正的权限不能只看它的UGO,而是通过getfacl来查看

2.针对用户batman设置单独的文件读取权限。

给avenger小组添加rw权限

当然这个命令完全可以当做chmod来使用,

比如 设置用户的权限为rwx

1并没有出现+号,说明这个指令完全可以替代触chmod,因为它的设置效果完全和chmod是一样的,

2表示给用户的权限设置为rwx

3.2设置权限最大范围

   通过m参数可以设置文件权限的最大范围,也就是说即使setfacl针对特殊用户或是小组设置了权限,但是该权限必须是在m参数的设置范围之下,看下面例子就知道了。

假设要求文件的最大范围只能是rw:

从上面的例子至少可以看出如下几点:

  1. 设置权限最大范围只能针对特殊的用户和小组有效。
  2. 如果后来又新增了设置,那么之前最大的设置范围为无效。

3.3使目录的文件也保持ACL

当然,加个选项-R就够了

但是如果我想该目录下新创建的文件也能用户batman rwx属性呢?

这就需要 -d 选项 ,这个选项只针对目录。

下面两种方式都可有,为了方便验证,我又创建了一个和dir同目录的dirb目录,也赋予特殊用户batman rwx权限

给dirb设置batman rwx权限:

给dirb目录设置未来权限:

注意,那个effective ,完全是因为普通文件就不预设x权限的原因,和设置权限最大范围一点关系也没有。这个setfacl -d -m u:batman:rwx的效果就是让该目录以后创建的文件都有如上图default的属性。

另一种方式:

setfacl -m d:u:batman:rwx  dirb

3.4取消ACL

  下面三个小节都是在如下的基础上,进行操作的:

3.4.1取消预设的ACL

  针对上一节 -d 设置的未来默认创建权限,可以用 -k 来取消

3.4.2取消部分ACL

  这里指的部分ACL,不包含预设的权限,所用到的参数 是 -x

3.4.3取消所有ACL

4.总结

  一般情况下,文件针对三类用户UGO,文件权限为rwx,rwx针对文件和目录的含义是不一样的。chgrpchown可以修改文件的所有权,chmod可以修改文件的rwx。
  文件有默认权限,通过umask可以查看和修改默认权限,注意,mask值可以推断文件和目录的默认创建权限,但是新创建的文件不能推断mask值,因为不管怎么设置mask值,文件的创建总没有x权限的。文件也有隐藏的属性,这个可以通过chattrlsattr来修改和查看,最常见的参数就是i和a。
  当UGO满足不了需求时,可以采用ACL来解决。采用ACL可以针对特定的用户和组设置权限(-m),也可以给目录的未来文件设置预设权限(-m 和 d),当然还可以设置最大权限(-m 和 m)。当然,有设置就有取消。取消预设权限用 -k ,取消部分ACL用-x ,取消所有权限用-b。
  这部分的知识比较多,忘记很正常,需要的时候重新查阅即可,笔记的重要性就是为了快速复现。

【Linux基础】文件权限(待补充)相关推荐

  1. 鸟哥的Linux私房菜(基础篇)- 第六章、Linux 的文件权限与目录配置

    第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要 ...

  2. linux修改文件权限的命令_Linux基础文件权限管理

    图片来源:pexels.com 你好,我是goldsunC 让我们一起进步吧! Linux文件属性 文件权限在Linux基础中是一个很重要的概念,一个系统管理员应该熟练掌握文件权限的概念.OK,现在我 ...

  3. linux基础学习——linux的文件权限和目录配置

    linux基础学习--linux的文件权限和目录配置 1.用户和用户组和其他人概念: 三个概念的前提宗旨:linux是一个多人多任务的系统环境.如果不对文件作出一个权限限制的话.任何人都能操作这份文件 ...

  4. Linux 的文件权限与目录配置

    第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 3. Linux目录配置 3.1 Linux目录配置的依据--FHS:/,/usr, /var 3.2 目录树(direct ...

  5. linux中文件权限 组,linux中文件权限格式与chmod命令以及用户和用户组的管理

    简单了解一下linux中的文件权限格式与chmod命令 chmod命令:改变文件或者目录的权限 格式:chmod [参数] [] -R 或者--recursive 递归处理,表示将指定目录下的所有文件 ...

  6. Linux之文件权限命令

    Linux之文件权限命令 1. chmod命令的介绍 命令 说明 chmod 修改文件权限 chmod修改文件权限有两种方式: 字母法 数字法 2. chmod 字母法的使用 角色说明: 角色 说明 ...

  7. linux两种方式改变文件权限,Linux更改文件权限的两种方式

    今天小编要跟大家分享一篇关于Linux更改文件权限的方式,喜欢Linux的小伙伴来看一看吧. 我们知道·Linux系统最主要的特点之一就是--Linux系统是多用户.多任务的操作系统. 何为多用户?就 ...

  8. linux用数字方式显示文件权限,全面解析Linux数字文件权限

    在刚开始接触Linux时对于文件权限的理解并不是很透彻,这里详细介绍一下数字文件权限和字母文件权限的对应关系,以帮助Linux入门初学者尽快的完成对文件权限的理解,尽快学习Linux系统更深层次内容. ...

  9. linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...

    一个初级的linux后门制作方法 众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件.所以我们只需要将bash复制出来 ...

  10. linux文件目录含义,Linux中文件权限目录权限的意义及权限对文件目录的意义

    linux中目录与文件权限的意义 一.文件权限的意义 r:可以读这个文件的具体内容: w:可以编辑这个文件的内容,包括增加删除文件的具体内容: x:文件就具有了可执行的权限-------注意:这里和w ...

最新文章

  1. 服务器架设笔记——多模块和全局数据
  2. jQuery中的页面载入($()、ready(fn)、onload)
  3. 【OCR技术系列之二】文字定位于切割
  4. python好多模块和c相识_快速实现python c扩展模块
  5. 遗传算法求解背包问题
  6. 胖子脸:库珀·布莱克100年
  7. java join yield_Java多线程中join、yield、sleep方法详解
  8. linux中更改用户密码_如何在Linux中更改用户密码
  9. 排序算法专题-归并排序
  10. IE11离线安装总是提示“获取更新”的解决方法
  11. 【PS | 学习】毛坯乡间图打造复古美式电影海报图
  12. Android Studio欢迎界面和登陆界面的设计(小白)
  13. Wrong namespace. Expected 'com.example.springboot.mapper.DepartmentMapper' but found 'com.sandystar.
  14. spring aop记录操作日志和错误日志
  15. iOS组件化:从零开始搭设私有库
  16. HDU4565 So Easy! (矩阵)
  17. 基带集成或独立?市售主流4G手机芯片浅析
  18. Phpcms黄页yp如何添加企业模板
  19. 大前端时代的乱流:带你了解最全面的 Flutter Web
  20. 关于认知力的学习总结

热门文章

  1. Getting Started with ARI(ARI入门)
  2. 我们成为什么样的人,是由自己的选择决定的---Leo读 不是孙振耀写的职场感言 大结局 7
  3. linux vi或者vim编辑器中如何显示行号
  4. JS IE11 Script5 拒绝访问 跨域
  5. ciscn_2019_c_1
  6. 各大互联网公司校园招聘笔试面试题
  7. if条件句和switch条件句
  8. 解决Required XXX parameter ‘XXX‘ is not present问题
  9. gRPC是什么,怎么用
  10. 2021年度国家科技奖进入申报期,这几个问题需要重点关注!