超詳細(xì)!Linux文件和目錄的10項(xiàng)屬性

公眾號(hào):老油條IT記

文件和目錄10項(xiàng)屬性目錄

1:索引節(jié)點(diǎn):inode

2:文件類(lèi)型

3:鏈接數(shù)

4:用戶

5:組

6:文件大小

7.8.9:時(shí)間戳

10:文件名


1.Linux文件

#概述

#1.linux里一切皆為文件

#2.Linux系統(tǒng)中的文件或目錄的屬性主要包括:inode(索引節(jié)點(diǎn))、文件類(lèi)型、權(quán)限屬性、鏈接數(shù)、所屬用戶和用戶組、最近修改時(shí)間等內(nèi)容

#例如:執(zhí)行l(wèi)s -lhi ,會(huì)出現(xiàn)10列內(nèi)容

[root@cots3 ~]# ls -lhi

total 28K

33865597 -rw-r--r-- ?1 root root ?104 Feb 29 09:43 1.txt

33865598 -rw-r--r-- ?1 root root ? 13 Feb 29 09:44 2.txt

33619589 -rwxr-xr-x ?1 root root ?187 Mar ?2 23:44 3.sh


#10列內(nèi)容講解

第一列:inode索引節(jié)點(diǎn)編號(hào)(唯一的,像人的身份證)

第二列:文件類(lèi)型及權(quán)限(共10個(gè)字符,第一字符為類(lèi)型,后9個(gè)為文件權(quán)限)

第三列:硬鏈接數(shù)

第四列:文件或目錄所屬的用戶

第五列:文件或目錄所屬的組

第六列:文件或目錄的大小

第七、八、九列:時(shí)間戳

第十列:實(shí)際的文件或目錄名

#圖片講解

2.文件屬性詳細(xì)講解

#2.1索引節(jié)點(diǎn):inode

#概述

#1.indoe,中文意思是索引節(jié)點(diǎn)(index node)。在每個(gè)Linux存儲(chǔ)設(shè)置或存儲(chǔ)設(shè)備的分區(qū)被格式化為ext4文件系統(tǒng)之后,一般會(huì)生成兩個(gè)部分,第一部分是inode,第二部分是block

#2.block是真正用來(lái)存儲(chǔ)實(shí)際數(shù)據(jù)的,如照片,視頻等普通文件數(shù)據(jù),inode是用來(lái)存儲(chǔ)這些數(shù)據(jù)的屬性信息(也就是ls -l的結(jié)果),inode屬性信息包括不限于文件大小、屬主(用戶)、歸屬的用戶組、文件權(quán)限、文件類(lèi)型、修改時(shí)間,但是inode里面不包含文件名

#3.inode除了記錄文件屬性的信息外,還會(huì)為每個(gè)文件信息索引,操作系統(tǒng)就會(huì)根據(jù)inode的值最快的找到相對(duì)應(yīng)的文件實(shí)體

#擴(kuò)展:Linux組成

#Linux文件系統(tǒng)由三分部組成:文件名,inode,block(真正存數(shù)據(jù))

#使用stat命令查看inode信息

#stat:顯示文件和文件系統(tǒng)狀態(tài)

[root@cots3 ~]# stat /etc/passwd

File: ‘/etc/passwd’

Size: 1032 ? ? ? ? ?Blocks: 8 ? ? ? ? ?IO Block: 4096 ? regular file

Device: fd00h/64768d ? ?Inode: 17042355 ? ?Links: 1

Access: (0644/-rw-r--r--) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)

Access: 2020-03-04 03:37:21.549000201 -0500

Modify: 2020-02-29 20:50:57.126146678 -0500

Change: 2020-02-29 20:50:57.126146678 -0500

Birth: -

#查看目錄的inode號(hào)

[root@cots3 ~]# ls -di /etc/

16777281 /etc/

#inode的大小

#inode也會(huì)消耗硬盤(pán)空間,所以硬盤(pán)格式化的時(shí)候,操作系統(tǒng)自動(dòng)將硬盤(pán)分成兩個(gè)區(qū)域 一個(gè)是數(shù)據(jù)區(qū),存放文件數(shù)據(jù);另一個(gè)是inode區(qū)(inode table),存放inode所包含的信息

#查看磁盤(pán)空間是否滿了,由inode是否滿了和block是否滿了決定的,任何一個(gè)滿了,都無(wú)法存放東西

#磁盤(pán)滿的特征(no space on device left)

