Linux 下的权限与 ACM

来源:互联网 发布:淘宝退款卖家一直拒绝 编辑:程序博客网 时间:2024/06/06 03:31

首先,我们要明确在Linux下的一个概念:一切皆文件;

那么Linux下的文件类型有什么呢?
1.普通文件类型 [-]开头
2.目录类型 [d]开头
3.连接文件 第一个字符为[ l ]
4、设备和设备文件
块设备文件,即一些存储文件,如硬盘、软盘等,第一个字符为[ b ]
字符设备文件,即一些串行端口的接口文件,如键盘、鼠标等,第一个字符为[ c ]
5、套接字 第一个字符为[ s ]
还被称为数据接口文件,这种类型的文件通常被用在网络上的数
据连接。我们可以启动一个程序来监听客户端的请求,而客户端就
可以通过数据接口文件来进行数据通信。
6.管道 第一个字符为[p]

那么现在我们来谈一谈什么是权限
权限:顾名思义,指的是一个事物能够干什么,或者能够被怎么样
那么Linux下的文件权限是怎么安排的呢,我们一起来看一看:
这里写图片描述
如图所示,提到了几个名词,我先来解释一下:
1.文件拥有者 : user 也就是文件的直系主人
2.文件所属组 :group 文件被共享的用户群体
3.其他: other 除了上面的以外其他的用户
4.所在用户: 也就是文件的所属地

在这里我们还要再引入三个概念:
1.可读: read
2.可写: write
3.可执行 : x
那我们可以看到无论是文件拥有者,文件所属组还是其他都有这三个特性,很明显可以看到对于名为dir这个目录来说,文件拥有者具有对他读写执行的权限,文件所属组对他具有读写执行的权限,其他用户对他只有读和执行的权限;同理其他三个文件我们也可以理解了。

那这里引入这个的概念是为了什么呢?
因为我们有些文件创建之后有些权限我们想要修改,所以就要理解他的构成结构,下来我们谈谈如何来修改

chmod:这里提到两种修改格式
这里写图片描述

第二种方法再次声明一下:rwx 作为一个二进制序列 存在取1 不存在取0 那么总共有8种权限的构成 组成的8进制也就是从0-7

那么这里我们是不是可以想到创建各种文件的基础权限跟什么有关?
那让我们再看看吧
这里写图片描述
这里我们引入一个新的指令 umask 用来查询和改变 默认权限
首先我们可以看到输入umask Linux的默认权限为0002(默认权限跟机器有关系),第一个0抛开不看,002代表的就是拥有者,所属组,其他的权限,用8进制代替,其中普通文件的默认基础权限为666,目录文件的默认基础权限为777。
而系统默认权限我们可以理解为再做减法 666-002得到的是664 也就是110 110 100 ,图中我们也可以看到普通文件创建之后的权限就是110 110 100;777-002得到的是775 也就是111 111 101 ,同种我们也可以看到目录文件创建之后的权限就是111 111 101;
但其实这里不是真正的在做减法
比如普通文件的默认基础权限是666 也就是110 110 110 ,当我们将系统默认权限改成003的时候,我们会发现普通文件创建之后的权限还是110 110 100,这是因为做的不是数学意义上的减法。这样理解 ,普通文件的默认基础权限是是110 110 110 ,也就是对于三个“人”来说都是可读可写的,而003则是000 000 011,也就是对于其他用户是可写可执行的,但是110 110 110 中是没有可执行的,所以在做减法的时候就是将文件默认基础权限中所有的权限减去,比如下面这样
这里写图片描述
将umask改为022(000 010 010),那么对于普通文件666(110 110 110),创建之后的普通文件的权限就应该是644(110 100 100),我们一看,果然如此。

下来我们看看ACM
1、M modify time:最后一次修改文件或目录的时间。
2、C change time :最后一次改变文件或目录(改变的是原数据即:属性)的时间。如:记录该文件的 inode 节点被修改的时间。touch 命令除了 -d 和 -t 选项外都会改变该时间。而且chmod,chown等命令也能改变该值。
3、A access time:最后一次访问文件或目录的时间
这里写图片描述

1、Access是指“访问时间”
对于文件来说,当我们用编辑器打开file,或使用cat more less grep sed 等等命令读取文件内容,以及使用file cp命令操作文件,或执行可执行文件时,Access时间会被更新,空文件也不例外。
对于目录来说,只进入目录不会更新其Access时间,但是通过ls查看目录内容时,Access时间就会更新。使用ls -lu查看文件时,会显示出来文件的Access时间。
2、Modify是指“更改时间”
当更改一个文件的内容时,此文件的modify时间记录会被更新。Modify时间更新时,Access和Change时间都会得到相应的更新。用ls -l看到的时间是文件的Modify时间
3、Change是指“改变时间”
主要是指文件的状态或属性的改变。对一个文件或目录进行mv chown chcgrp等操作后,change 时间会更新。ls -lc显示的是change time

0 0
原创粉丝点击