Linux 文件屬性及權限_007


 

 

Linux一切皆文件:

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

 

Llinux文件屬性及權限圖形說明:

 

 

Linux文件屬性及權限補充說明:

 

 

 

 

第一列:inode索引結點

 

inode (index node)概述

 

  一個硬盤需要存放數據,首先分區,再格式化(格式化會創建文件系統類型),最后就可以存儲數據。

Linux的文件系統類型一般有ext2/ext3/ext4等類型。在每個linux存儲設備或存儲分區被格式化創建成

ext4(CentOS 6.7)文件系統后,創建文件系統一般生成兩部分:第一部分inode,第二部分是block。

inode用來存儲文件屬性及信息索引(指向文件實體,但文件名稱不包含在inode),block用來存放實

際的數據使用(例如文字、照片、視頻等普通文件數據)。inode是一塊存儲空間,CentOS 6非啟動分

區inode默認大小為256字節,CentOS 5 默認大小為128字節。正常情況下,一個文件只能占用一個

inode,如果兩個文件的inode相同則說明是這兩個文件是互為硬鏈接,也可以是多個文件。inode節點

的總數一般在格式化時就給定。

 

查看系統分區及文件類型

[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 13 16:58 file.txt

 

查看系統分區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分區默認是128字節)

[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存儲設備或存儲分區被格式化創建成ext4(CentOS 6.7)文件系統后,創建文件系統

一般生成兩部分:第一部分inode,第二部分是block。inode前面已講述,。了解block先了

解sector(扇區)。硬盤的最小存儲單位:sector(扇區),每個扇區儲存512字節,操作系統

會一次性連續讀取多個扇區,即一次性讀取多個扇區稱為一個block(塊),文件存取的最小

單位:block(塊),由多個扇區組成;block的大小常見的有1KB、2KB、4KB,在linux中常見

設置為4KB,即連續8個扇區組成一個block,/boot分區的block一般為1KB。系統創建一個文件

或者文件占大小一次固定分配4K(8個扇區,每個扇區512B)

 

查看每個分區的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

 

查看分區指定的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

 

查看指定分區的扇區、磁道、柱面、磁頭等信息,磁盤的容量=磁頭*磁道*扇區(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 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

 

 

 

 

第二列:文件類型及權限

 

  文件類型及權限共有10個字符組成(第一個字符代表文件類型、后面9個字符代表文件權限),

假如把SElinux開啟,文件類型及權限共有11個字符(第一個字符代表文件類型、第2個到第10個字符

代表文件權限,第11個字符與selinux有關系,一般用不到)

 

第一個字符:

Linux的文件類型

  在linux系統中,可以說一切設備(包括目錄、普通文件等)皆文件。文件類型包含有普通文件、目錄、字符設備文件、塊設備文件、符號鏈接文件、管道文件等等

 

1、 d(directory)表示目錄

[root@oldboy test]# ls -l /test/ | grep "^d"

drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir1

drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir2

drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir3

[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)文件內容可以直接讀到的數據,例如:字母、數字、特殊字條串等,可以用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)、數據格式文件(data)有些程序運行過程中會讀取某些特定格式的文件,那些特定格式的文件可以被稱為數據文件。例如:linux 在用戶登錄時都會將登錄數據記錄在/var/log/wtmp 那個文件內,該文件是一個數據文件,通過last命令讀出來。/var/log/lastlog也是一個數據文件,可以使用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,  0 Nov 12 23:12 /dev/loop0

brw-rw---- 1 root disk   7,  1 Nov 12 23:12 /dev/loop1

brw-rw---- 1 root disk   7,  2 Nov 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,同時方便我們多數習慣了windows用戶區分文件的不同,所以還是習慣通過擴展名來表示不同的文件類型,例如:

1、.tar\.tar.gz\.tgz\.zip\.tar.bz表示壓縮文件,創建命令一般為tar\gzip\unzip等

2、.sh表示shell腳本文件,通過shell語言開發的程序

3、.pl表示perl語言文件,通過perl語言開發的程序

4、.py表示python語言文件,通過python語言開發的程序

5、.html\.htm\.php\.jsp\.do表示網頁語言文件

6、.conf表示系統配置文件

7、.rpm表示rpm安裝包文件

 

 

后面9個字符:

 

 

 

 

第三列:硬鏈接個數

 

文件鏈接分為兩種,硬鏈接和軟鏈接(符號鏈接)。

硬鏈接文件與軟鏈接訪問圖形說明:

 

 

軟鏈接(符號鏈接)可以看作是windows的快捷方式,可以讓你快速找到目標文件,只是一個普通的文件,

但軟鏈接文件跟實際的原文件inode是不相同,軟鏈接可以針對文件和目錄進行創建。

 

硬鏈接是通過原文件的索引節點進行鏈接的文件,也可以理解為通過原文件inode復制出來的一個文件。

硬鏈接和原文件的inode索引節點是相同的,硬鏈接只可以針對文件進行創建,目錄創建不了(系統限制)。

每個創建的目錄會自動創建兩個硬鏈接.和..可通過ls –a查看

 

鏈接創建命令

ln       原文件   目標文件      ##創建硬鏈接命令

ln  -s   原文件   目標文件     ##創建軟鏈接命令

 

硬鏈接創建

[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 15 01:51 file

140988 -rw-r--r-- 2 root root 0 Nov 15 01: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:52 dir/

[root@oldboy test]# ls -lid dir/ dir/.

140989 drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/

140989 drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/.

 

 

軟鏈接創建

[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 15 01:57 file

140989 lrwxrwxrwx 1 root root 4 Nov 15 01:57 file_soft_link -> file

[root@oldboy test]# cat file_soft_link

testfile

 

 

 

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

第五列:文件或目錄所屬用戶組(用戶組)

 

  Linux/Unix是一個多用戶、多任務的操作系統同,在linux系統系統用戶是分角色的,linux系統中,

由於角色不同,權限和所完成的任務也不同,用戶的角色是通過UID和GID識別的,特別是UID,在linux

系統中,一個UID是唯一標識系統用戶的賬號(相當於我們的身份證)。用戶的系統賬號的名稱(如oldboy)

其實給人(管理員)看的,linu系統能夠識別的僅僅是UID和GID這樣的數字。用戶UID就相當於我們的身份

證一樣,用戶名就相當於我們的名字。

 

UID(User Identify)  中文用戶ID,相當於各位的身份證,在系統中是唯一的

GIP(Group Identify) 中文組ID,相當於各位的家庭或者你們的學校ID

 

Linux系統分為三類用戶:

1、 超級用戶root

root(超級管理員),UID為0,擁有最高的權限,類似windows系統的administrator本地管理員。root可以使用sudo管理提權給普通用戶使用,相當於分配特殊權限給普通用戶使用。

2、 虛擬用戶

虛擬用戶,UID為1~499,虛擬用戶一般與系統和程序服務相關,一般是默認不能登錄系統使用。

3、 普通用戶

一般是由具備系統管理員root權限用戶所創建,UID為500~65534,這類用戶的權限會受到一定的基本權限限制,一般來自具備管理員用戶的限制。

 

查看用戶UID和GID命令

[root@oldboy ~]# id oldboy

uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)

 

當創建一個用戶,以下配置文件會被修改

用戶配置文件         /etc/passwd

用戶密碼配置文件     /etc/shadow

用戶組配置文件       /etc/group

用戶組密碼配置文件   /etc/gshadow

 

1、用戶配置文件/etc/passwd 是系統識別用戶的一個文件,系統所有用戶都記錄在這里/etc/passwd文件里 

 

2、用戶密碼配置文件/etc/shadow是系統用戶密碼配置文件,與用戶配置文件/etc/passwd中x字段的占位符相對應,記錄着用戶密碼等相關記錄。

 

 

3、用戶組配置文件/etc/group記錄用戶組相關信息。

 

 

4、用戶組密碼配置文件/etc/gshadow與用戶配置文件/etc/group中x占位符相對應,記錄用戶組密碼相關信息。

 

 

 

 

第七、八、九列:文件或目錄的修改時間,默認月日時分

 

文件時間戳分三種:

modify   修改時間  find命令對應選項  -mtime   一般修改文件內容

change   改變時間  find命令對應選項  -ctime   文件的屬性改變

access    訪問時間  find命令對應選項  -actime  訪問文件內容

 

 

格式化時間:

[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:18 test

[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:18 install.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:18 test

 

修改時間戳命令:

[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:47 test/

 

 

 

 

 

感謝老男孩博客提供參考  https://blog.51cto.com/oldboy

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM