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)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘记578

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值