Linux安全优化之文件属性查看分析

1.如何查看及读取权限信息
首先先建立一个文件和目录

采用ls -l查看文件权限 不能用于查看目录权限 ls 默认查看的是目录当中子目录或者自文件的权限文件

 首先开头的横杠表示的文件类型 从第二位到第十位表示这个文件对于什么样的人能做什么样的事情 后面的这个点表示的是这个文件加载了安全上下文 1表示这个文件的内容被系统记录的次数 也就是这个文件硬链接的个数(hard link) 后面的两个root分别表示的是文件的拥有着个拥有组 0表示的是文件的大小 后面的时间戳表示的是文件最后一次被修改的时间 最 后一位表示文件的名称 这些信息被统称为元数据 也就是我们经常说到的属性

对于目录本身的权限我们要用到ls -ld这样就可以显示目录本身的权限

 第一位D 表示directory目录的类型 第二位到第十位表示这个目录对谁能什么事情 也就是目录本身的权限 小数点表示的是这个目录加载拉安全上下文 2表示目录当中子目录的个数 两个root表示目录的所有人和所有组 6表示是目录当中子目录或者子文件的元数据大小也就是我们说的属性大小 时间表示目录当中文件名被重命名属性被修改或者文件被删除 文件被建立后的时间 也就是目录当中文件的元数据被修改 这个时间就会改变 所以说 字符相当于文件内的内容 文件的元数据相当于目录里面的内容 文件的内容被改变那么 文件最后一次被更改的时间会改变 目录当中文件的属性被改变那么目录的最后一次被更改的时间才会变化 最后一位表示目录的名称

系统当中除了用ls查看文件的属性还可以用ll来查看文件的属性与ls的意思相同

目录的查看可以用ls -ld 也可以用ll -d来查看 相当于命令的别名 类似与自己的名字和小名

我们可以用alias来查看命令的别名

接下来详细的介绍文件每一个字段的意义

 首先第一位表示文件的类型 文件的类型有: - 表示系统当中的普通文件包括普通命令等等 没有系统功能的一个文件 统称为一杠 d 表示的是目录 s 表示套接字 l 表示的是链接 c 表示的是字符设备 b 表示的是块设备

例如我们创建一个文件 这个文件是空的 系统不用这个文件来做什么不是系统自动所调用的而是我们作为操作着使用程序来创建的


系统的命令也是普通文件 例如 虽然是一个命令但也表示普通文件

我们随便建立一个目录lee d表示directory

对于套接字
S 表示socket 套接字 我们 系统当中的程序默认是封闭的 例如ls 但我们不能进入程序内部去使用这个程序但是有很多程序时可以进去执行的 例如:数据库 可以进入程序当中去使用 (执行相应的命令 安装数据库看一下) 因为为这里没有安装提供查看的方法如下图

执行上面的命令可以看到以S开头的权限 而我们能进去数据库是因为这个程序开了一扇门 这扇门就像这个套接字 如果这个门不在了 就进不去 删除之后的效果如图

L 相当于我们的快捷方式 官方的名称叫做软链接 软链接:比如我们的mnt下由一个文件名字叫file 现在为在桌面上也想看到这个文件 可以把它链接到root用户下

这个文件就类似于一个快捷方式 文件类型以l开头

C 字符型设备
字符设备用于显示字符的设备 在系统当中的程序是有标准的输入和输出 命令存在内存空间里 例如date 当你输入命令再执行的过程中叫输入 回车以后会产生一系列字符 这些字符为什么会显示在桌面上是因为这些字符被定义到一个设备里 这个字符叫字符设备 如/dev/pts/0 文件类型以C开头

如果我想让他显示到命令行 可以 date > /dev/pts/0

B 块设备 位置在/dev目录当中 系统当中有sda 表示系统当中的第一块硬盘 当插入u盘之后就是第二块设备 以sdb的形式存在 块设备文件 ls -l 可以查看到 以b开头的 我们系统中用于管理存储的设备一般都是块设备 都是以B开头


