03.20 Linux文件属性

1. 目录属性总体阐述

这里写图片描述

第一列:inode索引节点编号(相当于人的身份证,家庭住址。全国唯一);系统读取文件时首先通过文件名找到inode号码,然后才能读取到文件内容。

第二列:文件类型及权限。第二列共11个字符;其中一个字符为文件类型,随后9个字符为文件的对应权限,最后一个字符点号 “.” 是和selinux有关的一个标识。

第三列:硬链接个数(详细参看ln命令的讲解)。相当于超市的多个入口,可以从不同的文件入口进入文件,还可以互为备份。

第四列:文件或目录所属的用户,文件的所有者(属主)。Linux里面文件和程序的存在要有用户和组满足相应的存在需求。

第五列:文件或目录所属的组(属组)。

第六列:文件或目录的大小。

第七八列:文件或目录的修改时间;默认月日时分。

第十列:实际的文件名或目录名。文件名不算文件的属性。


2. 硬盘的使用过程

硬盘要储存数据(房子住人),首先要分区(隔断),然后格式化创建系统(装修–装修风格),最后挂载(没有挂载;没有窗户没有门的监狱),才能存数据(住人)。


3. innode存放属性信息

含义:
中文意思是索引节点(index node)。在每个Linux储存设备或储存设备(磁盘或硬盘)的分区(储存设备可以是硬盘、软盘、U盘……)被格式化为文件系统后,一般生成两部分:第一部分是Inode(很多个),第二部分是Block(很多个)。

大小:
因为inode要存放文件的属性信息,所以每个inode本身都是有大小的,Centos5系列inode默认大小是128字节,而CentOS 6系列inode的默认大小是256字节,inode的大小在分区被格式化建文件系统之后定下来的,格式化以后就无法更改indoe大小,格式化之前可以通过参数指定indoe的大小,但是一般企业工作环境没有这个需求。

#查看innode使用情况
[root@Never-downtime ~]# df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda3      593344 55387 537957   10% /
tmpfs          238285     1 238284    1% /dev/shm
/dev/sda1       51200    39  51161    1% /boot

#查看innode大小
[root@Never-downtime ~]# dumpe2fs /dev/sda1 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:           128

比喻:
磁盘========房子
分区========打隔断
格式化====== 装修
创建文件系统===选择了一种装修风格
挂载========装门窗


block存放实际数据

而inode就是用来储存这些数据属性信息的(也就是ls -l的结果),inode属性信息包括不限于文件大小、属主(用户)、归属的用户组、文件权限、文件类型,修改时间,还包含指向文件实体的指针功能(你的block的位置,inode节点–block的对应关系)等,但是,inode里面唯独不包含文件名本身。(文件的名字不是文件的属性)!

这个Block(块,疙瘩)是用来储存实际数据用的,例如:照片,视频等普通文件数据。
当系统查找文件时会找到文件对应的innode号,通过innode号定位索引到block位置。
innode相当于一本书的索引,而每页就是block,整本书相当于一块磁盘或分区!


查看block使用情况