#查看每個(gè)硬盤(pán)分區(qū)的inode總數(shù)和已經(jīng)使用的數(shù)量,可以使用df命令

[root@cots3 ~]# df -i

Filesystem ? ? ? ? ? ? ? Inodes IUsed ? IFree IUse% Mounted on

/dev/mapper/centos-root 8910848 33678 8877170 ? ?1% /

devtmpfs ? ? ? ? ? ? ? ? 230105 ? 396 ?229709 ? ?1% /dev

tmpfs ? ? ? ? ? ? ? ? ? ?233163 ? ? 1 ?233162 ? ?1% /dev/shm

tmpfs ? ? ? ? ? ? ? ? ? ?233163 ? 723 ?232440 ? ?1% /run

tmpfs ? ? ? ? ? ? ? ? ? ?233163 ? ?16 ?233147 ? ?1% /sys/fs/cgroup

/dev/sda1 ? ? ? ? ? ? ? ?524288 ? 327 ?523961 ? ?1% /boot

tmpfs ? ? ? ? ? ? ? ? ? ?233163 ? ? 1 ?233162 ? ?1% /run/user/0

#查看磁盤(pán)的使用量

[root@cots3 ~]# df -h

Filesystem ? ? ? ? ? ? ? Size ?Used Avail Use% Mounted on

/dev/mapper/centos-root ? 17G ?2.2G ? 15G ?13% /

devtmpfs ? ? ? ? ? ? ? ? 899M ? ? 0 ?899M ? 0% /dev

tmpfs ? ? ? ? ? ? ? ? ? ?911M ? ? 0 ?911M ? 0% /dev/shm

tmpfs ? ? ? ? ? ? ? ? ? ?911M ?9.5M ?902M ? 2% /run

tmpfs ? ? ? ? ? ? ? ? ? ?911M ? ? 0 ?911M ? 0% /sys/fs/cgroup

/dev/sda1 ? ? ? ? ? ? ? 1014M ?142M ?873M ?14% /boot

tmpfs ? ? ? ? ? ? ? ? ? ?183M ? ? 0 ?183M ? 0% /run/user/0

#擴(kuò)展:linux中ctime,mtime,atime的區(qū)別

ctime: 改變時(shí)間(change time)

mtime:修改時(shí)間(modification time)

改變和修改之間的區(qū)別在于是改文件的屬性還是更改它的內(nèi)容。chmod a-w myfile,那么這是一個(gè)改變

echo foo >> myfile,那么這是一個(gè)修改

改變是文件的索引節(jié)點(diǎn)發(fā)生了改變;修改是文本本身的內(nèi)容發(fā)生了變化

atime: 訪問(wèn)時(shí)間(access time)

訪問(wèn)時(shí)間是文件最后一次被讀取的時(shí)間。因此閱讀一個(gè)文件會(huì)更新它的訪問(wèn)時(shí)間,但是它的改變時(shí)間和修改時(shí)間并沒(méi)有變

ls -lc filename ? 列出文件的ctime

ls -lu filename ? 列出文件atime

ls -l ?fimename ? 列出文件的mtime


#2.2.文件類(lèi)型

#概述:在linux系統(tǒng)中,可以說(shuō)一切(包括目錄、普通文件、設(shè)備文件等)皆為文件。文件類(lèi)型包含有普通文件、目錄、字符設(shè)備文件、塊設(shè)備文件、符號(hào)鏈接文件、管道文件等等

#在ls -l 顯示文件屬性內(nèi)容后,第一列的第一個(gè)字符就是用來(lái)區(qū)分文件類(lèi)型的

#類(lèi)型種類(lèi)

d(directory) :? ?#表示一個(gè)目錄

-(regular file):?#表示一個(gè)普通文件

l(link): ? ? ? ? ? #表示一個(gè)符合鏈接文件

b(block):? ? ? ? #表示塊設(shè)備和其他外圍設(shè)備,是特殊類(lèi)型的文件

c(character):? ? #表示字符設(shè)備文件

s(socket):? ? ? ?#表示socket文件

p(name pipe):? ? #表示管道文件

#查找文件類(lèi)型參數(shù)命令 find /-type b/p/c

#例子:

#查找管道文件

[root@cots3 ~]# find / -type p

/run/dmeventd-client

/run/dmeventd-server

/run/systemd/inhibit/1.ref

/run/systemd/sessions/1.ref

/run/systemd/initctl/fifo

#查找塊設(shè)備文件

[root@cots3 ~]# find / -type b

