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中文件和目录权限的总结。感谢支持!!!

相关推荐
古希腊数通小白(ip在学)4 分钟前
HCIA实现不同vlan间的通信
linux·服务器·网络
半桔18 分钟前
【Linux手册】从接口到管理:Linux文件系统的核心操作指南
android·java·linux·开发语言·面试·系统架构
禁默26 分钟前
Linux Vim 编辑器详解:从入门到进阶(含图示+插件推荐)
linux·vim·excel
许白掰2 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
longze_76 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs6 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue116 小时前
ubuntu 操作记录
linux
AmosTian9 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
这我可不懂11 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇12 小时前
java idea 本地debug linux服务
java·linux·intellij-idea