[root@Never-downtime ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.5G  7.0G  18% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       190M   38M  142M  22% /boot

[root@Never-downtime ~]# dumpe2fs /dev/sda3  | grep  -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096

innode和block总结

  1. inode称为index node索引(目录)节点,它的作用是存放文件的属性信息以及作为文件内容的索引(位置)(指向文件的实体block)。

  2. 磁盘被分区并格式化为ext4文件系统(装潢风格)后生成一定数量的inode和block。

  3. inode的表现形式是一串数字,inode号码相当于家庭住址,不同的文件对应的inode(一串数字)在文件系统(分区df第一列)里是唯一的。

  4. inode节点号相当的文件,互为硬链接文件,可以认为是一个文件的不同入口。

  5. ext3/ext4文件系统下,正常情况一个文件占用且只能占用一个inode(人和身份证号)。

  6. block是用来储存实际数据的,每个block的大小一般有1k、2k、4k几种,其中引分区等为1K,其他普通分区为4K。

  7. 磁盘读取数据是按block为单位读取的。

  8. 一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O(input/output磁盘读写)。

  9. 一个block剩余空间会被浪费,无论内容有多下。如果block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了。

  10. Block并非越大越好。Block太大对于存放小文件就会浪费磁盘空间,例如:1000K的文件,Blcok大小为4K,占用250个block,如果block默认为1k,则需要占1000个block。访问效率谁更高?消耗IO分别为250次和1000次。


企业案例

如果向磁盘写入数据提示如下错误:No space left on device(磁盘空间不足),通过df-h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下会导致这个问题发生?

[root@Never-downtime ~]# df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda3      593344 55385 537959   10% /
tmpfs          238285     1 238284    1% /dev/shm
/dev/sda1       51200    39  51161    1% /boot

通过inode来删除文件;删除文件名是乱码的文件。

[root@Never-downtime ~]# ls -lhi
total 52K
15409 -rw-------. 1 root root 1.1K Mar  8 13:24 anaconda-ks.cfg
  118 drwxr-xr-x  2 root root 4.0K Mar 21 07:51 chao
   13 -rw-r--r--. 1 root root  22K Mar  8 13:24 install.log
   14 -rw-r--r--. 1 root root 5.8K Mar  8 13:23 install.log.syslog
  108 -rw-r--r--  1 root root   25 Mar 16 06:40 nginx.conf

[root@Never-downtime ~]# find -inum 118
./chao

[root@Never-downtime ~]# find -inum 118 | xargs rm -rf

Linux文件类型

在Linux系统中,可以说一切(包括目录、普通文件、设备文件等)皆为文件。文件类型包含有文件、目录、字符设备文件、块设备文件、符号/软链接文件、管道文件等等;下面我们分别来说明:

文件类型标识符/说明
d(directory)    表示这是一个目录,如上文ext,在ext2fs中,目录是一个特殊的文件。
-(regular file) 表示这是一个普通的文件,如上文的oldboy。
I(link)         表示这是一个符号/软连接文件,实际上它指向另一个文件。
c(character)    表示字符设备文件。
s(socket)       表示socket文件。
p(named pipe)   表示管道文件。

windows的用户分文件的不同,所以,我们还是习惯通过扩展名来表示不同文件的类型。举例如下:
.gz       表示压缩文件,创建命令一般为tar,gzip,zip。
.sh       表示shell脚本文件,通过shell语言开发的程序。
.pl       表示perl语言文件,通过perl语言开发的程序。
.py       表示python语言文件,通过python语言开发的程序。
.html\ .htm \ .php\ .jsp\ .do 表示网页语言的文件。 
.conf     表示系统的配置文件。
.rpm      表示rpm安装包文件。
.c        C程序语言的源码文件
.cpp      C++程序语言的源码文件
.h        C或C++程序语言的头文件
.o        程序的对象文件
.pl       Perl脚本
.py       Python 脚本
.so       库文件
.sh       Shell脚本
.Java     Java程序源代码文件
.lcss     Java程序源代码编译后的中间代码文件
.tcl      TCL脚本

常见的媒体文件
.au 音频文件
.gif        GIF图像文件
.html/htm   HTML文件
.xml        XML文件
.bmp        位图文件
.jpg        JPEG 图像文件
.pdf        文档的电子映像;PDF 代表 Portable Document Format(可移植文档格式)
.png        PNG图像文件
.ps         PostScript文件,为打印而格式化过的文件
.wav        音频文件
.xpm        图像文件

Linux文件权限

Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,
文件的所有者权限:user owner 的读、写、执行。
文件所有者属于的组的权限:group用户组(Group)的读、写、执。
其他人other其它用户的读、写、执行;
r(read)可读权限,对应数字4
w(write)可写权限,对应数字2
x(Execute)可执行权限,对应数字1
-没有任何权限,对应数字0


Linux软硬链接

链接的概念
在Linux系统中,链接可分为两种:一种为硬链接(Hard Link),另一种为软连接或符号链接(Symbolic Link or Soft link)。我们在前面讲解过ln这个命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建的连接是硬链接。

硬链接
硬链接是指通过索引节点(Inode)来进行链接。在Linux文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index Inode)简称Inode,即在系统中文件的编号。身份证号码。在Linux文件系统中,多个文件名指向同一个索引节点是正常且允许的。这种情况的文件就称为硬链接。

