Linux:权限

在这里插入图片描述

个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》

文章目录

  • 前言
  • 一、Linux权限的管理
    • 文件访问者的分类(身份)
    • 文件类型和访问权限(事物属性)
    • 文件权限值的表示方式
    • 文件访问权限的相关设置
    • 权限对文件的影响
    • 目录的权限
    • 粘滞位
  • 总结


前言

本文是对Linux中文件和目录权限的总结。


一、Linux权限的管理

文件访问者的分类(身份)

  • 文件和文件目录的拥有者:u–User
  • 文件和文件目录的所以者所在的组的用户:g–Group
  • 其它用户:o–Others
    在这里插入图片描述
    如上图中test.c文件的拥有者是 liyun,所属组是 liyun(组长的名字),other就是处拥有者和所属组外的其它用户

文件类型和访问权限(事物属性)

要了解文件的事物属性,我们就要先简单的认识下图中各部分的含义。
Linux:权限_第1张图片
在windows中文件已后缀区分文件类型,但在Linux文件类型与后缀无关(系统层面)
文件类型:
d:目录
-:普通文件
Linux:权限_第2张图片
其中d目录的文件类型是d,test.c文件的类型是-
l:软链接(类似于windows的快捷方式)
Linux:权限_第3张图片

b:快设备文件(列如硬盘,光驱等)

p:管道文件

c:字符设备文件(列如屏幕等串口设备)
Linux:权限_第4张图片

s:套接口文件

基本权限:

  • 读(r / 4(八进制)):Read对文件而言,具有读取文件内容的权限;对目录而言,具有浏览该目录信息的权限
  • 写( w / 2):Wirte对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行( x / 1):Execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • " - " 表示不具有对应权限

Linux:权限_第5张图片
对于上图test.c文件而言,拥有者liyun拥有读写权限,不具有执行权限;所属组liyun拥有读写权限,不具有执行权限;other具有读权限,不具有写,执行权限。

文件权限值的表示方式

  • 字符表示方法

Linux:权限_第6张图片

  • 8进制数值表示方法
    Linux:权限_第7张图片

文件访问权限的相关设置

只有文件的所有者和root用户才能修改文件的权限

  • chmod
  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限 文件名
    常用选项:
    R:递归修改目录文件的权限
    先递归创建a1/a2/a3目录,这些目录的other都具有r(读)权限
    Linux:权限_第8张图片
    执行chmod -R o-r a1
    Linux:权限_第9张图片

chmod命令权限值的格式

用户表示符+ / - =权限字符
u:拥有者
g:所属组
o:other
a:所有用户
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予代号所表示的权限
Linux:权限_第10张图片

三位八进制数字表示
依据下图:Linux:权限_第11张图片
如将test.c文件other的权限改为r–,其它权限不变。可以执行chmod 664 test.c(第一个6表示拥有者的权限,第二个6表示所属组的权限,第三个4表示other的权限)
Linux:权限_第12张图片


  • chown
  • 功能:修改文件的拥有者
  • 格式:chown [参数] 用户名 文件名

普通用户不能更改文件的拥有者,我们需要使用root来更改文件的拥有者 或 sudo 执行chown。但sudo指令有需要执行该命令的用户在信任列表中。
Linux:权限_第13张图片
所以这里我们以root身份来传递。
Linux:权限_第14张图片
chown也可以同时修改文件的拥有者 与 所属组
Linux:权限_第15张图片


  • chgrp
  • 功能:修改文件或目录的所属组
  • 格式:chgrp [参数] 用户组名 文件名
  • 常用选项:-R 递归修改文件或目录的所属组

与chown指令一样,我们以root身份来执行。
Linux:权限_第16张图片


在介绍umask指令前,我们是否对于目录和文件的起始权限感到疑惑,为什么文件的起始权限为664,目录的权限为775,这就与掩码有关联。

  • umask
  • 功能:查看或修改文件的掩码
    新建目录的默认权限是0777(八进制)
    新建文件的默认权限是0666
    但我们实际创建文件和目录的起始权限并不是0666(默认缺少x,普通文件不需要x)和0777,原因就在于创建文件和目录时还要受到umask的影响
    在这里插入图片描述
    这里umask的值是0002,也就是对other去掉w权限。
    假设默认权限是mask,则实际创建出来的文件权限是:mask & (~umask)
  • 格式:umask 权限值
  • 将现有的存取权限减去权限掩码后(也就没有的权限并不会增加),即可产生建立文件时预设权限。root的默认掩码是0022,普通用户的掩码是0002
    Linux:权限_第17张图片
    这里我们暂时的将权限掩码设置为0005。也就是对other去掉r 和 x权限,那么创建文件时,other的默认权限因该是-w-,创建目录时,other的默认权限因该是-w-
    Linux:权限_第18张图片

权限对文件的影响

没有r权限,不能查看文件内容
Linux:权限_第19张图片
没有w权限,不能往文件中写入内容
Linux:权限_第20张图片
没有x权限,则文件不能被执行,执行结果取决于文件内容
Linux:权限_第21张图片

目录的权限

  • 可执行权限:如果目录没有可执行权限,则无法cd到目录中
    Linux:权限_第22张图片
  • 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录的内容
    Linux:权限_第23张图片
  • 可写权限:如果目录没有可写权限,则无法再目录中创建文件,也无法再目录中删除文件
    Linux:权限_第24张图片

粘滞位

根据我们对目录权限的理解,不难发现只要用户具有目录的w权限,用户就可以删除该目录下的文件,而不论用户是否具有这个文件的w权限。那么如果我们多个用户在一个共享目录下工作,如果别人删除了我创建的文件,那怎么办?这就有了粘滞位的概念。
当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能有root删除,该目录的所有者删除,该文件的拥有者删除。

Linux:权限_第25张图片
Linux:权限_第26张图片


总结

以上就是我对于Linux中文件和目录权限的总结。感谢支持!!!
在这里插入图片描述

你可能感兴趣的:(Linux,linux)