您的位置:首页 > 运维架构 > Linux

Linux权限以及Stat命令中的Access、Modify、Change

2017-03-24 10:01 316 查看
    一 权限

Linux中的用户按级别分为普通用户和超级用户。所谓权限是针对普通用户而言的。

 
       文件的权限有:   读(r) 写(w) 可执行(x)  无(-)

 
用户分成三类:文件的拥有者 、文件的所属组、 其他。⽤用户符号:   u:拥有者 
 g:拥有者同组⽤用户

o:其它⽤用户   a:

      所有⽤用户在文件的属性中第一个字母是类型。其余九个为权限,三三一组,分别对u g o。

权限的改变:chmod  
                     

  

二  目录

1、使用chmod 400 code命令将目录的权限修改成为只读的

dr--------. 4 ljw ljw 4096 Mar 20 20:31 code

如果我们想要列出这个目录下的所有内容,首先得进入这个目录,再采用ls的指令,但是仅凭只读权限是进入不

了的,因此再增加这个目录的权限,使用chmod  500 code命令将HHH的权限修改成可读可执行的

dr-x------. 4 ljw ljw 4096 Mar 20 20:31 code

此时再使用cd命令进入这个目录再使用ll命令即可以列出目录下的内容

[ljw@localhost code]$ ll

total 0

如果此时我们向往这个目录里创建一个.c的文件(相当于往目录里面些内容)就会出现如下错误

[ljw@localhost code]$ touch 1.c

touch: cannot touch `1.c': Permission denied

2、返回上级目录,使用chmod  200  code将code目录的权限修改成只读的

d-w-------. 4 ljw ljw 4096 Mar 20 20:31 code

同理我们需要往这个目录里面写东西,但首先我们得进入这个目录,同上我们需要加上可执行这个权限因此使用

chmod 300 code命令

[ljw@localhost ~]$ cd code

[ljw@localhost code]$ touch 11.c

[ljw@localhost code]$ ls

ls: cannot open directory .: Permission denied

此时我们往目录里面写入了ss.c这个文件但此时这个目录是不可读的,因此无法使用ls命令

3、使用chmod 100 code将目录权限修改称为可执行的

此时我们只能进入这个目录,而不能对它进行读或者写的操作

总结:关于目录有三种权限:r - -可读权限,可以列出目录下的内容(但如果要列出目录下的内容必须要能进入

这个目录所需要的权限为 r-x)

                          -w-可写权限,可以往目录里些内容(但是如果如果往目录里面些内容,那么这个目录的权限至

少是-wx,首先得进入这个目录)

                        
 - -x可执行的权限,可以进入一个目录(但是不能读或者写)

因此如果用户要进入一个目录,那么权限至少--x(可执行)

因此用户如果想在该目录下创建一个文件,并在该目录里显示这个文件至少需要 rwx的权限

因为上述权限是针对普通用户的,如果我们将用户切换成超级用户,那么超级用户是凌驾于权限之上的,可以任

意写、读、进入

关于文件的三种权限: r- - 可读权限列出文件的文本內容

                     - w-该文件是可写,修改的

                     - -x该文件是可以执行的

不仅可以使用chmod 修改权限,也可以使用umask修改权限。

普通文件创建的权限最多为666

在umask为0022下,创建一个文件的权限为6 4 4

在umask为0002下,创建一个文件的权限则为

umask是起着屏蔽权限的作用的,0022则屏蔽了所属组和其他的写权限,普通文件本身没有有可执行权限因此

不需要屏蔽。

                             0002则屏蔽了其他的写权限

                                                          

chown 命令则可以修改文件的拥有者

chgrp 命令则可以修改文件袋的所属组    

       

关于查看时间的命令:

我们可以使用 date - -help去查看关于时间的命令

使用 date +%Y:%m:%d:%H:%M:%S可以控制输出时间的格式

时间戳:

时间->时间戳  data +%s     从上次到现在的时间     
递增永不重复

时间戳到时间:date +%Y:%m:%d -d@+149006315(获取之前时间)

关于对stat命令中Access Modify Change 命令的认识

首先创建一个a.c的文件

stat命令主要用来显示文件或者文件系统的详细信息

使用stat a.c的命令可以详细的显示a.c这个文件的详细信息

File:表示文件名

Size :表示文件的大小

Blocks:这个文件占用的块设备的大小(块的单位为512个字节)

IO Black:表示文件系统块的默认大小是4096个字节

regular empty file:表示此时是个空文件

Device :表示存放文件的设备

Inode:Inode和文件一一对应,表示文件的编号

Links:1 只有这个文件名用了这个Inode.如果有两个文件名用了这个Inode,这里的数字将是2,例如一个硬链接。

接下来重点剖析与文件相关的三个时间

Access:代表最近一次访问这个文件的时间

如果我们访问了这个文件,那么对应的只有Acess的时间发生了改变

Modify:当更改了一个文件的内容的时候,此文件的modify的时间记录会被更新。用ls
-l看到的文件时间是最近一次modify的时间。modify的行为是三个行为中最有影响力的行为,它发生以后,会使文件的access记录与change记录也同时得到更新。对于目录也是。

此时如果我们使用ls
-l 查看会发现a.c的时间是最近一次modify的时间

Change:文件属性最后一次被修改的时间(当然如果使用了modify那么Change所代表的时间也会随之修改,但

如果是修改了文件的属性例如chmod ,chown ,chgrp...那么只会修改Change的时间。

总结关于Stat命令中的Access Modify Change 所代表的文件时间:

Acess只要文件被访问了,那么Access 所代表的时间立刻会随之修改

Modify:只要文件的内容被修改了,不仅Modify所代表的时间会随之修改,Access也会随之修改(因为你修改内

容必然会访问这个文件),Change所代表的时间也一定会修改(是不是因为内容被修改也算属性被修改的一种,

这点我不确定,如果有知道的求教)

Change:修改文件的属性并不会去访问这个文件,也不会修改文件的文本内容,因此属性修改只会改变Change

所代表的时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: