1. 程式人生 > >linux文件和目錄的屬性及硬鏈接與軟連接

linux文件和目錄的屬性及硬鏈接與軟連接

重要 sds 工作 trying 進行 理解 index bash 表示

1.文件屬性概述

linux系統中的文件或目錄的屬性主要包括:索引節點(inode)、文件類型、權限屬性、鏈接數、所歸屬的用戶和用戶組、最近修改的時間等內容。

我們用ls –lhi命令查看一下結果,也可以用stat詳細查看文件屬性。

[root@linzhongniao ~]# ls -lhi
total 92K
400420 -rw-------. 1 root root 1.1K Jun 14 05:02 anaconda-ks.cfg
400431 -rw-r--r--. 1 root root  112 Jul 16  2018 chuangjianrizhi.sh
404480 -rw-r--r--. 1 root root   52 Jul 17  2018 ddd.txt
404166 drwxr-xr-x. 2 root root 4.0K Jun 28 09:15 Desktop
404170 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Documents
404167 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Downloads
390867 -rw-r--r--. 1 root root  292 Jun 20 01:00 ett.txt
390147 -rw-r--r--. 1 root root  20K Jun 14 05:02 install.log
390148 -rw-r--r--. 1 root root 5.8K Jun 14 05:01 install.log.syslog
390809 drwxr-xr-x. 7 root root 4.0K Jul 12 10:26 linzhongniao
404481 -rw-r--r--. 1 root root   41 Jul  8 13:41 linzhongniao.txt
404171 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Music
404172 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Pictures
404169 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Public
390873 -rw-r--r--. 1 root root0 Jul  3 09:09 sdsd.txt
400406 -rw-r--r--. 1 root root  297 Jul 11 14:26 sss.txt
404168 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Templates
404173 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Videos

技術分享圖片

技術分享圖片

2.索引節點inode

2.1 inode概述

Inode中文意思是索引節點(index node)。在每個linux存儲設備或存儲設備的分區(存儲設備可以是硬盤、軟盤、U盤)被格式化為ext4文件系統後,一般有兩個部分:第一個部分是Inode(很多個),第二部分是Block(很多個)。inode節點號相同的文件,互為硬鏈接文件,可以認為是一個文件的不同入口。

Block是用來存儲實際數據的,而Inode就是用來存儲文件屬性的。Inode的屬性信息包括文件大小、屬主、文件的權限、文件類型、修改時間。還包含指向文件實體block的指針。但是Inode裏面唯獨不包括文件名。

技術分享圖片

2.2查看文件系統Inode大小

因為Inode要存放文件的屬性信息,所以inode是有大小的,不同的Inode大小是不一樣的。inode的大小在分區被格式化創建文件系統後定下來了,格式化以後就不能改變inode的大小,格式化前可以用-i參數指定inode的大小。

查看每個分區的inode大小,先查看系統分區

技術分享圖片

[root@linzhongniao ~]# dumpe2fs /dev/sda1|grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:   128
[root@linzhongniao ~]# dumpe2fs /dev/sda2|grep -i "inode size" 
dumpe2fs 1.41.12 (17-May-2010)
Inode size:   256
[root@linzhongniao ~]# dumpe2fs /dev/sda3|grep -i "inode size" 
dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda3 《==sda3是swap訪問不了,可以用df –h查看
[root@linzhongniao ~]# dumpe2fs /dev/sda4|grep -i "inode size" 
dumpe2fs 1.41.12 (17-May-2010)
Inode size:   256

2.3查看文件系統inode總量以及剩余量

用df –i查看

技術分享圖片

2.4查看磁盤使用量

[root@linzhongniao ~]# df -h
Filesystem  Size  Used Avail Use% Mounted on
/dev/sda411G  3.5G  6.3G  36% /
tmpfs   490M 0  490M   0% /dev/shm
/dev/sda1   190M   65M  116M  36% /boot
/dev/sda2   7.6G  182M  7.0G   3% /var
/dev/sdb185M  312K   79M   1% /tmp/sdb1

2.5 查看inode和block的總量

兩種方法

[root@linzhongniao ~]# dumpe2fs /dev/sda4|egrep -i "block size|inode size" 
dumpe2fs 1.41.12 (17-May-2010)
Block size:   4096
Inode size:   256
[root@linzhongniao ~]# dumpe2fs /dev/sda4|egrep -i "block count|inode count"   
dumpe2fs 1.41.12 (17-May-2010)
Inode count:  690880
Block count:  2759424
Reserved block count: 137971

小結:

磁盤空間是否滿了,是由兩項參數決定的:

第一個是Inode滿了,第二個是block滿了,任何一項滿了都會導致磁盤空間已經占滿。

2.6 如何生成及指定inode大小

在格式化的時候指定,格式化命令:mkfs.ext4 –b 2048 –i 256 /dev/sdb

3.文件類型

在linux系統中,一切設備(包括目錄、普通文件)皆是文件,文件類型包括普通文件、目錄、字符設備文件、塊設備文件、符號鏈接文件、管道文件等等。查看文件類型可以用file命令。

技術分享圖片

