Linux的权限管理和A C M time

来源:互联网 发布:华兴数控编程实例 编辑:程序博客网 时间:2024/06/05 04:01

Linux一切皆文件

Linux文件类型:

1、普通文件(regular file)第一个字符为[ - ]

2、目录(directory): 第一个字符为[ d ]

3、连接文件(link)第一个字符为[ l ]

4、设备和设备文件
块设备文件,即一些存储文件,如硬盘、软盘等,第一个字符为[ b ]
字符设备文件,即一些串行端口的接口文件,如键盘、鼠标等,第一个字符为[ c ]

5、套接字(sockets)第一个字符为[ s ]
还被称为数据接口文件,这种类型的文件通常被用在网络上的数
据连接。我们可以启动一个程序来监听客户端的请求,而客户端就
可以通过数据接口文件来进行数据通信。

6.管道(FIFO,pipe)第一个字符为[ p ]

Linux权限管理

说起权限,我们会想起:一件事情允许不允许被某个人做,允许,就是这个人有权限,不允许,那么就是没有这个权限。

也就是说,主要有两方面:人和属性。在Linux中也是这样的,我们就来看一下这两方面的内容。

1、文件访问者(人)

①、文件拥有者:u即——User
②、文件所属组:g即——Group
③、其他:o即——others

这里写图片描述

2、基本的权限

①、r:对文件而言,具有读文件的权限;对目录而言,具有浏览目录的权限
②、w:对文件而言,具有修改文件的权限;对目录而言,具有删除、移动目录的权限
③、x:execute对文件而言,具有执行文件的权限;对目录而言,具有进入目录的权限
④、“-”:表示不具有该权限

这里写图片描述

我们可以通过一些命令来修改权限,只需将用所修改谁的权限加或者减权限即可,不过,最简单的还是通过八进制的方式,没有对比就没有伤害,看:

这里写图片描述

如图所示:用红线画的是原来的权限,然后通过 chmod u+x file 来修改file的权限,就像蓝线画的,只能一步步来,很麻烦,而通过八进制来修改权限,只需将结果的权限的八进制形式写上去,一步到位。

那么问题来了,如果与一个目录已经存在,那么进入这个目录至少应该有什么权限,创建一个文件,并且能显示文件目录,又有什么权限?

这里写图片描述

我们先来创建一个目录:dir,然后将目录的所有权限都置成0,即无权限,然后再去进入目录,果然,进不去。我们上面说execute的时候提到:对目录而言,具有进入目录的权限,那么我们将其设置100,这样在去进入目录,发现,可以进去,然后再去touch一个文件,发现“permission denied”拒绝访问。

那么创建一个文件,并且能显示文件目录,又有什么权限?同样我们来试一试。

这里写图片描述

首先我们回到上一级将 dir 的权限加上写权限,在来touch一个文件,发现,可以创建文件,然后在 ls 看能不能显示出来,发现:拒绝访问,那么我们再回到上一级,吧读权限也加上,再来执行ls命令,我们发现可以显示了。

总结一下: 如果有一个存在的目录,当我们想进入目录的时候,那么至少需要的权限是 x ,当我们想要在目录中创建文件的时候,至少需要的权限是 w和x, 我们同时还想让其显示出来,那么还需要 r 权限。

A C M time

提到ACM我们会想到:ACM程序设计大赛。不过这里的ACM,都指的是时间。下面看一下他们的概念:

1、modify time:最后一次修改文件或目录的时间。

2、change time :最后一次改变文件或目录(改变的是原数据即:属性)的时间。如:记录该文件的 inode 节点被修改的时间。touch 命令除了 -d 和 -t 选项外都会改变该时间。而且chmod,chown等命令也能改变该值。

3、access time:最后一次访问文件或目录的时间

stat 文件名:当我们执行这样一条命令的时候,会出现:

这里写图片描述

那么,这三个时间的区别都是什么呢?

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

1 0