linux文件和目录的属性及硬链接与软连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文件和目录的属性及硬链接与软连接相关的知识,希望对你有一定的参考价值。

1.文件属性概述

linux系统中的文件或目录的属性主要包括:索引节点(inode)、文件类型、权限属性、链接数、所归属的用户和用户组、最近修改的时间等内容。

我们用ls –lhi命令查看一下结果,也可以用stat详细查看文件属性。

[[email protected] ~]# ls -lhi
total 92K
400420 -rw-------. 1 root root 1.1K Jun 14 05:02 anaconda-ks.cfg
400431 -rw-r--r--. 1 root root  112 Jul 16  2018 chuangjianrizhi.sh
404480 -rw-r--r--. 1 root root   52 Jul 17  2018 ddd.txt
404166 drwxr-xr-x. 2 root root 4.0K Jun 28 09:15 Desktop
404170 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Documents
404167 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Downloads
390867 -rw-r--r--. 1 root root  292 Jun 20 01:00 ett.txt
390147 -rw-r--r--. 1 root root  20K Jun 14 05:02 install.log
390148 -rw-r--r--. 1 root root 5.8K Jun 14 05:01 install.log.syslog
390809 drwxr-xr-x. 7 root root 4.0K Jul 12 10:26 linzhongniao
404481 -rw-r--r--. 1 root root   41 Jul  8 13:41 linzhongniao.txt
404171 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Music
404172 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Pictures
404169 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Public
390873 -rw-r--r--. 1 root root0 Jul  3 09:09 sdsd.txt
400406 -rw-r--r--. 1 root root  297 Jul 11 14:26 sss.txt
404168 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Templates
404173 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Videos

技术分享图片

技术分享图片

2.索引节点inode

2.1 inode概述

Inode中文意思是索引节点(index node)。在每个linux存储设备或存储设备的分区(存储设备可以是硬盘、软盘、U盘)被格式化为ext4文件系统后,一般有两个部分:第一个部分是Inode(很多个),第二部分是Block(很多个)。inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。

Block是用来存储实际数据的,而Inode就是用来存储文件属性的。Inode的属性信息包括文件大小、属主、文件的权限、文件类型、修改时间。还包含指向文件实体block的指针。但是Inode里面唯独不包括文件名。

技术分享图片

2.2查看文件系统Inode大小

因为Inode要存放文件的属性信息,所以inode是有大小的,不同的Inode大小是不一样的。inode的大小在分区被格式化创建文件系统后定下来了,格式化以后就不能改变inode的大小,格式化前可以用-i参数指定inode的大小。

查看每个分区的inode大小,先查看系统分区

技术分享图片

[[email protected] ~]# dumpe2fs /dev/sda1|grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:   128
[[email protected] ~]# dumpe2fs /dev/sda2|grep -i "inode size" 
dumpe2fs 1.41.12 (17-May-2010)
Inode size:   256
[[email protected] ~]# dumpe2fs /dev/sda3|grep -i "inode size" 
dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda3 《==sda3是swap访问不了,可以用df –h查看
[[email protected] ~]# dumpe2fs /dev/sda4|grep -i "inode size" 
dumpe2fs 1.41.12 (17-May-2010)
Inode size:   256

2.3查看文件系统inode总量以及剩余量

用df –i查看

技术分享图片

2.4查看磁盘使用量

[[email protected] ~]# df -h
Filesystem  Size  Used Avail Use% Mounted on
/dev/sda411G  3.5G  6.3G  36% /
tmpfs   490M 0  490M   0% /dev/shm
/dev/sda1   190M   65M  116M  36% /boot
/dev/sda2   7.6G  182M  7.0G   3% /var
/dev/sdb185M  312K   79M   1% /tmp/sdb1

2.5 查看inode和block的总量

两种方法

[[email protected] ~]# dumpe2fs /dev/sda4|egrep -i "block size|inode size" 
dumpe2fs 1.41.12 (17-May-2010)
Block size:   4096
Inode size:   256
[[email protected] ~]# dumpe2fs /dev/sda4|egrep -i "block count|inode count"   
dumpe2fs 1.41.12 (17-May-2010)
Inode count:  690880
Block count:  2759424
Reserved block count: 137971

小结:

磁盘空间是否满了,是由两项参数决定的:

第一个是Inode满了,第二个是block满了,任何一项满了都会导致磁盘空间已经占满。

