linux基础第2节(2)----配置与管理文件系统

4.管理linux文件权限

1.理解文件和文件权限。

  • 文件(file):是操作系统用来存储信息的基本结构,是一组信息的集合。文件名是唯一标识。与windows不同的有,在linux中,文件名称地后缀不能确定文件的种类。在linux中,文件名区分大小写。在linux中,如果文件名以"."开始,表示文件为隐藏文件,需要用"ls -a"命令才能显示
  • 权限:在linux中每一个文件或目录都包含访问权限,这些权限决定了谁能访问和如何访问这些文件和目录,通过设定权限可以从以下3种访问方式限制访问权限
  1. 只允许用户和自己访问,用字母U表示
  2. 允许一个预先指定的用户组种的用户访问,用字母G表示
  3. 允许系统种的任何用户访问,用字母O表示

    一个文件或目录可能有读(r),写(w)及执行权限(x)。当创建一个文件时,系统会自动赋予不同用户的权限。我们创建一个文件,通过"ls -l"查询

 可以看出,root用户有读写权限,组有可读权限,其他用户或组有可读权限

接下来我们刨析文件的详细信息

  • -rw- r-- r-- .  表示文件类型权限
  • 数字    表示连接数
  • 第一个root 表示文件用有人
  • 第二个root表示文件所属群组
  • 数字  表示文件容量
  • 15 11:25 表示文件最后被修改的时间
  • 1.txt 表示文件名称

2.详解文件的各种属性信息

①第一组为文件类型权限

 每一行的第一个字符一般用来区分文件的类型,一般取值d,-,l,b,c,s,p,具体含义是:

  • d:表示这是一个目录。
  • -:表示这个文件是一个普通的文件
  • l:表示该文件是一个符号链接文件,实际上它指向另一个文件
  • b,c:表示该文件为区块设备或其他的外围设别,是特殊类型的文件
  • s,p:这些文件关系到系统的数据结构和管道,通常很少见到

2~10字符表示文件的访问权限。九个字符,3个为一组,左边三个表示文件所有者权限,中间三个表示与所有者同一组的用户的权限,右边三个表示其他用户的权限。

  • r(read,读取):对文件而言,具有读取文件内容的权限;对目录而言,具有浏览目录的权限
  • w(write,写入):对文件而言,具有新增,修改文件内容的权限;对目录来说,具有删除,移动目录内文件的权限
  • x(excute,执行):对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
  • -:表示不具有该项权限

②第二组为有多少文件名连接到此节点(i-node)

       每个文件都会将其权限与属性记录到文件系统的i-node种。不过,我们使用的目录树却使用文件来记录,因此每个文件命都会连接到一个i-node。这个属性记录的就是有多少不同的文件名连接到相同的的一个i-node  

③第三组表示这个文件(或目录)的拥有者

④第四组表示这个文件(或目录)的所属群组

⑤第五组为这个文件的容量大小,默认是Bytes

⑥第六组为这个文件的创建日期或者最近的修改日期

⑦第七组为这个文件的文件名

3.使用数字表示法修改权限

修改权限的语法:chmod    [选项]    文件

所谓数字表示法就是将读取(r),写入(w)和执行(x)分别以数字4,2,1表示

 4.使用文字表示法修改权限

使用文件表示法时,系统用四种字母来表示不同的用户

u:user ,表示所有者

g:group,表示所属组

o:other ,表示其他用户

a:all,表示以上三种用户

使用3种字符的组合表示法设置操作权限

r:read,可读

w:write,写入

x:excute,执行

操作符号包括以下几种

+:添加某种权限

-:减去某种权限

=:赋予给定权限并取消原来的权限

 同时修改三种用户权限时,用逗号隔开

修改目录权限和修改文件权限相同,都是使用chmod命令,但不同的是,要使用通配符“*”来表示目录中所有文件

如果目录中包含子目录,则必须使用-R参数来同时设置所有文件 

5.修改文件与目录的默认权限和隐藏权限

1.理解文件预设权限:umask

umask指的就是用户在建立文件或目录时的默认权限值。

 用数字的方式显示umask,umask有四组数字,前面的第一个数字表示特殊权限

 以符号类型的方式显示权限

目录和文件的默认权限是不一样的,x权限对于目录非常重要的,但是一般文件不应该有执行的权限。所以一般情况下:

  • 若使用者建立文件:则预设没有可执行(x)权限,即只有rw这两个权限,也就是最大为666,预设权限为-rw- rw- rw-
  • 若使用者建立目录,则关于用户是否能进入目录,则一般具有x权限,因此所有权限都打开了,一般是777,预设权限drwxrwxrwx。

