Linux:权限

个人主页 : 个人主页

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

文章目录


前言

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


一、Linux权限的管理

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

  • 文件和文件目录的拥有者:u--User
  • 文件和文件目录的所以者所在的组的用户:g--Group
  • 其它用户:o--Others

    如上图中test.c文件的拥有者是 liyun,所属组是 liyun(组长的名字),other就是处拥有者和所属组外的其它用户

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

要了解文件的事物属性,我们就要先简单的认识下图中各部分的含义。

在windows中文件已后缀区分文件类型,但在Linux文件类型与后缀无关(系统层面)

文件类型:

d:目录

-:普通文件

其中d目录的文件类型是d,test.c文件的类型是-

l:软链接(类似于windows的快捷方式)

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

p:管道文件

c:字符设备文件(列如屏幕等串口设备)

s:套接口文件

基本权限:

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

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

文件权限值的表示方式

  • 字符表示方法
  • 8进制数值表示方法

文件访问权限的相关设置

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

  • chmod
  • 功能:设置文件的访问权限
  • 格式:chmod 参数 权限 文件名
    常用选项:
    R:递归修改目录文件的权限
    先递归创建a1/a2/a3目录,这些目录的other都具有r(读)权限

    执行chmod -R o-r a1

chmod命令权限值的格式

用户表示符+ / - =权限字符

u:拥有者

g:所属组

o:other

a:所有用户

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予代号所表示的权限

三位八进制数字表示

依据下图:

如将test.c文件other的权限改为r--,其它权限不变。可以执行chmod 664 test.c(第一个6表示拥有者的权限,第二个6表示所属组的权限,第三个4表示other的权限)


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

普通用户不能更改文件的拥有者,我们需要使用root来更改文件的拥有者 或 sudo 执行chown。但sudo指令有需要执行该命令的用户在信任列表中。

所以这里我们以root身份来传递。

chown也可以同时修改文件的拥有者 与 所属组


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

与chown指令一样,我们以root身份来执行。


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

  • umask
  • 功能:查看或修改文件的掩码
    新建目录的默认权限是0777(八进制)
    新建文件的默认权限是0666
    但我们实际创建文件和目录的起始权限并不是0666(默认缺少x,普通文件不需要x)和0777,原因就在于创建文件和目录时还要受到umask的影响

    这里umask的值是0002,也就是对other去掉w权限。
    假设默认权限是mask,则实际创建出来的文件权限是:mask & (~umask)
  • 格式:umask 权限值
  • 将现有的存取权限减去权限掩码后(也就没有的权限并不会增加),即可产生建立文件时预设权限。root的默认掩码是0022,普通用户的掩码是0002

    这里我们暂时的将权限掩码设置为0005。也就是对other去掉r 和 x权限,那么创建文件时,other的默认权限因该是-w-,创建目录时,other的默认权限因该是-w-

权限对文件的影响

没有r权限,不能查看文件内容

没有w权限,不能往文件中写入内容

没有x权限,则文件不能被执行,执行结果取决于文件内容

目录的权限

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

粘滞位

根据我们对目录权限的理解,不难发现只要用户具有目录的w权限,用户就可以删除该目录下的文件,而不论用户是否具有这个文件的w权限。那么如果我们多个用户在一个共享目录下工作,如果别人删除了我创建的文件,那怎么办?这就有了粘滞位的概念。

当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能有root删除,该目录的所有者删除,该文件的拥有者删除。



总结

以上就是我对于Linux中文件和目录权限的总结。感谢支持!!!

相关推荐
夜听莺儿鸣10 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP11 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
向成科技12 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
Fcy64813 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
码农小韩13 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论
well061213 小时前
Linux粘滞位与Makefile机制深度解析
linux·运维·服务器
再写一行代码就下班13 小时前
linux sh脚本在windows修改导致无法使用解决方式
java·linux·centos
额额额对了14 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
子木HAPPY阳VIP14 小时前
Ubuntu 关闭防火墙操作步骤
linux·运维·ubuntu
王振超wzc14 小时前
嵌入式开发环境搭建--WM软件安装,Ubuntu操作系统安装
linux·运维·ubuntu