在搞明白第一位权限之后 我们接着看第二位到第十位
从第二位到第十位 表示什么样的用户有什么权限被划分成三部分 第一部分表示用户的权力 第二部分表示用户组的权利 第三位表示其他人的权限 小数点表示这个文件是加载了安全上下文的 安全上下文的提供程序是由我们的系统当中的selinux提供的 简单的说selinux内核及的加强型火墙 在开启的时候会给我们每一个程序加载一个安全上下文 相当于佳在一个标签说明这个程序能访问什么样的类型的文件 并且会给每一个文件上价格加标签标上面写这个文件的类型是什么 这个标签叫selinux 我们可以用ls -Z查看文件有没有安全上下文 .标示加载过安全上下文

这个.有和没有的区别:先编辑文件关闭selinux 然后重启 selinux是内核级的插件 对于内核插件的开启和关闭需要对内核进行初始化也就是重启 重启后 查看之前建立的文件



之前加载的安全上下文还存在 但现在在建立文件 小数点没有.了

对比图

后面的1 表示这个文件的内容被系统记录了多少次也就是说这个文件里面的数据在系统中有多少个 我们可以编辑文件之后查看文件被记录了多少次

可以看到文件的记录次数并没有发生改变 接下来我们尝试改变这个次数 建立硬链接

建立硬链接之后 也就是说这两个文件一模一样 互为硬链接 也就是这个文件被系统记录了两次
当我们删除其中一个 再查看内容被记录了几次 数字又变成了1 再删除就变成了0 就彻底不存在了

后面的root root分别表示这个文件是超级用户root的和超级用户root这个组的 就想你买了个手机 属于你 也是你们家的

再后面一位的数字表示这个文件的大小 我们去编辑这个文件把内容删掉 就变成拉0个字节

再写入123加上后面的换行符 一共就是4个字节

在后面的时间表示文件被修改的时间我们对文件进行编辑 我们把123换成westos 发现文件的时间同步到了当前的时间 文件的内容被修改的时候这个时间才会改变 所以这个时间也被称为mtime 最后一位被称为文件名字

接下来是目录的属性代表什么样的意思

首先是目录的类型 权限 数字代表这个目录当中子目录的个数 ls -a 可以看见。 .一个点代表当前目录 两个点代表当前目录的上一个目录 它属于每个目录当中的一种应用的快捷方式 ls -l -a


可以看到他们都属于目录 现在touch 一个file 发现这个数字没有变化 文件不记录在这个数字之内

建立一个目录之后这个数字就会变成3

后面的root表示这个目录是谁的属于哪个组 28不是表示目录的大小 而是表示目录当中属性的大小 也就是目录里面记录的原数据的大小

例如 ls -ld /mnt/westos 记录的是28 ls -a /mnt/westos 我们新建一个文件touch 1
Ls -l 1 看见数字是1 文件的每一个字段要用一个字节来记录 文件的权限类型 一个字节 文件的权限第二个字节 。 安全上下文第3个字节 数字第4个字节 用户组第5 6字节 大小第7个字节 最后一次被更改的时间第八个字节 文件名称第九个字节 所有这个文件的属性哟共有九个 除去名称有8个 每个属性用一个字节来记录文件的名字十几个字节就是几个字节


按道理来说应该是28+8=36个字节 本来加上安全上下文应该是37个字节 但是之前关闭拉selinux 所以少了一个字节

再次touch11 发现数字变成拉 所以45并不表示目录本身 的大小 而表示这个目录当中记录的文件或者目录属性的大小

时间表示 文目录当中的文件或目录当中的子目录被修改过属性或被新建的时候会更改 例如我们把目录删掉看时间同步到了目前的时间

最后一位就表示目录的名字

 对于属性个字段的理解 对于文件属性字段的理解 对于目录属性字段的理解 1 类型 1 类型 2 文件权限 2 目录权限 3 selinux context 3 selinux context 4 文件硬链接个数 4 目录中的子目录个数 5 文件拥有者 5 目录拥有者 6 文件拥有组 6 目录拥有组 7 文件大小 7 目录中子文件或子目录原数据的大小 8 文件最后一次被修改的时间 8 目录中的内容最后一次被修改的时间 9 文件名称 9 目录名称