2.6 如何生成及指定inode大小

在格式化的时候指定,格式化命令:mkfs.ext4 –b 2048 –i 256 /dev/sdb

3.文件类型

在linux系统中,一切设备(包括目录、普通文件)皆是文件,文件类型包括普通文件、目录、字符设备文件、块设备文件、符号链接文件、管道文件等等。查看文件类型可以用file命令。

技术分享图片

4.linux硬链接与软连接

4.1 链接的概念

在linux系统中,链接可分为两种:一种为硬链接,另一种为软连接或符号链接。ln这个命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令就是创建硬链接文件的。

硬链接:ln 源文件 目标文件(目标文件不能是事先存在的)

软连接:ln –s 源文件 目标文件(目标文件不能是事先存在)

4.2 硬链接

硬链接是指通过索引节点(Inode)来进行链接。在linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index Inode)简称Inode。即在系统中文件的编号。

在linux文件系统中,多个文件名指向同一个索引节点(Inode)是正常且允许的。硬链接文件就相当于文件的另一个入口,硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以通过建立硬链接文件,以防止“误删”源数据。

演示:误删数据

[[email protected] linzhongniao]# echo 1 >a
[[email protected] linzhongniao]# cat a
1
[[email protected] linzhongniao]# ls -l a
 -rw-r--r--. 1 root root 2 Jul 13 14:20 a
[[email protected] linzhongniao]# ln a b
硬链接文件有相同的inode
[[email protected] linzhongniao]# ls -lhi a b
390821 -rw-r--r--. 2 root root 2 Jul 13 14:20 a
390821 -rw-r--r--. 2 root root 2 Jul 13 14:20 b
[[email protected] linzhongniao]# rm -f a
[[email protected] linzhongniao]# ls
b
[[email protected] linzhongniao]# cat b
1
恢复误删的数据
[[email protected] linzhongniao]# cat b
1
[[email protected] linzhongniao]# cat b > a
[[email protected] linzhongniao]# ls
a  b
[[email protected] linzhongniao]# cat a
1

硬链接文件的创建:

直接执行命令“ln 源文件 硬链接文件”(硬链接文件一定是不存在的)即可完成创建硬链接。

小结:

(1)具有相同的inode节点号的多个文件是互为硬链接文件。

(2)删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。

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

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

(5)通过执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接文件。

(6)硬链接文件是普通文件因此可以用rm 删除。

4.3 软链接

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

演示:

[[email protected] linzhongniao]# touch file
[[email protected] linzhongniao]# ln -s file soft_file 
[[email protected] linzhongniao]# ls -l file soft_file  
 -rw-r--r--. 1 root root 0 Jul 13 15:53 file
lrwxrwxrwx. 1 root root 4 Jul 13 15:53 soft_file -> file
查看软链接包含什么用readlink,输出源文件
[[email protected] linzhongniao]# readlink soft_file
file 《==soft_file是软链接文件它实际上是指向了源文件file

设置开机自启动其实就是为/etc/init.d/下的文件在/etc/rc.d/rc3.d/下的文件创建软链接文件

[[email protected] ~]# ls -l /etc/rc.d/rc3.d/S55sshd 
lrwxrwxrwx. 1 root root 14 Jun 14 05:01 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd
[[email protected] ~]# readlink /etc/rc.d/rc3.d/S55sshd
../init.d/sshd

软链接的创建:

执行命令“ln –s 源文件 软链接文件”(软链接文件一定是不存在的),即可完成创建软链接。

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

小结:

(1)软链接类似windows的快捷方式(可以通过readlink查看其指向)。

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

(3)删除源文件,软链接文件依然存在,但是无法访问指向的源文件路径内容了。

(4)失效的时候一般是白字红底闪烁提示、

技术分享图片

(5)软链接文件和源文件是不同类型的文件,也是不同的文件。inode号也不相同。

(6)删除软链接文件可以用rm命令。

4.4 目录链接文件小结

(1)对于目录,不可以创建硬链接,但可以创建软链接