umask的分值就是该默认值需要减掉的权限。

根据虚拟机的umask值可知:此虚拟机新建一个文件的权限为-rwr--r--。新建一个目录的权限是drwxr-xr-x。

2.更改文件预设权限umask

编辑家目录下面的.bashrc隐藏文件

 在末尾添加一行umask 数字,保存退出

立即执行修改后的设置

 通过查询,发现umask已经修改成功了

3.设置文件隐藏属性

①chattr命令-----改变文件属性

语法:chattr [-RV] [-v<版本编号>][+/-/=<属性>][文件或目录]

这项指令可以改变存放在ext4文件系统上的文件或目录属性,这些属性共有以上几种模式

  • a:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件
  • b:不更新文件或目录的最后存取时间
  • c:将文件或目录压缩后存放
  • d:将文件或目录排除在操作之外
  •  i:不得任意改动文件或目录
  • s:保密性删除文件或目录
  • S:即时更新文件或目录
  • u:预防意外删除

chattr的相关参数如下,其中最重要的是+i与+a这两个属性。由于这些属性是隐藏,所以需要使用lsattr命令

-R :递归处理,将指定目录下的所有文件及子目录一并处理

-v<版本编号>:设置文件或目录版本

+<属性>:开启文件或目录的该项属性

-<属性>:关闭文件或目录的该项属性

=<属性>:指定文件或目录的该项属性

②lsattr命令-----显示文件隐藏属性

语法:lsattr [-adR] 文件或目录

-a:将隐藏文件的属性也显示出来

-d:如果是目录,仅列出目录本身的属性,而非目录内的文件名

-R:连同子目录的数据也一并列出来

 4.设置文件特殊权限:SUID,SGID,Sticky

SUID:<u+s>,数字表示4

  • 对文件的影响:以拥有文件的用户身份,而不是以运行文件的用户执行文件
  • 对目录无影响

SGID:<g+s>,数字表示2

  • 对于文件来说,sgid仅对二进制命令程序有效,执行命令的用户可以获得该程序执行期间所属组的权限,suid是拥有这个用户的权限
  • 对于目录来说(继承目录所属的组),Linux默认情况下用户创建文件,默认用户和组都是它自己,sgid可以让用户在此目录下创建的文件和目录,具有与此目录相同的用户组设置

Sticky:<o+t>,数字表示1

  • 对文件无影响
  • 对目录来说,具有写入访问权限的用户仅可以删除其所拥有的文件,而无法删除或强制保存其他用户所拥有的文件

6.修改文件/目录的所属关系

语法格式:

chown 文件/目录所属人:文件/目录所属组  文件/目录   //修改所属者和所属组

chown  :文件/目录所属组   文件/目录      //仅修改所属组

 chown  文件/目录所属者   文件/目录    //仅修改所属者

 

7.文件访问控制列表

        不知道大家注意到没?前面讲的一般权限,特殊权限和隐藏权限其实有一个共性--权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(Access Control List,ACL)。通俗来讲,基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。

   1.setfacl命令----用于管理文件的ACL规则

语法规则:

    setfacl     [参数]  文件名称

文件的ACL提供的是在所有者,所属组,其他人的读/写/执行权限之外的特殊权限控制,使用setfacl可以针对单一的用户或用户组,单一文件或目录来进行读/写/执行权限的控制

针对目录需要用-R参数;针对普通用户需要用-m参数;想要删除某个文件的ACL,可以使用-b参数。

以下我就用2021的红帽RHCSA考试原题为例,示范以下setfacl的用法:

题目:配置 /var/tmp/fstab 权限

将文件 /etc/fstab 复制到 /var/tmp/fstab 。

配置 /var/tmp/fstab 的权限以满足如下条件:

文件 /var/tmp/fstab 自 root 用户所有 

 文件 /var/tmp/fstab 属于组 root

文件 /var/tmp/fstab 应不能被任何人执行

用户 natasha 能够读取和写入 /var/tmp/fstab

用户 harry 无法写入或读取 /var/tmp/fstab

所有其他用户(当前或未来)能够读取 /var/tmp/fstab

2.getfacl命令-----用于显示文件上设置的ACL信息

语法格式为:getfacl     文件名称 

 

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值