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

相关推荐
Spring-wind1 小时前
【linux】kill命令
linux
dreamer2921 小时前
21、Tomato
linux·安全·web安全·网络安全·系统安全
Data 3172 小时前
Shell脚本编程基础(二)
大数据·linux·运维·数据仓库·sql·centos·bash
it技术分享just_free3 小时前
基于 K8S kubernetes 的常见日志收集方案
linux·运维·docker·云原生·容器·kubernetes·k8s
bmseven3 小时前
windows远程桌面连接ubuntu
linux·windows·ubuntu
aidroid3 小时前
git github仓库管理
linux·运维·docker
三朝看客4 小时前
k8s自动清理pod脚本分享
linux·docker
奇点 ♡5 小时前
【线程】线程的控制
linux·运维·c语言·开发语言·c++·visual studio code
学习3人组5 小时前
CentOS安装Hadoop系列
linux·hadoop·centos
Length-vision6 小时前
Linux入门学习:Linux调试器gdb使用
linux·学习