[[email protected] linzhongniao]# ln woshishei woshishei_hard_link
ln: `woshishei‘: hard link not allowed for directory
[[email protected] linzhongniao]# ln -s woshishei woshishei_hard_link

(2)对于目录的硬链接是生产场景运维中常用的技巧

(3)目录的软链接不能跨越文件系统

(4)每个目录下面都有一个硬链接“.”号和当前目录互为硬链接,和对应上级目录的“..”互为硬链接

[[email protected] linzhongniao]# ls -a woshishei woshishei/. -ldi
390865 drwxr-xr-x. 2 root root 4096 Jul 13 17:17 woshishei
390865 drwxr-xr-x. 2 root root 4096 Jul 13 17:17 woshishei/.
[[email protected] linzhongniao]# ls -a woshishei/.. ../linzhongniao ../linzhongniao/. -ldi
390809 drwxr-xr-x. 3 root root 4096 Jul 13 17:18 ../linzhongniao
390809 drwxr-xr-x. 3 root root 4096 Jul 13 17:18 ../linzhongniao/.
390809 drwxr-xr-x. 3 root root 4096 Jul 13 17:18 woshishei/..

(5)在父目录里创建一个子目录,父目录的链接数增加1(每个子目录里都有..来指向父目录)。但是在父目录里面创建文件,父目录的连接数不会增加。我认为这就是为什么cd .是进入到当前目录而cd ..就是进入到上一级目录的原因。

[[email protected] ddd]# mkdir df
[[email protected] ddd]# ls -lid df/..
399601 drwxr-xr-x. 3 root root 4096 Sep 21 21:07 df/..
[[email protected] ddd]# ls -ldi .
399601 drwxr-xr-x. 3 root root 4096 Sep 21 21:07 .

5.linux多用户多任务介绍

5.1 linux单用户多任务

每个用户可以执行多个用户,用id 命令查看用户ID和组ID

5.1.1 linux系统中用户角色的划分

用户的角色是通过UID和GID识别的,用户的UID就相当于我们的×××一样,用户名就相当于我们的名字。

UID (User Identify) 用户ID,相当于×××,在系统是唯一的

GID (Group Identify) 组ID,相当于一个家庭或者一个学校的ID

linux系统中的用户分为三类:超级用户、普通用户、虚拟用户。

超级用户:默认是root用户,其UID和GID均为0。root用户在每台linux操作系统中都是唯一真实存在的并且拥有最高的管理权限。
企业工作中:没有特殊需求,应该尽量在普通用户下操作任务,而不是root。
在linux系统中,uid为0的用户就是超级用户,但是通常不这么做,而是sudo管理提权,可以为每个命令分配权限。

普通用户:
普通用户的UID是500到65535,普通用户是具备系统管理员root的权限的运维或者系统管理人员添加的,普通用户登录系统,仅能操作自己家目录中的文件及目录的权限,除此之外还可以进入或者浏览相关的目录;但是无法创建、修改和删除完成这些操作,但是可以给用户授权(sudo)。

虚拟用户:
虚拟用户(没有家目录)的UID是从1到499。安装系统默认就会存在,且默认情况大多数不能登录系统,他们是系统正常运行不可缺少的,他们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。在系统优化的时候可以把虚拟用户注释掉。

5.2 用户配置文件介绍

linux系统下的账户文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个文件中。

5.2.1 用户的配置文件/etc/passwd

/etc/passwd 文件中每行定义一个用户账号,有多少行就表示多少个账号。分为7列。

[[email protected] ~]# tail -5 /etc/passwd
stu6:x:860:860::/home/stu6:/bin/bash
stu7:x:861:861::/home/stu7:/bin/bash
stu8:x:862:862::/home/stu8:/bin/bash
stu9:x:863:863::/home/stu9:/bin/bash
stu10:x:864:864::/home/stu10:/bin/bash

第一列:账号名称

第二列:账号密码

第三列:账号UID

第四列:账号组GID

第五列:用户说明

第六列:用户家目录

第七列:shell解释器

5.2.2 用户密码口令文件/etc/shadow

[[email protected] ~]# head -5 /etc/shadow
root:$6$IcyLTHpcQrCAyptm$cYxjHT.wPQHekZsb.c/UFyH8FQ4BTDms4o3P8YAvpcyEzA1gcr51gaXVN0IBh2yOne1fZB5zPfZ4Ven3QocAz0:17695:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::

技术分享图片

以上是关于linux文件和目录的属性及硬链接与软连接的主要内容,如果未能解决你的问题,请参考以下文章

linux 硬链接与软连接

硬链接与软链接

硬链接与软连接

文件管理(硬链接与软连接 ,ls, cp, ....)和标准Io

Linux 硬链接与软链接 目录结构

目录本质,硬链接与软连接,常用的一些小命令