在同一个文件系统中,多个文件的inode号码相当(文件名不同),这些文件就互为硬链接文件。 提示:硬链接 文件就相当于文件的另外一个入口。硬链接的作用之一就是允许在一个文件拥有多个有效路径名(多个入口 超市的多个门),这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件储存,如netapp储存中的快照功能就应用了这个原理,增加了一个快照就多了一个硬链接)。为什么一个文件建立了硬链接就会防止数据误删呢?
也就是说,在Linux系统中,删除静态文件(没有进程调用)(目录也是文件)的条件是与之相关的所有硬链接文件均被删除(暂时这样理解即可)

通过执行命令“ln源文件 硬链接文件”,即可完成创建硬链接。在同一文件系统中,具有相同inode节点号的多个文件互为硬链接文件。

删除硬链接文件或者删除源文件任意之一,文件实体(block 数据 文件内容)并未被删除。

只有删除了源文件及所有对应的硬链接文件,文件实体(block 数据 文件内容)才会被删除。

当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收(养成删除及多套环境测试的好习惯)。

硬链接文件就是文件的另一个入口,(相当于超市的前门、后门一样)。

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

硬链接文件是普通文件,因此可以用rm命令删除。

文件彻底删除;对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除。

[root@Never-downtime oldboy]# ll qunchao.txt
-rw-r--r-- 2 root root 22 Mar 21 14:47 qunchao.txt

软链接
软连接(Soft link)也称为符号链接(Symbolic Link)。Linux里的软连接文件就类似于Windows系统中的快捷方式。Linux的软连接文件实际上就是一个特殊的文件,文件类型是I。软连接文件实际上可以理解为一个文本文件,这个文件中包含有软连接只想另一源文件的位置信息内容,因为,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接,软链接类似windows的快捷方式(可以通过reading查看其指向)。

误区:创建软链接源文件是需要存在的,要创建的软链接文件是不能存在的,要用ln命令创建的。

特点:删除源文件,软链接文件依然存在,只是无法访问源文件(但是无法访问指向的源文件路径内容了)失效的时候一般是白字红底闪烁提示。软链接和源文件是不同类型的文件,也是不同的文件。indoe号也不相同。软链接文件的文件类型为l,可以用rm命令删除。。
这里写图片描述

软硬链接总结

  1. 删除软链接文件对源文件及硬链接无任何影响。 删除硬链接文件对源文件及软链接无任何影响。
  2. 删除源文件,对硬链接文件没有影响,但是会导致软链接文件失效,白字红底闪烁。同时删除源文件,硬链接,整个文件会真正的被删除。
  3. 在同一个文件系统,源文件和硬链接文件具有相同的索引节点号,可以认为是同 一个文件或一个文件的多个入口。
  4. 对于目录,不可以创建硬链接,但可以创建软链接。 对于目录的软链接是生产场景运维中常用的技巧。
  5. 猜测为何不能给目录创建硬链接;目录的硬链接不能跨越文件系统。 每个目录下面都有一个硬链接‘.’号,和对应上级目录的硬链接。
  6. 再父目录里创建一个子目录,父目录的链接数增加1(每个子目录里都有..来指 向父目录)。但是再父目录里创建文件,父目录的链接数不会增加。

企业案例:描述Linux下软硬链接的区别?

  1. 在Linux系统中,链接分为两种;一种称位硬链接(HardLink),另一种被称位符号链接或软链接。默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接。
  2. 硬链接文件与源文件的inode节点号相同,而软链接文件相当于windows下面的快捷方式(inode节点号与源文件不同)。
  3. 不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到。 软链接可以跨文件系统, 硬链接不可以跨文件系统。
  4. 删除软链接文件,对源文件及硬链接文件无任何影响。 删除文件的硬链接文件,对源文件及软链接文件无任何影响。

