公眾號(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里