/dev/dm-1

/dev/dm-0

/dev/sr0

/dev/sda2

/dev/sda1

/dev/sda

#普通文件(regular file)

[root@cots3 ~]# ls -l 1.txt

-rw-r--r-- 1 root root 104 Feb 29 09:43 1.txt

#可以通過(guò)ls -l來(lái)查看hosts的屬性,可以看到第一列內(nèi)容-rw-r--r--,值得注意的是第一個(gè)符號(hào)是-(英文字符減號(hào)),在linux中,以這樣的字符開(kāi)頭的文件就表示普通文件 這些文件一般都是用相關(guān)的應(yīng)用程序或系統(tǒng)命令創(chuàng)建。比如touch、cp、tar、echo、cat、>、>> 等工具命令。普通文件的刪除方式可以使用rm命令

#普通文件(regular file):第一個(gè)屬性為“-”, 按照文件內(nèi)容,又大略可以分為 :

1、純文本文件(asell ):文件內(nèi)容可以直接讀到數(shù)據(jù),例如:字母、數(shù)字等,可以用cat\命令讀文件,比如配置文件幾乎都是這種類(lèi)型的

2、二進(jìn)制文件(binary):linux中的命令程序就是屬于這種格式。例如cat命令就是一個(gè)二進(jìn)制文件

3、數(shù)據(jù)格式文件(data):有些程序在運(yùn)行的過(guò)程中會(huì)讀取某些特定格式的文件,那些特定格式的文件可以被稱為數(shù)據(jù)文件

#數(shù)據(jù)格式的例子:

例如linux在用戶登錄時(shí),都會(huì)將登陸的數(shù)據(jù)記錄在/var/log/wtmp(last命令的數(shù)據(jù)庫(kù)文件)那個(gè)文件內(nèi),該文件是一個(gè)數(shù)據(jù)文件,通過(guò)last命令讀出來(lái)(last 查看用戶登錄信息)。cat命令會(huì)讀出亂碼,因?yàn)樗麑儆谝环N特殊格式的文件。lastlog(/var/log/lastlog)

#字符設(shè)備或塊設(shè)備文件

#如果進(jìn)入/dev/目錄,列一下文件。會(huì)看到類(lèi)似如下的內(nèi)容:

[root@cots3 ~]# ls -la /dev/tty

crw-rw-rw- 1 root tty 5, 0 Mar ?4 22:07 /dev/tty

可以看到/dev/tty的屬性是crw-rw-rw-。注意前面第一個(gè)字符是c,這表示字符設(shè)備文件。字符設(shè)備就是串行端口的接口設(shè)備

#再看下面這個(gè)

[root@cots3 ~]# ls -la /dev/sda

brw-rw---- 1 root disk 8, 0 Mar ?4 22:07 /dev/sda

可以看到/dev/sda的屬性brw-rw-----,注意前面的第一個(gè)字符是b。這表示塊設(shè)備,塊設(shè)備就是存儲(chǔ)數(shù)據(jù)供系統(tǒng)及程序訪問(wèn)的接口設(shè)備。如硬盤(pán)、光驅(qū)等都屬于塊設(shè)備

創(chuàng)建一個(gè)字符設(shè)備

mknod oldbiy c 5 1

c 指字符設(shè)備

5 是該設(shè)備在majorh中定義的標(biāo)記

1 表示第一個(gè)子設(shè)備

#鏈接文件

find /etc/ -type l | xargs ls -l 查看/etc下的鏈接文件

#2.3.鏈接數(shù)

在linux系統(tǒng)中,鏈接可分為兩種:

一種為硬鏈接(hard link),另一種為軟鏈接或符號(hào)鏈接(symblic link or soft link)。ln這個(gè)命令就是創(chuàng)建鏈接文件的,在默認(rèn)不帶參數(shù)的情況下,執(zhí)行l(wèi)n命令創(chuàng)建的是硬鏈接。如果使用ln -s創(chuàng)建鏈接則為軟鏈接

#創(chuàng)建的格式

硬鏈接:ln 源文件 目標(biāo)文件

軟鏈接:ln -s 源文件 目標(biāo)文件 (目標(biāo)文件不能事先存在)

#硬鏈接

定義:

1、 硬鏈接是指通過(guò)索引節(jié)點(diǎn)(inode)來(lái)進(jìn)行鏈接。

2、在linux文件系統(tǒng)中,多個(gè)文件名指向同一個(gè)索引節(jié)點(diǎn)(inode)是正常且允許的。這種情況的文件就稱為硬鏈接。

