公眾號:老油條IT記
文件和目錄10項屬性目錄
1:索引節(jié)點:inode
2:文件類型
3:鏈接數(shù)
4:用戶
5:組
6:文件大小
7.8.9:時間戳
10:文件名
1.Linux文件
#概述
#1.linux里一切皆為文件
#2.Linux系統(tǒng)中的文件或目錄的屬性主要包括:inode(索引節(jié)點)载迄、文件類型岛啸、權(quán)限屬性徘钥、鏈接數(shù)变骡、所屬用戶和用戶組离赫、最近修改時間等內(nèi)容
#例如:執(zhí)行l(wèi)s -lhi ,會出現(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é)點編號(唯一的,像人的身份證)
第二列:文件類型及權(quán)限(共10個字符塌碌,第一字符為類型渊胸,后9個為文件權(quán)限)
第三列:硬鏈接數(shù)
第四列:文件或目錄所屬的用戶
第五列:文件或目錄所屬的組
第六列:文件或目錄的大小
第七、八誊爹、九列:時間戳
第十列:實際的文件或目錄名
#圖片講解
2.文件屬性詳細講解
#2.1索引節(jié)點:inode
#概述
#1.indoe蹬刷,中文意思是索引節(jié)點(index node)。在每個Linux存儲設(shè)置或存儲設(shè)備的分區(qū)被格式化為ext4文件系統(tǒng)之后频丘,一般會生成兩個部分办成,第一部分是inode,第二部分是block
#2.block是真正用來存儲實際數(shù)據(jù)的,如照片搂漠,視頻等普通文件數(shù)據(jù)迂卢,inode是用來存儲這些數(shù)據(jù)的屬性信息(也就是ls -l的結(jié)果),inode屬性信息包括不限于文件大小、屬主(用戶)而克、歸屬的用戶組靶壮、文件權(quán)限、文件類型员萍、修改時間腾降,但是inode里面不包含文件名
#3.inode除了記錄文件屬性的信息外,還會為每個文件信息索引碎绎,操作系統(tǒng)就會根據(jù)inode的值最快的找到相對應(yīng)的文件實體
#擴展: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號
[root@cots3 ~]# ls -di /etc/
16777281 /etc/
#inode的大小
#inode也會消耗硬盤空間,所以硬盤格式化的時候筋帖,操作系統(tǒng)自動將硬盤分成兩個區(qū)域 一個是數(shù)據(jù)區(qū)奸晴,存放文件數(shù)據(jù);另一個是inode區(qū)(inode table)日麸,存放inode所包含的信息
#查看磁盤空間是否滿了寄啼,由inode是否滿了和block是否滿了決定的,任何一個滿了代箭,都無法存放東西
#磁盤滿的特征(no space on device left)
#查看每個硬盤分區(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
#查看磁盤的使用量
[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
#擴展:linux中ctime,mtime,atime的區(qū)別
ctime: 改變時間(change time)
mtime:修改時間(modification time)
改變和修改之間的區(qū)別在于是改文件的屬性還是更改它的內(nèi)容嗡综。chmod a-w myfile走诞,那么這是一個改變
echo foo >> myfile,那么這是一個修改
改變是文件的索引節(jié)點發(fā)生了改變蛤高;修改是文本本身的內(nèi)容發(fā)生了變化
atime: 訪問時間(access time)
訪問時間是文件最后一次被讀取的時間蚣旱。因此閱讀一個文件會更新它的訪問時間,但是它的改變時間和修改時間并沒有變
ls -lc filename ? 列出文件的ctime
ls -lu filename ? 列出文件atime
ls -l ?fimename ? 列出文件的mtime
#2.2.文件類型
#概述:在linux系統(tǒng)中戴陡,可以說一切(包括目錄塞绿、普通文件、設(shè)備文件等)皆為文件恤批。文件類型包含有普通文件异吻、目錄、字符設(shè)備文件喜庞、塊設(shè)備文件诀浪、符號鏈接文件、管道文件等等
#在ls -l 顯示文件屬性內(nèi)容后延都,第一列的第一個字符就是用來區(qū)分文件類型的
#類型種類
d(directory) :? ?#表示一個目錄
-(regular file):?#表示一個普通文件
l(link): ? ? ? ? ? #表示一個符合鏈接文件
b(block):? ? ? ? #表示塊設(shè)備和其他外圍設(shè)備雷猪,是特殊類型的文件
c(character):? ? #表示字符設(shè)備文件
s(socket):? ? ? ?#表示socket文件
p(name pipe):? ? #表示管道文件
#查找文件類型參數(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
#可以通過ls -l來查看hosts的屬性,可以看到第一列內(nèi)容-rw-r--r--晰房,值得注意的是第一個符號是-(英文字符減號)求摇,在linux中射沟,以這樣的字符開頭的文件就表示普通文件 這些文件一般都是用相關(guān)的應(yīng)用程序或系統(tǒng)命令創(chuàng)建。比如touch与境、cp验夯、tar、echo摔刁、cat挥转、>、>> 等工具命令共屈。普通文件的刪除方式可以使用rm命令
#普通文件(regular file):第一個屬性為“-”扁位, 按照文件內(nèi)容,又大略可以分為 :
1趁俊、純文本文件(asell ):文件內(nèi)容可以直接讀到數(shù)據(jù),例如:字母刑然、數(shù)字等寺擂,可以用cat\命令讀文件,比如配置文件幾乎都是這種類型的
2泼掠、二進制文件(binary):linux中的命令程序就是屬于這種格式怔软。例如cat命令就是一個二進制文件
3、數(shù)據(jù)格式文件(data):有些程序在運行的過程中會讀取某些特定格式的文件择镇,那些特定格式的文件可以被稱為數(shù)據(jù)文件
#數(shù)據(jù)格式的例子:
例如linux在用戶登錄時挡逼,都會將登陸的數(shù)據(jù)記錄在/var/log/wtmp(last命令的數(shù)據(jù)庫文件)那個文件內(nèi)腻豌,該文件是一個數(shù)據(jù)文件家坎,通過last命令讀出來(last 查看用戶登錄信息)。cat命令會讀出亂碼吝梅,因為他屬于一種特殊格式的文件虱疏。lastlog(/var/log/lastlog)
#字符設(shè)備或塊設(shè)備文件
#如果進入/dev/目錄,列一下文件苏携。會看到類似如下的內(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-做瞪。注意前面第一個字符是c,這表示字符設(shè)備文件右冻。字符設(shè)備就是串行端口的接口設(shè)備
#再看下面這個
[root@cots3 ~]# ls -la /dev/sda
brw-rw---- 1 root disk 8, 0 Mar ?4 22:07 /dev/sda
可以看到/dev/sda的屬性brw-rw-----装蓬,注意前面的第一個字符是b。這表示塊設(shè)備纱扭,塊設(shè)備就是存儲數(shù)據(jù)供系統(tǒng)及程序訪問的接口設(shè)備牍帚。如硬盤、光驅(qū)等都屬于塊設(shè)備
創(chuàng)建一個字符設(shè)備
mknod oldbiy c 5 1
c 指字符設(shè)備
5 是該設(shè)備在majorh中定義的標(biāo)記
1 表示第一個子設(shè)備
#鏈接文件
find /etc/ -type l | xargs ls -l 查看/etc下的鏈接文件
#2.3.鏈接數(shù)
在linux系統(tǒng)中乳蛾,鏈接可分為兩種:
一種為硬鏈接(hard link)履羞,另一種為軟鏈接或符號鏈接(symblic link or soft link)峦萎。ln這個命令就是創(chuàng)建鏈接文件的,在默認不帶參數(shù)的情況下忆首,執(zhí)行l(wèi)n命令創(chuàng)建的是硬鏈接爱榔。如果使用ln -s創(chuàng)建鏈接則為軟鏈接
#創(chuàng)建的格式
硬鏈接:ln 源文件 目標(biāo)文件
軟鏈接:ln -s 源文件 目標(biāo)文件 (目標(biāo)文件不能事先存在)
#硬鏈接
定義:
1、 硬鏈接是指通過索引節(jié)點(inode)來進行鏈接糙及。
2详幽、在linux文件系統(tǒng)中,多個文件名指向同一個索引節(jié)點(inode)是正常且允許的浸锨。這種情況的文件就稱為硬鏈接唇聘。
3、硬鏈接的作用之一:
是允許一個文件擁有多個有效路徑名(多個入口)柱搜,這樣用戶就可以建立硬鏈接到重要的文件迟郎,以防止“誤刪”源數(shù)據(jù))。
4聪蘸、為什么一個文件建立了硬鏈接就會防止數(shù)據(jù)誤刪呢宪肖?
因為文件系統(tǒng)(ext2)的原理是,
只要文件的索引節(jié)點(index inode)還有一個以上的硬鏈接健爬,只刪除其中一個硬鏈接(即僅僅刪除了該文件的鏈接指向)控乾。并不影響索引節(jié)點本身和其它的鏈接(即數(shù)據(jù)文件實體并未被刪除),只有當(dāng)文件的最后一個鏈接被刪除后娜遵,那個文件才是被刪掉了
#硬鏈接的創(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)也稱為符號鏈接(symbolic link)蜕衡。
linux里的軟鏈接文件就類似于window系統(tǒng)中的快捷方式,
linux里的軟鏈接文件實際上是一個特殊的文件设拟,文件類型是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/
#擴展:Linux下文件刪除的原理
Linux是link的數(shù)量誺控制文件刪除的,只有當(dāng)一個文件不存在任何link的時候纳胧,文件才會被刪除镶骗,每個文件都有兩個link計數(shù)器:i_count和i_link
#2.4.用戶和組
#linux多用戶多任務(wù)介紹:linux/unix是一個多用戶、多任務(wù)的操作系統(tǒng)躲雅,
#linux系統(tǒng)中用戶角色劃分:
linux系統(tǒng)中用戶是分角色的鼎姊,對linux系統(tǒng)來說,用戶的角色是通過UID和GID識別的相赁,特別是UID相寇,在linux系統(tǒng)運維工作中,一個UID是唯一標(biāo)識一個系統(tǒng)用戶的賬號(相當(dāng)于我們的身份證)钮科。
用戶名相當(dāng)于我們的名字
UID (User ldentify) 中文用戶ID唤衫,相當(dāng)于我們的身份證,在系統(tǒng)中是唯一的
GID (Group ldentify)中文組ID绵脯,相當(dāng)于家庭或者學(xué)校
#用戶
#當(dāng)我們使用linux時佳励,需要以一個用戶的身份登入休里,一個進程也需要以一個用戶的身份運行, 用戶限制使用者或進程可以使用赃承、不可以使用哪些資源
用戶分類
root用戶(根用戶妙黍、管理員賬戶、超級用戶) ?(ID為0的用戶為root用戶)
系統(tǒng)用戶 ?UID:1-999(centos7版本)
普通用戶 ?UID:1000+
#和用戶相關(guān)聯(lián)的四個文件
/ect/passwd -保存用戶信息
/ect/shadow -保存用戶密碼
/ect/group -保存組信息
/etc/gshadow -保存組的密碼信息
#/etc/passwd中每個字段的作用
如: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表示隨時可以修改
5 99999:密碼過期時間
6 7:密碼需要更改期限到來前7天發(fā)出警告
7 寬限天數(shù)拭嫁,密碼過期幾天后還能改密碼
8 賬號過期時間
9 保留
#用戶的創(chuàng)建,修改抓于,刪除
#創(chuàng)建一個用戶
命令useradd用以創(chuàng)建一個新用戶
useradd+名字(如useradd test)
#修改用戶信息
命令usermod用來修改用戶信息
usermod+參數(shù)+你要修改的東西
usermod 參數(shù) ?username
#刪除用戶
命令userdel用以刪除指定用戶
userdel test ? ? ?(保留用戶的家目錄)
userdel -r test ? ? (同時刪除用戶的家目錄)
#用戶的相關(guān)文件
/etc/skel
/etc/login.defs
/etc/default/useradd
#用戶組
幾乎所有操作系統(tǒng)都有組的概念做粤,通過組,我們可以更加方便的歸類捉撮、管理用戶怕品。一般來講,我們使用部門巾遭、職能或地理區(qū)域的分類方式來創(chuàng)建使用組肉康。
一每個組有一個組ID
二.組信息保存在/etc/group中
三.每個用戶擁有一個主組,同時還可以擁有最多31個附屬組
#創(chuàng)建恢总、修改、刪除組
命令groupadd用以創(chuàng)建組:
groupadd+組名
命令groupmod用以修改組信息:
groupmod -n newname 原來的組name ?? #修改組名
groupmod -g newGid ? oldGid ? ? ?? #修改組ID
命令groupdel用以刪除組:
groupdel +組名
#2.5.文件大小
#如:給1.txt創(chuàng)建一個軟鏈接
[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)建軟鏈接的時候睬愤,文件的大小不一樣
#2.6.時間戳
#7片仿、8、9三列是時間(默認是修改時間)
modify 修改 對應(yīng)的是 -mtime 一般是修改文件內(nèi)容時候改變
change 改變時間 -ctime 文件屬性改變
access 訪問時間 -atime 訪問文件內(nèi)容時候改變
#示例:時間的變化
[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 ? ?#開始時間
Change: 2020-03-04 23:26:28.523104035 -0500 ? ?#開始時間
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 ? ? ?#時間變了
Change: 2020-03-04 23:26:41.455206922 -0500 ? ? ?#時間變了
Birth: -
#如果想要格式化屬性時間的話就使用
[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里尤辱,而是在上級目錄的Block里