Linux文件属性及相关命令

Linux文件属性

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

各文件属性代表意义

1.inode号

文件存储在硬盘上,硬盘的最小存储单位叫做"扇区"(sector)。每个"扇区"的大小为512字节(byte),操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太慢。他是一次性读取多个扇区,即一次性读取一个"Block块"。一个Block有8个连续的扇区(sector)组成。

数据都存在Block块里面,但是我们怎么知道一个数据存放在哪些Block块里面呢?这个时候就必须需要一个索引,引导我们去找到存放在BLOCK块里面的数据。这存放索引的地方我们称为索引节点(Inode),索引节点里面包括了:文件的类型,属主,属组,权限,和时间戳一些信息,但是不包括文件名.

inode要存放内容,所以他肯定也是需要占用磁盘空间大小的。所硬盘分区在创建文件系统(格式化)的时候自动把硬盘分区分成两个区域:

1)Block块,数据区:存放实际的数据

 2)inode块,索引区:存放inode所包含的信息(文件属性信息)

inode节点的大小和总数,是创建文件系统的时候就给定的,后期没办法更改,一般是128字节(byte)或者256字节(byte)。

inode信息查看

如果inode被占用完全,那么对这个文件里面写入数据的时候会提示磁盘已满,no space left on device。

 

目录文件

Linux下面一切皆文件,所以列出目录下的内容也相当于列出目录文件里面的内容,进入目录,就相当于进入目录文件里面。

目录文件的结构非常简单,就是一系列目录项(dirent)的列表,每个目录项都有两部分组成:

1)所包含的文件名

2)所包含的文件名和inode(索引节点号)的对应关系

修改目录下面的文件名,实际上就是在修改目录文件本身的block块里面的对应信息。所以能不能改目录下面的文件的名称是根据目录的权限来的。而是不根据文件本省的的权限来的。

 

inode总结

磁盘被分区格式化为ext4文件系统后会生成一定数量的inode和block

1)inode被称为索引点,存放文件的属性信息及作为文件的索引(类似于C语言指针)

2)ext3/ext4文件系统的block存放的是文件的实际内容

3)inode是磁盘上的一块存储空间,CentOS5是128字节,CentOS6是256字节

4)inode的表现形式是一串数字,不同文件对应inode不相同

5)inode号相同的互为硬链接

6)ext3和ext4文件系统下,一个文件至少占用一个inode和block

7)ext3和ext4文件系统下,一个文件只能占用一个inode

改变inode大小,mkfs.ext4 –b 2048 –i 256#-b指定block大小,-i指定inode大小

 

block总结

1)用来实际存放数据的地方,如果是目录,里面存放下级文件的文件名称

2)磁盘读取数据是按照block为单位读取的

3)一个文件至少占用一个block,未用完的浪费,可以占用多个block

4)要提升磁盘I/O性能,那就要一次性读取数据尽量的多

5)block并非越大越好。block太大会对小文件存放浪费太多磁盘空间,太小对于大文件来说,会更大的消耗I/O。一般默认为4K(4096字节)

 

  1. 文件类型

-:代表普通文件

d:代表目录

l:代表软连接(ln –s 源文件 链接文件)

b:块设备和其他外围设备,是特殊类型的文件

普通文件“—”又分为:(用file来查看)

1) 纯文本文件(ascll):文件内容可以直接督导数据

2) 二进制文件(binary):Linux中的命令程序就是这种格式

3) 数据格式文件(data):有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件被称为数据文件。

虽然Linux不按照后缀名区分文件,但是我们还是最好写上,以方便管理。

一般这样设置后缀名:

*.txt    文本文件

*.tar    打包文件

*.tar.bz  bzip2格式压缩打包文件(j)

*.tar.gz  gzip格式压缩打包文件(z)

*.py    表示python语言文件

*.sh    shell编程脚本

*.pl    表示perl文件

*.html,*.php,*.htm,*.php,*.jsp,*.do   网页语言文件

*.conf  配置文件

*.rpm  rpm安装包

 

  1. 链接

硬链接

一般情况下,文件名和inode号码是“一一对应”的关系,在同一个分区内不可能同时出现两个inode号相同的文件,但是Linux系统中存在一个inode 号对应多个文件名。这些文件互为硬链接。虽然他们的文件名不一样,但他们实际上操作的还是一个文件。

创建硬链接

ln 源文件 链接后的文件

硬链接总结

1)  inode号相同的,可以认为互为硬链接

2)  硬链接的创建不能跨越文件系统(跨越分区),目录不能创建硬链接

3)  删除源文件或链接文件,文件实例未被改变,只有删除所有的硬链接文件和源文件,文件的实体才会被改变。

4)  当所有的硬链接和源文件被删除,没有进程调用后,在存放新的数据会占用这个文件的空间或者磁盘fsck检查的时候,删除的数据才会被回收,

5)  可以通过文件设置硬链接文件,来防止重要文件被误删除

6)  每在目录下创建一个子目录,他的上级目录的硬连接数加1

7)  目录硬链接的个数减去2代表他下面有多少个目录(减去他本身的1,和“.”)

 

软链接

作用

当一个软件的编译路径变了,我们还希望使用以前的路径,这时候就需要用到软连接,软连接相当于一个传送门,删除软连接对源文件没影响,但删除源文件,软连接就失效了。

创建软链接

ln -s 源文件 链接后的文件

 

软连接总结:

1)  软链接类似于windows的快捷方式(可以用readlink查看指向)

2)  软连接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体

3)  删除源文件,软链接失效,一般显示白字红底闪烁提示

4)  软链接具备不同的inode号

5)  软链接和源文件属于不同类型的文件

 

 

 

  1. 文件权限

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。用户的角色是通过UID和GID(Group Identify)识别的,特别是UID,在linux系统中,一个UID是唯一标识系统用户的账号。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限,包括:

读:r(read):可读权限,表示具有读取,和阅读文件的内容

写:w(write):写权限,表示具有增加,删除,修改文件内容的权限(是对于文件内容来操作的)

    1)如果没有r权限,用vim编辑的时候会提示无法编辑,但是可以使用cat,或echo重定向追加

执行:x(execute):文件可以被系统执行

    2)如果没有r权限,就是由执行权限,它也会提示权限不足,(想一下,你连里面的内容都不知道是啥,怎么去执行他呢。)

    3)删除文件,或修改文件名是跟他的父目录有关的,因为文件名是存放在上级目录的block块里面的。

 

 

更改文件属性:

1、chgrp:更改文件属组

语法:

chgrp [-R] 属组名 文件名

参数选项

-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名

chown [-R] 属主名:属组名 文件名

 

3、chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

r:4

w:2

x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:

owner = rwx = 4+2+1 = 7

group = rwx = 4+2+1 = 7

others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

 chmod [-R] xyz 文件或目录

选项与参数:

xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

(1)user

(2)group

(3)others

那么我们就可以使用 u, g, o 来代表三种身份的权限!

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmod

u
g
o
a

+(加入)
-(
除去)
=(
设定)

r
w
x

文件或目录

 

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定

 

linux中文件的三种time(atime,mtime,ctime

简名

全名

中文名

含义

atime

access time

访问时间

文件中的数据库最后被访问的时间

mtime

modify time

修改时间

文件内容被修改的最后时间

ctime

change time

变化时间

文件的元数据发生变化。比如权限,所有者等

 

 

 

 

参考:

https://www.runoob.com/linux/linux-file-attr-permission.html

https://www.cnblogs.com/kzang/articles/2673790.html

https://www.cnblogs.com/zoulongbin/p/10456285.html

https://blog.csdn.net/diyiday/article/details/89842591

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值