4.linux硬鏈接與軟連接

4.1 鏈接的概念

在linux系統中,鏈接可分為兩種:一種為硬鏈接,另一種為軟連接或符號鏈接。ln這個命令就是創建鏈接文件的,在默認不帶參數的情況下,執行ln命令就是創建硬鏈接文件的。

硬鏈接:ln 源文件 目標文件(目標文件不能是事先存在的)

軟連接:ln –s 源文件 目標文件(目標文件不能是事先存在)

4.2 硬鏈接

硬鏈接是指通過索引節點(Inode)來進行鏈接。在linux(ext2,ext3,ext4)文件系統中,保存在磁盤分區中的文件不管是什麽類型都會給它分配一個編號,這個編號被稱為索引節點編號(Index Inode)簡稱Inode。即在系統中文件的編號。

在linux文件系統中,多個文件名指向同一個索引節點(Inode)是正常且允許的。硬鏈接文件就相當於文件的另一個入口,硬鏈接的作用之一是允許一個文件擁有多個有效路徑名(多個入口),這樣用戶就可以通過建立硬鏈接文件,以防止“誤刪”源數據。

演示:誤刪數據

[root@linzhongniao linzhongniao]# echo 1 >a
[root@linzhongniao linzhongniao]# cat a
1
[root@linzhongniao linzhongniao]# ls -l a
 -rw-r--r--. 1 root root 2 Jul 13 14:20 a
[root@linzhongniao linzhongniao]# ln a b
硬鏈接文件有相同的inode
[root@linzhongniao linzhongniao]# ls -lhi a b
390821 -rw-r--r--. 2 root root 2 Jul 13 14:20 a
390821 -rw-r--r--. 2 root root 2 Jul 13 14:20 b
[root@linzhongniao linzhongniao]# rm -f a
[root@linzhongniao linzhongniao]# ls
b
[root@linzhongniao linzhongniao]# cat b
1
恢復誤刪的數據
[root@linzhongniao linzhongniao]# cat b
1
[root@linzhongniao linzhongniao]# cat b > a
[root@linzhongniao linzhongniao]# ls
a  b
[root@linzhongniao linzhongniao]# cat a
1

硬鏈接文件的創建:

直接執行命令“ln 源文件 硬鏈接文件”(硬鏈接文件一定是不存在的)即可完成創建硬鏈接。

小結:

(1)具有相同的inode節點號的多個文件是互為硬鏈接文件。

(2)刪除硬鏈接文件或者刪除源文件任意之一,文件實體並未被刪除。

(3)只有刪除了源文件及所有對應的硬鏈接文件,文件實體才會被刪除。

(4)可以通過給文件設置硬鏈接文件,來防止重要文件被誤刪

(5)通過執行命令“ln 源文件 硬鏈接文件”,即可完成創建硬鏈接文件。

(6)硬鏈接文件是普通文件因此可以用rm 刪除。

4.3 軟鏈接

軟鏈接(Symbolic Link)也稱為符號鏈接。linux裏的軟連接文件就類似於Windows系統中的快捷方式。linux裏的軟鏈接文件實際上是一個特殊的文件,文件類型是l(L)。軟鏈接文件實際上可以理解為一個文本文件,這個文件中包含有軟鏈接指向另一源文件的位置信息內容,因此通過訪問這個“快捷方式”就可以迅速定位到軟鏈接所指向的源文件實體。

演示:

[root@linzhongniao linzhongniao]# touch file
[root@linzhongniao linzhongniao]# ln -s file soft_file 
[root@linzhongniao linzhongniao]# ls -l file soft_file  
 -rw-r--r--. 1 root root 0 Jul 13 15:53 file
lrwxrwxrwx. 1 root root 4 Jul 13 15:53 soft_file -> file
查看軟鏈接包含什麽用readlink,輸出源文件
[root@linzhongniao linzhongniao]# readlink soft_file
file 《==soft_file是軟鏈接文件它實際上是指向了源文件file

設置開機自啟動其實就是為/etc/init.d/下的文件在/etc/rc.d/rc3.d/下的文件創建軟鏈接文件

[root@linzhongniao ~]# ls -l /etc/rc.d/rc3.d/S55sshd 
lrwxrwxrwx. 1 root root 14 Jun 14 05:01 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd
[root@linzhongniao ~]# readlink /etc/rc.d/rc3.d/S55sshd
../init.d/sshd

軟鏈接的創建:

執行命令“ln –s 源文件 軟鏈接文件”(軟鏈接文件一定是不存在的),即可完成創建軟鏈接。

提示:創建軟鏈接源文件是需要存在的,要創建的軟鏈接文件是不能存在的,是要用ln命令創建的。

小結:

(1)軟鏈接類似windows的快捷方式(可以通過readlink查看其指向)。

(2)軟鏈接類似一個文本文件,裏面存放的是源文件的路徑,指向源文件實體。

(3)刪除源文件,軟鏈接文件依然存在,但是無法訪問指向的源文件路徑內容了。

(4)失效的時候一般是白字紅底閃爍提示、

技術分享圖片