3、硬鏈接的作用之一:

是允許一個(gè)文件擁有多個(gè)有效路徑名(多個(gè)入口),這樣用戶就可以建立硬鏈接到重要的文件,以防止“誤刪”源數(shù)據(jù))。

4、為什么一個(gè)文件建立了硬鏈接就會(huì)防止數(shù)據(jù)誤刪呢?

因?yàn)槲募到y(tǒng)(ext2)的原理是,

只要文件的索引節(jié)點(diǎn)(index inode)還有一個(gè)以上的硬鏈接,只刪除其中一個(gè)硬鏈接(即僅僅刪除了該文件的鏈接指向)。并不影響索引節(jié)點(diǎn)本身和其它的鏈接(即數(shù)據(jù)文件實(shí)體并未被刪除),只有當(dāng)文件的最后一個(gè)鏈接被刪除后,那個(gè)文件才是被刪掉了

#硬鏈接的創(chuàng)建

[root@cots3 ~]# ln 1.txt 11.txt

[root@cots3 ~]# ls -lhi 1.txt 11.txt

33865597 -rw-r--r-- 2 root root 104 Feb 29 09:43 11.txt

33865597 -rw-r--r-- 2 root root 104 Feb 29 09:43 1.txt

#軟鏈接

軟鏈接(soft link)也稱為符號(hào)鏈接(symbolic link)。

linux里的軟鏈接文件就類(lèi)似于window系統(tǒng)中的快捷方式,

linux里的軟鏈接文件實(shí)際上是一個(gè)特殊的文件,文件類(lèi)型是l。

#軟鏈接的創(chuàng)建

[root@cots3 ~]# ln -s /tools/apache2.2.17/ /tools/apache

[root@cots3 ~]# ls -ld /tools/apache

lrwxrwxrwx 1 root root 20 Mar ?5 00:00 /tools/apache -> /tools/apache 2.2.17/

#擴(kuò)展:Linux下文件刪除的原理

Linux是link的數(shù)量誺控制文件刪除的,只有當(dāng)一個(gè)文件不存在任何link的時(shí)候,文件才會(huì)被刪除,每個(gè)文件都有兩個(gè)link計(jì)數(shù)器:i_count和i_link

#2.4.用戶和組

#linux多用戶多任務(wù)介紹:linux/unix是一個(gè)多用戶、多任務(wù)的操作系統(tǒng),

#linux系統(tǒng)中用戶角色劃分:

linux系統(tǒng)中用戶是分角色的,對(duì)linux系統(tǒng)來(lái)說(shuō),用戶的角色是通過(guò)UID和GID識(shí)別的,特別是UID,在linux系統(tǒng)運(yùn)維工作中,一個(gè)UID是唯一標(biāo)識(shí)一個(gè)系統(tǒng)用戶的賬號(hào)(相當(dāng)于我們的身份證)。

用戶名相當(dāng)于我們的名字

UID (User ldentify) 中文用戶ID,相當(dāng)于我們的身份證,在系統(tǒng)中是唯一的

GID (Group ldentify)中文組ID,相當(dāng)于家庭或者學(xué)校

#用戶

#當(dāng)我們使用linux時(shí),需要以一個(gè)用戶的身份登入,一個(gè)進(jìn)程也需要以一個(gè)用戶的身份運(yùn)行, 用戶限制使用者或進(jìn)程可以使用、不可以使用哪些資源

用戶分類(lèi)

root用戶(根用戶、管理員賬戶、超級(jí)用戶) ?(ID為0的用戶為root用戶)

系統(tǒng)用戶 ?UID:1-999(centos7版本)

普通用戶 ?UID:1000+

#和用戶相關(guān)聯(lián)的四個(gè)文件

/ect/passwd -保存用戶信息

/ect/shadow -保存用戶密碼

/ect/group -保存組信息

/etc/gshadow -保存組的密碼信息


#/etc/passwd中每個(gè)字段的作用

如:root:x:0:0:root:/root:/bin/bash

1.root:用戶名

2.x:密碼占位符

3.0:UID

4.0:GID

5.root:用戶描述

6./root:用戶主目錄

7./bin/bash:登陸后使用的shell


#/etc/shadow結(jié)構(gòu)

如:root:I.m1XoRd0W8Pc7C........Phodj8ZM1: :0:99999:7: : :

1 root: 用戶名

2?I.m..M1: 被加密后的密碼

