linux文件属性

gdb 2020-05-01

1.linux文件属性概述

如何查看文件详细信息?

# 使用 ll -i 查看文件详细信息,以前使用 ll / ls -l 还缺少一位信息 
[ /test ]# ll -i
total 0
 34332866 drwxr-xr-x 3 root root 20 Apr 30 15:01 oldboy1
101717365 drwxr-xr-x 3 root root 20 Apr 30 15:01 oldboy2
    30050 -rw-r--r-- 1 root root  0 Apr 30 15:01 test1.txt
    30051 -rw-r--r-- 1 root root  0 Apr 30 15:01 test2.txt

各列信息文字描述

第一列       显示文件的inode信息

第二列       显示文件类型

第三列		  显示文件的权限位信息(12位)

第四列  	  显示文件的硬连接数

第五列   	  显示文件属组用户

第六列   	  显示文件所属组的信息

第七列    	  显示文件数据大小

第八列       显示文件的修改时间,修改时间,修改时间

第九列       文件名

linux文件属性

2.属性详细-inode

比如现在有一个文件需要存储在我的电脑上,是直接可以存储在磁盘上的吗?并不是,一块新的磁盘要想存储数据要经过几个步骤才能让我们正常使用,在磁盘可以使用过程中产生了俩个关键的信息:inode和block信息,简单来说inode像是书的目录存放着我们要看内容的页码,而block指向就第几页的内容信息,通过block就能查看书的内容。

磁盘如何存储数据文件的?

1. 准备好需要的磁盘
2. 通过raid把多个磁盘整合
3. 对磁盘进行了格式化处理
4. 创建文件系统,产生了inode和block
5. 磁盘挂载

linux文件属性

inode信息说明

inode就是文件的索引节点,存储着磁盘上文件的属性信息,是在文件系统创建完成产生的

inode特点说明

1. inode存储的文件的属性信息
2. inode存储文件对应的block指针信息
3. 文件创建可以有多个inode和block信息,相同的inode视为硬连接

查看inode信息

df -i

# 显示说明
Inodes  # 分区的inode总数量
IUsed   # 分区当前使用情况
IFree   # 分区剩余的inode

注意:文件属性信息存储在inode中 , 文件的名称信息存储在上一级目录的block中

block信息说明

block相当于书的页码,指向的数据内容信息

block特点说明

1. block存储的数据信息
2. 磁盘读取每一个block会消耗磁盘i/o资源
3. 创建文件至少占用一个block
# 原因
block的默认大小为4k(可以调整)
比较大的文件会占用多个block  # 浪费i/o资源
比较小的文件占不满一个block  # 浪费磁盘空间

查看磁盘block

[ /old ]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos_xuan-root  18307072 1810760  16496312  10% /
devtmpfs                        490212       0    490212   0% /dev

3.属性详细-链接数

linux的链接方式俩种:硬连接和软链接,硬连接指向数据的inode,软链接指向源文件

linux文件属性

硬链接文件说明

硬链接相当于文件数据查看的另一个大门,通过硬链接文件也可以修改数据内容。在一个分区中相同的inode互为硬链接

软链接文件说明

软链接就是源文件的快捷方式,软链接指向是它的链接文件,而不是数据本身。当数据源文件删除后,软链接无法访问数据

ln命令创建链接文件

ln 	  源文件  链接文件路径  	#创建硬链接
ln -s 源文件  链接文件路径   #创建软链接

# 命令演示
[ /old ]# echo ‘oldboy‘ > test.txt
[ /old ]# ln test.txt test_hear.ln
[ /old ]# ln -s test.txt test_sorf.ln
[ /old ]# ll -i 
total 8
30057 -rw-r--r-- 2 root root 7 May  1 15:51 test_hear.ln
30069 lrwxrwxrwx 1 root root 8 May  1 15:52 test_sorf.ln -> test.txt
30057 -rw-r--r-- 2 root root 7 May  1 15:51 test.txt

查找系统文件的硬连接

find 目录 -inum inode号

[ /old ]# ll -i
total 8
30057 -rw-r--r-- 2 root root 7 May  1 15:51 test_hear.ln
30069 lrwxrwxrwx 1 root root 8 May  1 15:52 test_sorf.ln -> test.txt
30057 -rw-r--r-- 2 root root 7 May  1 15:51 test.txt

[ /old ]# find / -inum 30057
/old/test_hear.ln
/old/test.txt

文件硬连接数说明

当创建一个文件的硬连接数为1,硬连接后文件的硬连接数+1,表示数据的inode信息被俩个文件链接,可以被俩个文件访问数据内容。

创建软链接不会增加链接数,更加说明软链接不是指向数据的inode。软链接可以创建自己的硬连接文件

删除文件说明

我们知道数据存储在磁盘上,当删除文件 rm ,并不是真正删除数据,而断开文件和数据的inode信息的连接

linux文件属性

目录硬连接说明

目录无法创建链接文件
原因:目录可以被磁盘挂载,当挂载时会造成冲突 /cd = /cd.ln /cd -> /dev/sda /cd.ln -> /dev/sdb

目录的硬连接数怎么产生?

[dgirl /old ]# mkdir oldboy
[ /old ]# mkdir oldboy/oldgirl{1..3}
[ /old ]# ll -id oldboy
34332870 drwxr-xr-x 5 root root 51 May  1 16:40 oldboy

# 原因:
# 1.在oldboy目录下的隐藏文件 .
[ /old ]# ll -ia oldboy
total 0
 34332870 drwxr-xr-x 5 root root  51 May  1 16:40 .  # 和oldboy目录的inode一致 +1
    30056 drwxr-xr-x 3 root root 101 May  1 16:39 ..
 69316579 drwxr-xr-x 2 root root   6 May  1 16:40 oldgirl1
