• Linux 权限


    💓博主个人主页:不是笨小孩👀
    ⏩专栏分类:数据结构与算法👀 C++👀 刷题专栏👀 C语言👀
    🚚代码仓库:笨小孩的代码库👀
    ⏩社区:不是笨小孩👀
    🌹欢迎大家三连关注,一起学习,一起进步!!💓

    权限

    • Linux权限管理
      • 文件访问者分类
      • 文件类型和访问权限
      • 文件权限的表示方法
      • 文件权限的修改
      • 目录的权限

    Linux下有两种用户:

    1. 超级用户(root)
      可以再linux系统下做任何事情,不受限制。
    2. 普通用户
      在linux下做有限的事情。

    超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

    su命令

    su [用户名]
    可以切换用户
    要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码。

    Linux权限管理

    在Linux下一切皆文件。权限一般是对谁,拥有怎样的约束。

    文件访问者分类

    1. 拥有者

    拥有我这个文件的人,一般来说是文件的创造者,但是可以更改。

    1. 所属组

    我们有一个文件,除了自己以外,还想让别人查看,但是不想让所有人查看,只想让自己限定的人查看,所以就有一个所属组的概念。

    1. other

    除了拥有者和所属组剩下的就是other了。

    文件类型和访问权限

    1. 文件类型

    d:文件夹
    -:普通文件
    l:软链接(类似Windows的快捷方式)
    b:块设备文件(例如硬盘、光驱等)
    p:管道文件
    c:字符设备文件(例如屏幕等串口设备)
    s:套接口文件

    Linux下文件的类型适合文件后缀没有关系的,我们加后缀是为了我们自己方便观察,虽然Linux不分文件后缀,但是有些工具是要区分的,比如gcc就不认识.txt后缀的文件,换成.c的就可以跑。

    1. 文件的权限
    1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
    2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
    3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
    4. “—”表示不具有该项权限。

    怎么看这文件类型和权限呢?
    我们可以输入ll指令
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    文件权限的表示方法

    1. 字符表示法
      在这里插入图片描述

    2. 八进制表示法

    在这里插入图片描述

    文件权限的修改

    修改文件的权限我们需要有到chmod指令

    1. 语法

    chmod [参数] 权限 文件名

    1. 功能

    设置文件的访问权限。

    1. 常用选项

    R -> 递归修改目录文件的权限
    只有文件的拥有者和root才可以改变文件的权限

    在这里插入图片描述
    在这里插入图片描述
    也可以使用八进制数字

    在这里插入图片描述

    chown指令

    可以修改文件的拥有者。

    在这里插入图片描述
    chgrp指令

    可以修改文件的所属组。

    在这里插入图片描述

    我们在创建一个文件时,是有默认权限的

    1. 对于目录来说,它的默认权限是777。
    2. 对于普通文件来说,它的默认权限是666。

    在这里插入图片描述

    但是从我们目前看到的结果来说好像并不是这样的,这是为什么呢?

    这是因为在创建文件或目录的时候还要受到umask(掩码)的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask。

    我们可以用umask指令来查看我们当前的掩码。
    在这里插入图片描述

    这是一个八进制数字,第一个0我们可以不用管,可以认为是八进制数字的前置。

    所以我们用 mask & ~umask这个公式算一下,就是上面的结果了。

    我们也可以用umask设置掩码。
    在这里插入图片描述

    我们将掩码设置为0,可以看到对于目录来说,它的默认权限是777。对于普通文件来说,它的默认权限是666。

    file指令

    可以查看文件的类型
    在这里插入图片描述

    我们也可以用sudo指令来提升指令的权限。

    sudo –u 用户名 命令

    如果不加用户名默认就是root。

    目录的权限

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

    也就是说,一个文件一定存在一个目录中,它能否被删除与它自己的权限没有关系,和它的父目录有关,就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。也就是我们常说的毁灭你与你无关。

    但是这也引发了很多问题,如果我们在同一目录下工作,凭什么你可以删除我创建的文件,这多少有点不太合理,因此Linux引入了一个新的权限:粘滞位。

    当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

    1. 超级管理员删除
    2. 该目录的所有者删除
    3. 该文件的所有者删除

    在这里插入图片描述

    总结:

    目录的可执行权限是表示你可否在目录下执行命令。
    如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
    而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

    那么今天的分享就到这里了,有什么不懂得可以私信博主,或者添加博主的微信,欢迎交流。

  • 相关阅读:
    Day06
    Java中String类型的hashCode实现
    谷歌收录工具有什么好用的?
    滴滴可观测平台 Metrics 指标实时计算如何实现了又准又省?
    时延检测利器-uftrace
    Android 9.0 framework中开机启动的过程中监听launcher是否启动完成的源码分析
    R语言ggplot2可视化:可视化多行文本内容并添加箭头、指定文本可视化内容右对齐(right alignment)
    openpose脚部标注问题梳理
    9.项目细节调整
    【Linux】生产者消费者模型
  • 原文地址:https://blog.csdn.net/bushibrnxiaohaij/article/details/133215338