3 最近修改密碼的日期

4 0:密碼不能更改的天數(shù),0表示隨時(shí)可以修改

5 99999:密碼過(guò)期時(shí)間

6 7:密碼需要更改期限到來(lái)前7天發(fā)出警告

7 寬限天數(shù),密碼過(guò)期幾天后還能改密碼

8 賬號(hào)過(guò)期時(shí)間

9 保留

#用戶的創(chuàng)建,修改,刪除

#創(chuàng)建一個(gè)用戶

命令useradd用以創(chuàng)建一個(gè)新用戶

useradd+名字(如useradd test)

#修改用戶信息

命令usermod用來(lái)修改用戶信息

usermod+參數(shù)+你要修改的東西

usermod 參數(shù) ?username

#刪除用戶

命令userdel用以刪除指定用戶

userdel test ? ? ?(保留用戶的家目錄)

userdel -r test ? ? (同時(shí)刪除用戶的家目錄)


#用戶的相關(guān)文件

/etc/skel

/etc/login.defs

/etc/default/useradd

#用戶組

幾乎所有操作系統(tǒng)都有組的概念,通過(guò)組,我們可以更加方便的歸類(lèi)、管理用戶。一般來(lái)講,我們使用部門(mén)、職能或地理區(qū)域的分類(lèi)方式來(lái)創(chuàng)建使用組。

一每個(gè)組有一個(gè)組ID

二.組信息保存在/etc/group中

三.每個(gè)用戶擁有一個(gè)主組,同時(shí)還可以擁有最多31個(gè)附屬組

#創(chuàng)建、修改、刪除組

命令groupadd用以創(chuàng)建組:

groupadd+組名

命令groupmod用以修改組信息:

groupmod -n newname 原來(lái)的組name ?? #修改組名

groupmod -g newGid ? oldGid ? ? ?? #修改組ID

命令groupdel用以刪除組:

groupdel +組名


#2.5.文件大小

#如:給1.txt創(chuàng)建一個(gè)軟鏈接

[root@cots3 ~]# ln -s ?1.txt aa.txt

[root@cots3 ~]# ls -l aa.txt

lrwxrwxrwx 1 root root 5 Mar ?4 23:29 aa.txt -> 1.txt

#提示:創(chuàng)建軟鏈接的時(shí)候,文件的大小不一樣


#2.6.時(shí)間戳

#7、8、9三列是時(shí)間(默認(rèn)是修改時(shí)間)

modify 修改 對(duì)應(yīng)的是 -mtime 一般是修改文件內(nèi)容時(shí)候改變

change 改變時(shí)間 -ctime 文件屬性改變

access 訪問(wèn)時(shí)間 -atime 訪問(wèn)文件內(nèi)容時(shí)候改變

#示例:時(shí)間的變化

[root@cots3 ~]# touch guo.txt

[root@cots3 ~]# stat guo.txt

File: ‘guo.txt’

Size: 0 ? ? ? ? ? ? Blocks: 0 ? ? ? ? ?IO Block: 4096 ? regular empty file

Device: fd00h/64768d ? ?Inode: 33574991 ? ?Links: 1

Access: (0644/-rw-r--r--) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)

Access: 2020-03-04 23:26:28.523104035 -0500

Modify: 2020-03-04 23:26:28.523104035 -0500 ? ?#開(kāi)始時(shí)間

Change: 2020-03-04 23:26:28.523104035 -0500 ? ?#開(kāi)始時(shí)間

Birth: -

[root@cots3 ~]# echo aa > guo.txt

[root@cots3 ~]# stat guo.txt

File: ‘guo.txt’

Size: 3 ? ? ? ? ? ? Blocks: 8 ? ? ? ? ?IO Block: 4096 ? regular file

Device: fd00h/64768d ? ?Inode: 33574991 ? ?Links: 1

Access: (0644/-rw-r--r--) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)

Access: 2020-03-04 23:26:28.523104035 -0500

Modify: 2020-03-04 23:26:41.455206922 -0500 ? ? ?#時(shí)間變了

Change: 2020-03-04 23:26:41.455206922 -0500 ? ? ?#時(shí)間變了

Birth: -

#如果想要格式化屬性時(shí)間的話就使用

[root@cots3 ~]# ls -l --time-style=long-iso 1.txt

-rw-r--r-- 1 root root 104 2020-02-29 09:43 1.txt


#2.7.文件名

#文件名不在inode里,而是在上級(jí)目錄的Block里

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容