Linux用户

超级用户
1. Linux是一个多用户、多任务的操作系统,在Linux系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是,对于Linux系统来说,用户的角色是通过UID和GID识别的;特别是UID,在Linux系统运维工作中,一个UID是唯一标识一个系统用户的账号(相当于我们的身份证)。
2. 用户系统账号的名称(如oldboy)其实给人(管理员)看的,Linux系统能够识别的仅仅是UID和GID这样的数字。
3. 用户UID就相当于我们的身份证号一样,用户名就相当于我们的名字。UID(User Identify)中文用户ID,相当于各位的身份证,在系统中是唯一的。

普通用户

  1. 这类用户一般是由具备系统管理员root的权限的运维或系统管理人员添加的。例如:oldboy这类用户可以登录系统,但仅具备操作自己家目录中的文件及目录的权限,初次之外,还可以进入或浏览相关目录(/etc/var/log),但是无法创建、修改和删除;
  2. 普通用户:比喻皇帝的臣民/贫民,干坏事时,国家有法律管束你。为普通用户授权,封官,布衣也可以提权。 普通用户:su- 或su - root,角色切换,农民起义,推翻皇帝,自己当皇帝。 sudo ls 授权、封官、尚方宝剑。可以为皇帝办事,有一定权限,但还是自己。

虚拟用户
与真实普通用户区分开来,这类用户最大的特点是安装系统后默认就会存在,且默认情况大多数不能登录系统,但是,他们是系统正常运行不可缺少的,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如:系统默认的bin、adm、nobody、mail用户等。由于服务器业务角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)

  1. 0 超级用户(皇帝) 当用户的UID为0时,表示这个账号为超级管理员账号,如果要增加一个系统管理员账号的话,只需要将该账号的UID改成0即可。
  2. 1~499 虚拟用户(傀儡) 这个范围是保留给系统使用的UID,之所以这样划分,是为了防止人为建立账户的UID和系统UID之间冲突。并没有其它特殊的含义。细心的同学可以看到passwd虚拟用户的UID都会在这个氛围内。除了0之外,所有的UID在使用上没有任何区别。
  3. 500~65535 普通用户(老百姓) 普通账户UID,当使用useradd oldboy建立账户时,默认情况下UID就是从500开始的,当然了,我们可以随时指定UID来创建账户。

用户及用户组配置文件介绍
/etc/passwd文件中每行定义一个用户账号,有多少行就表示多少个账号,在一行中可以清晰的看出,各内容之间又通过“:”号划分了多个字段,共7部分,这7部分分别定义了账号的不同属性,passwd文件实际内容如下;

Linux系统下的账户文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个文件。
[root@Never-downtime ~]# cat /etc/passwd  ####用户的配置文件
[root@Never-downtime ~]# cat /etc/shadow  ####用户口令/密码文件
root  
账号名称  
和用户UID对应,这是用户登录时使用的账号名称,在系统中是唯一的

:x    
账号密码  
早期的unix系统中,该字段是存放账号密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是在/etc/shadow文件中保护的。

:0
账号UID  
账号UID一般是由一个整数表示的,范围是0-65535,有关UID的限制请看本表格下面的表格。

:0    
账号组GID 
账号GID一般也是由一个整数表示的,范围也是0-65535,当添加账户时,默认情况下会同时建立一个用户同名且UIDGID相同的组。

:root 
用户说明  
这个字段是对这个账号的描述说明。

:/root 
用户家目录 
用户登录后首先进入的目录,一般为“/home/”用户名这样的目录。

:/bin/bash 
shell解释器 
当前用户登录后所使用的shell,在centosLinux系统中,默认的shell为bash,就是在这里设置的,如果不希望用户登录系统,可以通过usermod或者手工修改passwd配置,将该字段改为/sbin/nologinji即可。

文件被修改或被访问时间

mtime modify time 文件目录的修改时间,文件内容修改。
ctime change time 文件/目录的属性的修改时间,大小,硬链接数,权限,所有者,所属于的组,类型。
atime access time 文件/目录的访问时间,cat查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值