• rhcsa学习3 文件


    文件系统权限

    有三种权限类别可应用:读取、写入和执行

    查看文件和目录的权限及所有权

     ls -l 显示有关权限和所有权的详细信息

     长列表的第一个字符表示文件类型

    - 表示常规文件、d 目录、l 软链接、其它字符代表硬件设备(b和c)或其他具有特殊用途的文件(p和s)

    接下来的九个字符式文件权限。它们分为三组、每组三个字符分别对应:拥有该文件的用户权限、拥有该文件的组的权限、其他所有用户的权限。如果组中显示rwx,说明该类别具有读取、写入和执行三种权限。如果其中一个字母被替换为-,则表示该类别没有这个权限。

    权限之后式链接数,链接数之后,第一个名称表示拥有该文件的用户,第二个名称表示拥有该文件的组。

     如上我们要注意:

    a、用户database可以删除lfile1和lfile2两个文件,因为database1对包含这两个文件的目录具有写入权限( 如图. 的所有用户为database1)

    b、用户database1是组consultant1的成员,该组对lfile2的权限为r--(可读),而lfile2的其他用户的权限为(rw-),database1是其他用户,但却只有读取权限,因为组权限具有优先权,即便其他用户具有写入权限

    从命令行管理文件系统权限、

    更改文件和目录权限

    a、通过符号法更改权限

    如下:

    其他用户权限+x ,变成

     可以发现文件颜色变成绿色,(只要该文件具有x(u、g、o都可),这个可执行文件的权限,就会变成绿色,代表可执行文件

    虽然目录的操作也是类似的,的那要注意的是目录下面还有文件的话,如果像上面一样操作则只会修改目录本身的权限,里面的文件则不受影响,如下:

    而修改目录权限后,该目录下的文件权限没有任何变化(和上上图比较):

     所以再修改目录权限时,加上-R属性递归,将该目录下的文件的权限都可以修改(后面修改用户、用户组也是同样)

    如上用户组的权限加上了可写。

     也可多个一起操作

     其中- + 也可用=替代

     但是一次只能操作一组权限,如果用a则时三组一样的权限

     发现不用写满(a=-w-)都可以

    通过数值法更改权限

    #代表一个数字,权限有三组所以优三个数字分别对应三组权限,没组权限的值由三种权限代表的数值相加得到

    三种权限代表数值: r 为4,w为2,x为1(其中-为0)

    如:rwx代表4+2+1=6

    what目录的权限中,该三组权限分别计算(u :4+2+1=7、g:0+2+1=3、o:0+0+1=1)

    所以该目录的权限表示为731

    用数值设置权限:

     发现how变成绿色底,(只要其他用户权限中有w则会)

     更改文件和目录用户或组所有权(用chown命令)

    我们知道新创建的文件由创建该文件的用户所有。默认情况下,新文件的组的所有权为创建该文件的主要用户组。

    修改文件所有权  chown  修改后的用户名  文件名

     如果是文件直接可以这样修改,但是如果是目录这样修改后其子文件则不会有变化:

     要加上-R选项,才可以将子文件与目录的修改同步

    用冒号分隔达到同时修改用户组和用户

    (补充,也可用. 分隔,但是不建议,因为如果存在同名的带.的用户名,则无法达到同时修改的效果)而且如果不想修改所属用户,可以只是:或.  再加修改后的组名

    当然也可单独修改用户组(用chgrp命令)

    管理默认权限和文件访问

    特殊权限(构成了除了基本用户、组和其他类型之外的第四种权限类型)

     (注意:s和t建立在已有x执行权限的基础上,如果有这两种权限却没有x则会在相应位置变成S和T

    关于u+s

    例如先查看passwd命令的绝对路径,再查看其所属文件的权限,不难发现原本再所属用户权限中x的位置变成了s,如果没有这个s,变成S或x会怎样呢?

     我们可以发现当没有s权限时,我们在普通用户去修改密码,即使输入正确,也无法操作成功,因为我们不是当前用户自己去修改,而是拥有该文件所有的root用户去执行修改。所以当我们没有s,则无法调用让root用户修改。

    另一方面,当我们用passwd命令时,需要将密码写入/etc/passwd文件,上图我们可以看到,我们是没有权限去读取修改的,所以也可以知道只有root用户可以去执行。

     如果时S也是可以的

    关于g+s

    当我们对目录的所有组添加s权限时,如果对目录的拥有组进行了修改,则后面新建的内容也会同步。

     修改:

     我们可以发现新建的文件的拥有组同步成student,且新创建的目录会继承当前目录的属性(权限、拥有人、拥有组都相同)

    该权限对新建的文件的影响:如果要用命令去操作该文件,则不是以运行命令的用户身份运行,而是以拥有该文件的组运行

    o+t

    表示只有文件所有者及root才能删除该目录文件

    当what目录下的情况如下时,

     发现只有student和root用户可以删除what目录下的所有文件

    而除二者以外的用户去删除里面非所有用户的文件时,则无法删除。

     

    当我们去设置特殊权限时,除了字符表示(u+s、g+s、o+t)等,也可以曹勇数值表示,分别对应4、2、1。而且时位于最前面的数字

    如图s表示4,放在三组权限数值的最前面即可表示

    默认文件权限

    创建新文件或目录时,会为其分配初始权限。有两个因素会影响这些初始权限(创建长规文件还是目录,当前的umask)

    创建新目录,一般分配0777。常规文件一般时0666.

    shell会话会设置一个umask,进一步限制初始设置的权限。例如:umask为0002可清除其他用户的写入位。0077清除创建文件的所有组和其他权限。

    不带参数运行umask命令将显示shellumask的当前值

     umask 数字 表示修改umask的值,以student用户为例:

    新创建的目录bag权限为0775( 初始0777-umask0002=0775)

    新创建的文件pen.txt权限为664(初始0666-umask0002=0664)

    当我们设置umask 为0004

    新建文件file1权限为662(0666-0004=0662)

    新建目录wen权限为773(0777-0004=0773)

    但是我们这种设置umask的方式时临时生效的。我们重启可能就又失效了。

    如图,重新登录后又时初始的0002 

    用户的默认umask由shell启动脚本设置。默认情况下,如果账户UID为200以上,并且用户名和主要组名相同,则会分配一个值为002的umask,否则umask为022

    该设置信息存在/etc/profile

     vim  /etc/profile查看

    大概在59行的位置 可以找到相关信息

    -gt 表示>       -lt  <         eq =          -gn 表示组名  -un表示用户名 

    (ge大于等于,le小于等于,ne不等于)

     

    按照上面的逻辑,root用户UID<199所以不满足该条件为0022

     如果要自己设置umask且达到一个永久的效果,则可以通过在/etc/profile.d的目录下创建一个脚本文件,文件名可自取,的那建议规范一点。shell启动该脚本来更改此设置。

    脚本内容按照上面逻辑

    vim /etc/profile.d/local-umask.sh

     保存后,要让该脚本可被执行,所以要设置一下权限

     要启动该脚本,则直接 写该路径即可

    之后我们来看此时root的umask,按照上图逻辑UID<199,umask为007,所以root应该为007。

    记得要重新登录root才可生效。

     我们可以发现,student用户也变了,为0022,说明我们设置成功,记得除了UID号还有一个条件是用户名=用户组名(所以看到即使UID>199也未必是0022)

  • 相关阅读:
    Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)
    南京邮电大学高级语言程序设计实验六(结构体与文件实验)
    使用java计算crc校验和
    利用OpenCV的函数imwrite()保存图像到硬盘
    10分钟完成微信JSAPI支付对接过程-JAVA后端接口
    qcustemplot使用opengl加速
    B. Two-gram
    【MM32F5270开发板试用】单片机也能玩神经网络-TinyMaix实测开源
    Visual Studio 2019 c#的winform开发,基本操作
    【quartz】从数据库中读取配置实现动态定时任务
  • 原文地址:https://blog.csdn.net/weixin_66196728/article/details/131524400