101717368 drwxr-xr-x 2 root root   6 May  1 16:40 oldgirl2
    30070 drwxr-xr-x 2 root root   6 May  1 16:40 oldgirl3

# 2.在oldboy子目录下的隐藏文件 ..
[ /old ]# ll -ia oldboy/oldgirl1
total 0
69316579 drwxr-xr-x 2 root root  6 May  1 16:40 .
34332870 drwxr-xr-x 5 root root 51 May  1 16:40 ..   # 和oldboy目录的inode一致 +1

硬软链接文件总结

1. 链接后软链接文件的类型和权限不一致,硬链接文件和源文件一致
2. 链接后软链接文件的inode信息不一致,硬链接文件和源文件一致
3. 链接后软链接文件的链接数大小不一致,硬链接文件和源文件一致

4. 源文件删除时,软链接文件失效!!!!

linux文件属性

4.属性详细-数据类型

linux系统中一切都看作是文件,有哪些文件类型,如何查看文件类型?

符号:-         # 表示普通文件——纯文本文件、二进制文件、数据文件
符号:d		# 表示一个目录
符号:l	    # 表示一个文件的链接文件,Windows的快捷方式  链接文件分为:软链接和硬链接
符号:c/b      # 表示系统的设备文件
符号:s		# 表示网络文件

普通文件说明

纯文本文件:可以直接编辑的文件
二进制文件: 不可以编辑的文件,可以执行运行的文件
数据文件: 压缩文件

设备文件说明

c:字符块文件,不停输出字符的文件
b:块文件,存储设备文件
# 磁盘文件 /dev/sda
# 输出设备 /dev/zero
# 输入设备 /dev/wall
# 随机设备 /dev/urandom

查看文件类型命令 file

[ /test ]# file test1.txt 
test1.txt: ASCII text  # 文本文件

[ /test ]# file oldboy1
oldboy1: directory     # 目录

[ /test ]# file oldboy.ln
oldboy.ln: symbolic link to `oldboy1‘   # oldboy.ln 是oldboy1的连接文件

5.属性详细-权限

每个文件或目录都有一组共9个权限位,每三位为一组,他们分别是属主权限位(占三个字符)、用户组权限(占三位字符)、其它用户权限位(占三个字符)

linux文件属性

属主		# 创建文件的用户
属组      # 和创建文件用户一个用户组内的用户
其他用户   # 不在创建文件用户组的用户

三种用户对应的三种权限

属主用户	# 写权限 w  读权限 r  执行权限 x
属组用户	# 写权限 w  读权限 r  执行权限 x
其他用户	# 写权限 w  读权限 r  执行权限 x

写权限、读权限、执行权限 对于文件作用:

w		# 可以让用户对文件编辑
r		# 可以让用户读取文件内容
x		# 可以让用户执行文件

写权限、读权限、执行权限 对于目录作用:

w		# 可以让用户对目录下创建文件
r		# 可以让用户查看目录的文件
x		# 可以让用户进入目录

6.属性详细-用户和用户组

系统用户的作用

1. 利用用户登录系统
2. 利用用户管理系统资源
3. 利用用户管理系统的进程

系统通过用户的UID查看对应的用户和用户组信息

[ /test ]$ id root
uid=0(root) gid=0(root) groups=0(root)
[ /test ]$ id zxzx
uid=1001(zxzx) gid=1001(zxzx) groups=1001(zxzx)

# 信息说明
第一列:显示用户的UID号
第二列:显示用户所属用户组的gid
第三列:显示用户所属其他用户组的信息

linux对用户的分三类:管理员用户root 、系统用户、普通用户

# 1.管理员用户 root
UID = 0
# 权限:系统拥有最高权限

# 2.系统用户
UID = 1-999
# 权限:只能管理一些系统的进程,不能登录系统,没有用户的家目录

# 3.普通用户
UID = 1000+
# 权限:可以管理指定的系统资源,可以登录

如何防止恶意登录系统?

1. 修改默认远程服务端口号 22   
2. 禁止直接使用root用户登录

7.属性详细-时间

利用命令ll查看文件的改变时间,可以使用stat查看文件相关时间

[ /test ]$ stat test.txt 
  File: ‘test.txt’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 30049       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-30 15:01:43.300773841 +0800
Modify: 2020-04-30 15:01:43.300773841 +0800
Change: 2020-04-30 15:01:43.300773841 +0800
 Birth: -
 
# 文件时间说明
Access		# 访问文件的时间:查看文件内容时间改变 atime
Modify		# 文件修改时间 mtime
Change		# 文件属性改变时间 ctime

时间相关命令

查看系统当前时间 date

# 查看时间
[ /old ]# date 
Fri May  1 16:58:18 CST 2020

# 修改时间显示格式
date +%F		# 显示年月日 2020-05-01
date +%Y-%m-%d  # %F

date +%T		# 显示时分秒
date +%H:%M:%s  # %T

date  +%F_%T	# 不同参数需要连接一起
date "+%F %T"   # 使用双引号表示一起

# 修改当前时间
date -s "2014-2-1 9:30"
date -s 20140102  # 只修改年月日

# 查看历史时间
date +%F -d "-2day"
date +%F -d "2day ago"
# 作用:备份前一天的数据日志

# 查看未来时间
date +%F -d "2day"
date +%F -d "+2day"

同步时间命令 ntpdate

# 需要下载
yum install ntpdate

# 使用阿里同步
ntpdate ntp1.aliyun.com

find按照时间查看文件

find 目录 -mtime +10   # + 表示查找10天修改的文件
find 目录 -mtime -10   # - 表示查找10内修改的文件

相关推荐