Linux一切皆文件:
Llinux系統(tǒng)的文件或目錄的屬性主要包括:索引節(jié)點、文件類型搜贤、文件權限、鏈接數(shù)苞尝、所屬的用戶和用戶組帝牡、最近修改時間等。
Llinux文件屬性及權限圖形說明:
Linux文件屬性及權限補充說明:
第一列:inode索引結點
inode (index node)概述
????????????一個硬盤需要存放數(shù)據(jù)抓歼,首先分區(qū),再格式化(格式化會創(chuàng)建文件系統(tǒng)類型),最后就可以存儲數(shù)據(jù)掩浙。Linux的文件系統(tǒng)類型一般有ext2/ext3/ext4等類型。在每個linux存儲設備或存儲分區(qū)被格式化創(chuàng)建成ext4(CentOS 6.7)文件系統(tǒng)后启泣,創(chuàng)建文件系統(tǒng)一般生成兩部分:第一部分inode涣脚,第二部分是block。inode用來存儲文件屬性及信息索引(指向文件實體,但文件名稱不包含在inode)寥茫,block用來存放實際的數(shù)據(jù)使用(例如文字遣蚀、照片、視頻等普通文件數(shù)據(jù))纱耻。inode是一塊存儲空間芭梯,CentOS 6非啟動分區(qū)inode默認大小為256字節(jié),CentOS 5 默認大小為128字節(jié)弄喘。正常情況下玖喘,一個文件只能占用一個inode,如果兩個文件的inode相同則說明是這兩個文件是互為硬鏈接,也可以是多個文件蘑志。inode節(jié)點的總數(shù)一般在格式化時就給定累奈。
查看系統(tǒng)分區(qū)及文件類型
[root@oldboy test]# df -Th
Filesystem???? Type??Size? Used Avail Use% Mounted on
/dev/sda3????? ext4??8.8G? 1.4G? 7.0G?17% /
tmpfs????????? tmpfs?491M???? 0? 491M??0% /dev/shm
/dev/sda1????? ext4??190M?? 36M? 145M?20% /boot
查看指定文件inode
[root@oldboy test]# stat file.txt
?File: `file.txt'
?Size: 0???????? ????? Blocks: 0????????? IO Block: 4096?? regular empty file
Device: 803h/2051d????? Inode: 139792????? Links:1
Access: (0644/-rw-r--r--)? Uid: (???0/??? root)?? Gid: (???0/??? root)
Access: 2018-11-13 16:58:45.989909373 +0800
Modify: 2018-11-13 16:58:45.989909373 +0800
Change: 2018-11-13 16:58:45.989909373 +0800
[root@oldboy test]# ls -lih file.txt
139792 -rw-r--r-- 1 root root 0 Nov 1316:58 file.txt
查看系統(tǒng)分區(qū)inode使用情況
[root@oldboy test]# df -i
Filesystem???? Inodes IUsed? IFree IUse% Mounted on
/dev/sda3????? 593344 55764 537580?? 10% /
tmpfs????????? 125596???? 1 125595???1% /dev/shm
/dev/sda1?????? 51200???38? 51162??? 1% /boot
[root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "inode
count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count:????????????? 593344
不同CentOS版本inode大小不同(boot分區(qū)默認是128字節(jié))
[root@localhost test]# cat /etc/redhat-release
CentOS release 5.5 (Final)
[root@localhost test]# dumpe2fs /dev/sda1 | grep -i "inode
size"
dumpe2fs 1.39 (29-May-2006)
Inode size:??????????? ? 128
[root@localhost test]# dumpe2fs /dev/sda3 | grep -i "inode
size"
dumpe2fs 1.39 (29-May-2006)
Inode size:??????????? ? 128
[root@oldboy test]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@oldboy test]# df -h
Filesystem????? Size?Used Avail Use% Mounted on
/dev/sda3?????? 8.8G?1.4G? 7.0G? 17% /
tmpfs?????????? 491M???? 0?491M?? 0% /dev/shm
/dev/sda1?????? 190M??36M? 145M? 20% /boot
[root@oldboy test]# dumpe2fs /dev/sda1 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:???? ????????? 128
[root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:???? ????????? 256
block概述
????????????linux存儲設備或存儲分區(qū)被格式化創(chuàng)建成ext4(CentOS 6.7)文件系統(tǒng)后,創(chuàng)建文件系統(tǒng)一般生成兩部分:第一部分inode急但,第二部分是block澎媒。inode前面已講述,波桩。了解block先了解sector(扇區(qū))戒努。硬盤的最小存儲單位:sector(扇區(qū)),每個扇區(qū)儲存512字節(jié)镐躲,操作系統(tǒng)會一次性連續(xù)讀取多個扇區(qū)储玫,即一次性讀取多個扇區(qū)稱為一個block(塊),文件存取的最小單位:block(塊)萤皂,由多個扇區(qū)組成撒穷;block的大小常見的有1KB、2KB敌蚜、4KB桥滨,在linux中常見設置為4KB窝爪,即連續(xù)8個扇區(qū)組成一個block,/boot分區(qū)的block一般為1KB齐媒。系統(tǒng)創(chuàng)建一個文件或者文件占大小一次固定分配4K(8個扇區(qū)蒲每,每個扇區(qū)512B)
查看每個分區(qū)的sector大小
[root@oldboy test]# df -l
Filesystem???? 1K-blocks??? Used Available Use% Mounted on
/dev/sda3???????9213440 1440588?? 7298180?17% /
tmpfs???????????? 502384?????? 0???502384?? 0% /dev/shm
/dev/sda1???????? 194241?? 35992???148009? 20% /boot
[root@oldboy test]#
查看分區(qū)指定的block大小
[root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:?????????????? 4096
[root@oldboy test]# dumpe2fs /dev/sda1 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:?????????????? 1024
查看指定分區(qū)的扇區(qū)、磁道喻括、柱面邀杏、磁頭等信息,磁盤的容量=磁頭*磁道*扇區(qū)(512B)*柱面
[root@oldboy test]# fdisk -l? /dev/sda3
Disk /dev/sda3: 9721 MB, 9721348096 bytes
255 heads, 63 sectors/track, 1181 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x00000000
第二列:文件類型及權限
????????????文件類型及權限共有10個字符組成(第一個字符代表文件類型唬血、后面9個字符代表文件權限)望蜡,假如把SElinux開啟,文件類型及權限共有11個字符(第一個字符代表文件類型拷恨、第2個到第10個字符代表文件權限脖律,第11個字符與selinux有關系,一般用不到)
******第一個字符******
Linux的文件類型
在linux系統(tǒng)中腕侄,可以說一切設備(包括目錄小泉、普通文件等)皆文件。文件類型包含有普通文件冕杠、目錄微姊、字符設備文件、塊設備文件分预、符號鏈接文件兢交、管道文件等等
1、d(directory)表示目錄
[root@oldboy test]# ls -l /test/ | grep "^d"
drwxr-xr-x 2 root root 4096 Nov 14 19:24dir1
drwxr-xr-x 2 root root 4096 Nov 14 19:24dir2
drwxr-xr-x 2 root root 4096 Nov 14 19:24dir3
[root@oldboy test]# ls -ld /test/*
drwxr-xr-x 2 root root 4096 Nov 14 19:24/test/dir1
drwxr-xr-x 2 root root 4096 Nov 14 19:24/test/dir2
drwxr-xr-x 2 root root 4096 Nov 14 19:24/test/dir3
2笼痹、-? (regular file) 普通文件
(1)配喳、純文本文件(ascll)文件內(nèi)容可以直接讀到的數(shù)據(jù),例如:字母凳干、數(shù)字界逛、特殊字條串等,可以用cat命令讀取的文纺座,比如配置文件幾乎都是這種類型。
[root@oldboy test]# file file.txt
file.txt: ASCII text
(2)溉潭、二進制文件(binary)linux中的命令程序就屬于這個格式净响。例如cat 命令就是一個二進制文件。
[root@oldboy test]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64,version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18,stripped
(3)喳瓣、數(shù)據(jù)格式文件(data)有些程序運行過程中會讀取某些特定格式的文件馋贤,那些特定格式的文件可以被稱為數(shù)據(jù)文件。例如:linux 在用戶登錄時都會將登錄數(shù)據(jù)記錄在/var/log/wtmp 那個文件內(nèi),該文件是一個數(shù)據(jù)文件畏陕,通過last命令讀出來配乓。/var/log/lastlog也是一個數(shù)據(jù)文件,可以使用lastlog命令讀出來。cat命令讀取會是亂碼犹芹,因為他屬于一種特殊格式的文件崎页。file 命令也可以查看文件類型
[root@oldboy test]# file /var/log/wtmp
/var/log/wtmp: data
3、l (link)鏈接文件(一般指得是軟鏈接文件或符號鏈接)
[root@oldboy test]# ls -l /mnt/file_hard_link.txt
lrwxrwxrwx 1 root root 14 Nov 14 19:38/mnt/file_hard_link.txt -> /test/file.txt
[root@oldboy test]# readlink /mnt/file_hard_link.txt
/test/file.txt
4腰埂、b(block)塊設備和其它外圍設備飒焦,是特殊類型的文件
[root@oldboy ~]# find /dev/ -type b | xargs ls -l | head -3
brw-rw---- 1 root disk?? 7,? 0Nov 12 23:12 /dev/loop0
brw-rw---- 1 root disk?? 7,? 1Nov 12 23:12 /dev/loop1
brw-rw---- 1 root disk?? 7,? 2Nov 12 23:12 /dev/loop2
5、c? (character)字符設備文件(一般是指串設備或終端設備等)
[root@oldboy ~]# find /dev/ -type c | xargs ls -l | head -3
crw-rw---- 1 root video??? 10, 175 Nov 12 23:12 /dev/agpgart
crw-rw---- 1 root root??? 251,??0 Nov 12 23:12 /dev/bsg/0:0:0:0
crw-rw---- 1 root root??? 251,??1 Nov 12 23:12 /dev/bsg/2:0:0:0
6屿笼、s(socket)套接字文件
[root@oldboy ~]# find /dev/ -type s | xargs ls -l | head -3
srw-rw-rw- 1 root root 0 Nov 12 23:12/dev/log
7牺荠、p(named pipe)管道文件
[root@oldboy ~]# find /var/spool/postfix/public/ -type p | xargs ls -l
prw--w--w- 1 postfix postfix 0 Nov 14 19:52/var/spool/postfix/public/pickup
prw--w--w- 1 postfix postfix 0 Nov 14 19:48/var/spool/postfix/public/qmgr
Linux下擴展名的作用
在linux中,雖然擴展名沒什么實際意義驴一,但為了兼容windows休雌,同時方便我們多數(shù)習慣了windows用戶區(qū)分文件的不同,所以還是習慣通過擴展名來表示不同的文件類型肝断,例如:
1杈曲、.tar\.tar.gz\.tgz\.zip\.tar.bz表示壓縮文件,創(chuàng)建命令一般為tar\gzip\unzip等
2孝情、.sh表示shell腳本文件鱼蝉,通過shell語言開發(fā)的程序
3、.pl表示perl語言文件箫荡,通過perl語言開發(fā)的程序
4魁亦、.py表示python語言文件,通過python語言開發(fā)的程序
5羔挡、.html\.htm\.php\.jsp\.do表示網(wǎng)頁語言文件
6洁奈、.conf表示系統(tǒng)配置文件
7、.rpm表示rpm安裝包文件
******后面9個字符******
第三列:硬鏈接個數(shù)
文件鏈接分為兩種绞灼,硬鏈接和軟鏈接(符號鏈接)利术。
硬鏈接文件與軟鏈接訪問圖形說明:
? ??????軟鏈接(符號鏈接)可以看作是windows的快捷方式,可以讓你快速找到目標文件低矮,只是一個普通的文件印叁,但軟鏈接文件跟實際的原文件inode是不相同,軟鏈接可以針對文件和目錄進行創(chuàng)建军掂。
????????硬鏈接是通過原文件的索引節(jié)點進行鏈接的文件轮蜕,也可以理解為通過原文件inode復制出來的一個文件。硬鏈接和原文件的inode索引節(jié)點是相同的蝗锥,硬鏈接只可以針對文件進行創(chuàng)建跃洛,目錄創(chuàng)建不了(系統(tǒng)限制)。每個創(chuàng)建的目錄會自動創(chuàng)建兩個硬鏈接.和..可通過ls –a查看
鏈接創(chuàng)建命令
ln?? ????原文件?? 目標文件????? ##創(chuàng)建硬鏈接命令
ln?-s?? 原文件?? 目標文件???? ##創(chuàng)建軟鏈接命令
硬鏈接創(chuàng)建
[root@oldboy test]# touch file
[root@oldboy test]# echo "testfile" > file
[root@oldboy test]# cat file
testfile
[root@oldboy test]# ln file file_hard_link
[root@oldboy test]# ls -lih
total 0
140988 -rw-r--r-- 2 root root 0 Nov 1501:51 file
140988 -rw-r--r-- 2 root root 0 Nov 1501:51 file_hard_link
[root@oldboy test]# cat file_hard_link
testfile
[root@oldboy test]# mkdir dir
[root@oldboy test]# ls -ld dir/
drwxr-xr-x 2 root root 4096 Nov 15 01:52dir/
[root@oldboy test]# ls -lid dir/ dir/.
140989 drwxr-xr-x 2 root root 4096 Nov 1501:52 dir/
140989 drwxr-xr-x 2 root root 4096 Nov 1501:52 dir/.
軟鏈接創(chuàng)建
[root@oldboy test]# touch file
[root@oldboy test]# echo "testfile" > file
[root@oldboy test]# cat file
testfile
[root@oldboy test]# ln -s file file_soft_link
[root@oldboy test]# ls -li
total 4
140988 -rw-r--r-- 1 root root 9 Nov 1501:57 file
140989 lrwxrwxrwx 1 root root 4 Nov 1501:57 file_soft_link -> file
[root@oldboy test]# cat file_soft_link
testfile
第四列:文件或目錄所屬用戶(用戶)
第五列:文件或目錄所屬用戶組(用戶組)
????????????Linux/Unix是一個多用戶终议、多任務的操作系統(tǒng)同汇竭,在linux系統(tǒng)系統(tǒng)用戶是分角色的葱蝗,linux系統(tǒng)中,由于角色不同细燎,權限和所完成的任務也不同两曼,用戶的角色是通過UID和GID識別的,特別是UID找颓,在linux系統(tǒng)中合愈,一個UID是唯一標識系統(tǒng)用戶的賬號(相當于我們的身份證)。用戶的系統(tǒng)賬號的名稱(如oldboy)其實給人(管理員)看的击狮,linu系統(tǒng)能夠識別的僅僅是UID和GID這樣的數(shù)字佛析。用戶UID就相當于我們的身份證一樣,用戶名就相當于我們的名字彪蓬。
UID(User Identify)? 中文用戶ID寸莫,相當于各位的身份證,在系統(tǒng)中是唯一的
GIP(Group Identify)中文組ID档冬,相當于各位的家庭或者你們的學校ID
Linux系統(tǒng)分為三類用戶:
1膘茎、超級用戶root
root(超級管理員),UID為0酷誓,擁有最高的權限披坏,類似windows系統(tǒng)的administrator本地管理員。root可以使用sudo管理提權給普通用戶使用盐数,相當于分配特殊權限給普通用戶使用棒拂。
2、虛擬用戶
虛擬用戶玫氢,UID為1~499帚屉,虛擬用戶一般與系統(tǒng)和程序服務相關,一般是默認不能登錄系統(tǒng)使用漾峡。
3攻旦、普通用戶
一般是由具備系統(tǒng)管理員root權限用戶所創(chuàng)建,UID為500~65534生逸,這類用戶的權限會受到一定的基本權限限制牢屋,一般來自具備管理員用戶的限制。
查看用戶UID和GID命令
[root@oldboy ~]# id oldboy
uid=500(oldboy) gid=500(oldboy)groups=500(oldboy)
當創(chuàng)建一個用戶槽袄,以下配置文件會被修改
用戶配置文件????????/etc/passwd
用戶密碼配置文件????/etc/shadow
用戶組配置文件??????/etc/group
用戶組密碼配置文件??/etc/gshadow
1伟阔、用戶配置文件/etc/passwd是系統(tǒng)識別用戶的一個文件,系統(tǒng)所有用戶都記錄在這里/etc/passwd 文件中掰伸,每一行代表一個用戶的信息,分別有7個字段怀估,使用冒號 :分隔狮鸭,每個字段的含義合搅,如下圖所示:
2、用戶密碼配置文件/etc/shadow是系統(tǒng)用戶密碼配置文件歧蕉,與用戶配置文件/etc/passwd中x字段的占位符相對應灾部,記錄著用戶密碼等相關記錄。/etc/shadow文件中惯退,每一行代表一個用戶的密碼相關信息赌髓,分別9個字段,使用冒號 : 分隔催跪,每個字段含義如下圖所示:
3锁蠕、用戶組配置文件/etc/group記錄用戶組相關信息。/etc/group文件中懊蒸,每一行代表一個用戶組信息荣倾,分別4個字段,使用冒號 : 分隔骑丸,每個字段含義如下圖所示:
4舌仍、用戶組密碼配置文件/etc/gshadow與用戶配置文件/etc/group中x占位符相對應,記錄用戶組密碼相關信息通危。/etc/gshadow分別有4個字段铸豁,使用冒號: 分隔,每個字段的含義如下圖所示:
第六菊碟、七节芥、八列:文件大小及文件的修改時間
文件時間戳分三種:
modify??修改時間? find命令對應選項? -mtime?? 一般修改文件內(nèi)容
change??改變時間? find命令對應選項? -ctime?? 文件的屬性改變
access???訪問時間? find命令對應選項? -actime? 訪問文件內(nèi)容
格式化時間:
[root@oldboy ~]# ls -l
total 44
-rw-------. 1 root root? 1139 Sep?7 17:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 22179 Sep? 7 17:18 install.log
-rw-r--r--. 1 root root? 5890 Sep?7 17:16 install.log.syslog
drwxr-xr-x?2 root root? 4096 Nov 14 18:18test
[root@oldboy ~]# ls -l --time-style=long-iso
total 44
-rw-------. 1 root root? 1139 2018-09-07 17:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 22179 2018-09-07 17:18install.log
-rw-r--r--. 1 root root? 5890 2018-09-07 17:16 install.log.syslog
drwxr-xr-x?2 root root? 4096 2018-11-14 18:18test
修改時間戳命令:
[root@oldboy ~]# stat install.log
?File: `install.log'
?Size: 22179???? ????? Blocks: 56???????? IO Block: 4096? ?regular file
Device: 803h/2051d????? Inode: 13????????? Links:1
Access: (0644/-rw-r--r--)? Uid: (???0/??? root)?? Gid: (???0/??? root)
Access: 2018-09-07 17:12:50.634999903 +0800
Modify: 2018-09-07 17:18:05.290999679 +0800
Change: 2018-09-07 17:18:18.479999676 +0800
[root@oldboy test]# touch file.txt
[root@oldboy test]# echo "testfile" > file.txt
[root@oldboy test]# stat file.txt
?File: `file.txt'
?Size: 9???????? ????? Blocks: 8????????? IO Block: 4096?? regular file
Device: 803h/2051d????? Inode: 140987????? Links:1
Access: (0644/-rw-r--r--)? Uid: (???0/??? root)?? Gid: (???0/??? root)
Access: 2018-11-17 13:33:09.362803892 +0800
Modify: 2018-11-17 13:33:57.626808703 +0800
Change: 2018-11-17 13:33:57.626808703 +0800
[root@oldboy test]# cat file.txt
testfile
[root@oldboy test]# stat file.txt
?File: `file.txt'
?Size: 9???????? ????? Blocks: 8????????? IO Block: 4096?? regular file
Device: 803h/2051d????? Inode: 140987????? Links:1
Access: (0644/-rw-r--r--)? Uid: (???0/??? root)?? Gid: (???0/??? root)
Access: 2018-11-17 13:34:13.969814896 +0800
Modify: 2018-11-17 13:33:57.626808703 +0800
Change: 2018-11-17 13:33:57.626808703 +0800
[root@oldboy test]# chown oldboy.oldboy file.txt
[root@oldboy test]# stat file.txt
?File: `file.txt'
?Size: 9???????? ????? Blocks: 8????????? IO Block: 4096?? regular file
Device: 803h/2051d????? Inode: 140987????? Links:1
Access: (0644/-rw-r--r--)? Uid: (?500/? oldboy)?? Gid: (?500/? oldboy)
Access: 2018-11-17 13:34:13.969814896 +0800
Modify: 2018-11-17 13:33:57.626808703 +0800
Change: 2018-11-17 13:34:38.519806714 +0800
第九列:文件名(特殊)
注意:文件名不包含在文件inode里,而是在上級目錄的block里
查看文件和目錄
[root@oldboy ~]# ls -lF
total 56
-rw-------. 1 root root? 1139 Sep?7 17:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 22179 Sep? 7 17:18 install.log
-rw-r--r--. 1 root root? 5890 Sep?7 17:16 install.log.syslog
-rw-r--r--?1 root root 10240 Nov 17 18:10 pack.tar
drwxr-xr-x?2 root root? 4096 Nov 17 17:47test/