• Linux文件权限


    在这里插入图片描述

    一,对shell外壳的理解

    1,对shell外壳的理解

    shell外壳是包裹在linux内核(kernal)外的一层软件层,就像linux操作系统内核的一个外壳一样,故成为shell外壳。但是我们一般的用户不能直接使用kernal,而是通过shell外壳建立起与kernal的交流。
    shell对于linux操作系统就像GUI(图形化界面)对windows系统,我们在使用windows操作系统的机器时,并不是直接对Windows操作系统内核直接操作,而是通过图形化界面建立起用户与操作系统之间的联系。
    shell对于Linux系统的作用就是,把我们用户输入的命令行操作进行解析,解析后传给linux内核,将运行的结果返回给用户。
    在这里插入图片描述

    用户与操作系统的沟通实际上是像下图这样进行的
    在这里插入图片描述

    举一个非常形象的例子:
    shell外壳就像我们生活中的媒婆一样,比如你是一个内敛闷骚的程序员,你喜欢上了一个女孩叫如花,但是你不敢去和如花去表达爱意,这时你就请了一个媒婆替去给如花提亲,所有的事都是你和媒婆之间交流,你的各种想法都是媒婆替你转达给如花的,如花对你的各种看法也是通过媒婆来回答你的。

    2,shell外壳的作用

    1,对用户的指令进行解析,将解析的命令传给Linux操作系统,然后将运行的结果返回给用户。
    2,是对Linux内核的一种保护。
    这个很好理解:
    shell不会把用户的任何指令都会传达给Linux操作系统,比如一些对操作系统不友好的指令,就像媒婆也不会把你某种不利于女方的要求传达给女方一样。

    3,shell与bash的关系

    shell是对linux操作系统内核的外部程序的总称,而就像bash这种是Centos下的一种外壳程序。
    换句话说,媒婆是对成各行业的称呼,而王婆,李婆是具体的一个媒婆,与bash相同。

    二,文件的权限

    1,如何理解权限

    首先,权限是用来限制用户的某些行为。在Linux操作系统下,用户分为两种一种是超级用户:root,它不受权限的控制。另一种,就是普通用户,权限限制的就是这些用户,与现实生活类似,权限都是用来限制普通人的。
    权限=人+事物属性
    所谓的人就是指的用户,在Linux系统下,就拿普通文件来说,具有读写执行的属性,但是对不同的角色,权限也是不同的。
    所以,同一个用户在对一个文件处于不同的身份时,所具有的权限也是不同的。

    2,如何查看文件的权限

    ls -l 命令就可以展示出文件的详细信息,包括文件的权限在内
    在这里插入图片描述
    在这里插入图片描述

    3,文件都有哪些权限

    在这里插入图片描述

    前十列中的后九列,三三一组,分别代表的是拥有者,所属组,other拥有的权限
    r是读权限
    w是写权限
    x是执行权限
    拿test.c这个文件来说,对于拥有者和所属组都具有读和写的权限而没有执行的权限,对于other来说,只有读权限。
    在这里插入图片描述
    “我”现在是guoye是test.c文件的拥有者,可以查看文件的内容。

    4,角色的划分

    对与一个文件来说,将用户划分为三个角色,分别是拥有者,所属组,和other
    拥有者就不用多说了,就是文件的拥有者,谁创建的谁就是拥有者
    这里重点讲一下所属组的概念:
    下面举个例子
    现在好多大的互联网公司,业内有一个制度,就是多组人员干相同的工作,这种赛马制度。
    小明和小红是今年公司招来的实习生,被分配到了不同的组,但是干的工作是一样的
    在这里插入图片描述

    公司的领导呢,创建了两个目录,一个作为A组的工作目录,一个作为B组的工作目录,
    有一天呢,小明完成了他负责板块的工作,他组内的另一个员工阿U想看看他的代码,但是小明的文件给other设置的权限为不可读不可写不能执行,阿U对于这个文件是other不具有读的权限,这时呢,小名就把阿U及其他组员作为文件的所属组,此时不仅小明可以读自己的代码,所属组的阿U也可以读小明的代码。
    所谓的other,就是拥有者和所属组之外的用户。

    5,权限操作

    在这里插入图片描述
    权限=人+事物属性
    首先,文件的拥有者可以对文件的属性进行修改
    也可以对文件的拥有者和所属组进行修改

    (1)修改文件属性

    chmod u/g/o ±rwx 可以对文件的属性进行修改,前提那得是文件的拥有者,或者是root
    在这里插入图片描述
    例如:对于test.c文件给other添加w权限 chmod o+w test.c
    在这里插入图片描述
    也可以同时对拥有者所属组和other进行修改
    例如:给拥有者 所属组 和other 都加上 x可执行的权限
    chmod u+x,g+x,o+x 或者 chmod a+x (a是all的意思,u是user,g是group)
    在这里插入图片描述
    对于r w x 如果有某种权限就是1,没有就是0
    所以当某种角色有rwx权限时,就是 111 转化成八进制就是7
    某种角色有rw权限是,就是110转化成八进制就是6
    注: r w x的位置是固定的
    也可以这样来改文件的属性:
    chmod 000 test,c 意思就是,无论是拥有者还是所属组还是other都不具有rwx中任意一个权限
    在这里插入图片描述
    像 000这样表示文件的属性,也叫做权限的八进制表示法

    (2)修改文件的拥有者所属组

    修改文件的拥有者和所属组,即使你是文件的拥有者也是不可以的。
    例如:你要给别人某样东西,别人可能会要,也可能不会要,要得到别人的允许你才可以把东西给别人,所以我要改变文件的拥有者,所属组即使我是文件的拥有者也不可以,
    但是root可以,因为root是超级管理员不受任何约束。
    所以,这里不得不提一个指令 su
    在此bash下切换用户的身份,从普通用户切换到root,但需要输入root的密码。(ctrl+d退出)
    chown XXX test.c 修改文件的拥有者
    chgrp XXX test.c 修改文件的所属组
    在这里插入图片描述
    chown XXX:XXX test.c 将文件的拥有者和所属组都改为XXX
    在这里插入图片描述
    注意:所有的更改文件的所属组,拥有者都是在切换到root身份下进行修改的,
    或是sudo提权某项指令

    三,目录权限

    1,目录各种权限代表什么

    在这里插入图片描述

    对于普通文件来说 r就是读 w就是写 x就是执行文件,但是rwx对于一个目录来说分别是代表什么呢?
    x :如果没有x权限那么就不能够进入到该目录内
    在这里插入图片描述
    r:没有r权限就不能列出该目录下的文件名和文件属性
    在这里插入图片描述
    w:没有w权限就不能在该目录下创建文件或删除文件
    在这里插入图片描述

    2,粘滞位

    讲到粘滞位,首先要讲述一种工作环境,root用户为一个小组创建了一个共享目录,为了是所有人都可以在此目录下可以创建自己的文件进行工作,但是会出现一种情况就是可能会不小心删掉了别人创建的文件,因为创建的共享目录下 other是具有w权限的为了每个人都能创建文件,如果为了防止误删别人的文件而把w权限去掉,那么同样也不可以在共享目录下创建文件,所以就诞生了粘滞位这个概念。
    chmod +t public 为共享目录添加粘滞位
    粘滞位的出现就解决了这个问题,每个人都可以在共享目录下创建文件,同时也不能删除别人的文件。
    在这里插入图片描述
    在这里插入图片描述

    四,权限掩码-umask

    1,权限掩码与默认权限的关系

    无论我们创建文件还是目录,似乎创建完成后文件就具有默认的权限,例如普通用户创建的目录默认权限是775 文件是664 ,这些默认权限就是我们最终看到的权限也就是最终权限,起始操作系统赋予的起始权限是777和666(不是所有的文件都能执行)
    我们看到的最终权限是从起始权限中去掉了umask掩码中带有的权限。
    在这里插入图片描述
    我们主要看后三位002 其中 2代表other拥有w权限,所以我们的最终权限要从起始权限中去除掉这个权限,并且不能影响其他权限。
    用公式表达就是:最终权限=起始权限&(~umask)

    3,修改权限掩码

    umask掩码同样可以被修改
    在这里插入图片描述
    将掩码修改为007后,新创建的文件默认权限就变为了660

  • 相关阅读:
    【C++】stack和queue
    网络工程师笔记——SSL、 HTTPS
    智安网络|提升企业网络安全:避免成为勒索软件攻击的目标
    解决本地jar包导入maven
    VUE面试题
    Google Play 搜索不到应用
    git 指令大全从基本开始复盘
    Css 将div设置透明度,并向上移50px,盖住上面的元素一部分
    深入探究for...range语句
    记录一个出现多次的小BUG:用串口读的数据,只能有一次赋值
  • 原文地址:https://blog.csdn.net/Djsnxbjans/article/details/128134934