(5)軟鏈接文件和源文件是不同類型的文件,也是不同的文件。inode號也不相同。

(6)刪除軟鏈接文件可以用rm命令。

4.4 目錄鏈接文件小結

(1)對於目錄,不可以創建硬鏈接,但可以創建軟鏈接

[root@linzhongniao linzhongniao]# ln woshishei woshishei_hard_link
ln: `woshishei‘: hard link not allowed for directory
[root@linzhongniao linzhongniao]# ln -s woshishei woshishei_hard_link

(2)對於目錄的硬鏈接是生產場景運維中常用的技巧

(3)目錄的軟鏈接不能跨越文件系統

(4)每個目錄下面都有一個硬鏈接“.”號和當前目錄互為硬鏈接,和對應上級目錄的“..”互為硬鏈接

[root@linzhongniao linzhongniao]# ls -a woshishei woshishei/. -ldi
390865 drwxr-xr-x. 2 root root 4096 Jul 13 17:17 woshishei
390865 drwxr-xr-x. 2 root root 4096 Jul 13 17:17 woshishei/.
[root@linzhongniao linzhongniao]# ls -a woshishei/.. ../linzhongniao ../linzhongniao/. -ldi
390809 drwxr-xr-x. 3 root root 4096 Jul 13 17:18 ../linzhongniao
390809 drwxr-xr-x. 3 root root 4096 Jul 13 17:18 ../linzhongniao/.
390809 drwxr-xr-x. 3 root root 4096 Jul 13 17:18 woshishei/..

(5)在父目錄裏創建一個子目錄,父目錄的鏈接數增加1(每個子目錄裏都有..來指向父目錄)。但是在父目錄裏面創建文件,父目錄的連接數不會增加。我認為這就是為什麽cd .是進入到當前目錄而cd ..就是進入到上一級目錄的原因。

[root@linzhongniao ddd]# mkdir df
[root@linzhongniao ddd]# ls -lid df/..
399601 drwxr-xr-x. 3 root root 4096 Sep 21 21:07 df/..
[root@linzhongniao ddd]# ls -ldi .
399601 drwxr-xr-x. 3 root root 4096 Sep 21 21:07 .

5.linux多用戶多任務介紹

5.1 linux單用戶多任務

每個用戶可以執行多個用戶,用id 命令查看用戶ID和組ID

5.1.1 linux系統中用戶角色的劃分

用戶的角色是通過UID和GID識別的,用戶的UID就相當於我們的×××一樣,用戶名就相當於我們的名字。

UID (User Identify) 用戶ID,相當於×××,在系統是唯一的

GID (Group Identify) 組ID,相當於一個家庭或者一個學校的ID

linux系統中的用戶分為三類:超級用戶、普通用戶、虛擬用戶。

超級用戶:默認是root用戶,其UID和GID均為0。root用戶在每臺linux操作系統中都是唯一真實存在的並且擁有最高的管理權限。
企業工作中:沒有特殊需求,應該盡量在普通用戶下操作任務,而不是root。
在linux系統中,uid為0的用戶就是超級用戶,但是通常不這麽做,而是sudo管理提權,可以為每個命令分配權限。

普通用戶:
普通用戶的UID是500到65535,普通用戶是具備系統管理員root的權限的運維或者系統管理人員添加的,普通用戶登錄系統,僅能操作自己家目錄中的文件及目錄的權限,除此之外還可以進入或者瀏覽相關的目錄;但是無法創建、修改和刪除完成這些操作,但是可以給用戶授權(sudo)。

虛擬用戶:
虛擬用戶(沒有家目錄)的UID是從1到499。安裝系統默認就會存在,且默認情況大多數不能登錄系統,他們是系統正常運行不可缺少的,他們的存在主要是方便系統管理,滿足相應的系統進程對文件屬主的要求。在系統優化的時候可以把虛擬用戶註釋掉。

5.2 用戶配置文件介紹

linux系統下的賬戶文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四個文件中。

5.2.1 用戶的配置文件/etc/passwd

/etc/passwd 文件中每行定義一個用戶賬號,有多少行就表示多少個賬號。分為7列。

[root@linzhongniao ~]# tail -5 /etc/passwd
stu6:x:860:860::/home/stu6:/bin/bash
stu7:x:861:861::/home/stu7:/bin/bash
stu8:x:862:862::/home/stu8:/bin/bash
stu9:x:863:863::/home/stu9:/bin/bash
stu10:x:864:864::/home/stu10:/bin/bash

第一列:賬號名稱

第二列:賬號密碼

第三列:賬號UID

第四列:賬號組GID

第五列:用戶說明

第六列:用戶家目錄

第七列:shell解釋器

5.2.2 用戶密碼口令文件/etc/shadow

[root@linzhongniao ~]# head -5 /etc/shadow
root:$6$IcyLTHpcQrCAyptm$cYxjHT.wPQHekZsb.c/UFyH8FQ4BTDms4o3P8YAvpcyEzA1gcr51gaXVN0IBh2yOne1fZB5zPfZ4Ven3QocAz0:17695:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::

技術分享圖片

linux文件和目錄的屬性及硬鏈接與軟連接