Linux 文件屬性及詳細操作


Linux 文件屬性

image

文件屬性信息組成

圖示如下:

image

  • 文件索引屬性信息-inode
  • 文件類型權限信息
  • 文件鏈接屬性信息-硬鏈接個數
  • 文件屬主屬性信息-文件所有者
  • 文件屬組屬性信息-文件所屬組
  • 文件大小屬性信息-最小單位字節(大小、kb)
  • 文件修改時間信息
  • 文件名稱信息說明-文件名

文件屬性概念說明

  1. inode 編號

    Linux系統中文件的唯一編號,就相當於身份證號

image


  1. 常見文件類型
文件類型 對應字符
普通文件 f/-
文件夾 d
鏈接文件 l
設備文件 b:磁盤文件 / c:字符文件
套接字文件(socket) s
管道文件 p

圖示如下:

image


  • 文件類型查看方法

    file 文件信息:

    • 配置文件---.conf
    • 日志文件---.log
    • 腳本文件---.sh
    • 腳本文件---.py

    注意不能以顏色判斷文件類型,如果關閉顏色參數呢?

image

image

這樣一種顏色的時候在文件多的時候很難判斷是什么類型!


文件軟硬鏈接說明

  • 命令:ln
    • 參數:-s --- 軟連接
    • 不加參數創建的是硬鏈接
  • 格式1:ln [原文件路徑] [硬鏈接文件路徑]
  • 格式2:ln -s [原文件路徑] [軟鏈接文件路徑]

圖示:

image


硬鏈接

硬鏈接好比商場的出口,商場有多個出口,就相當於多個接口去操作文件,硬鏈接直接指向index node編號,當文件修改時候,硬鏈接產生的文件也修改,他們的inode編號相同

# 創建硬鏈接
[root@localhost ~]# ln /root/test /root/test01

image


ps:修改原文件或者硬鏈接產生的文件都是對原文件的修改!


軟鏈接

相當於Windows中的快捷方式,主要用來指向對應文件的路徑。

# 創建軟連接
[root@localhost ~]# ln -s /root/test /root/test02

image


驗證軟鏈接是指向路徑,刪除原文件觀察

[root@localhost ~]# rm -rf /root/test
[root@localhost ~]# ls
anaconda-ks.cfg  test01  test02
[root@localhost ~]# ll -i
total 8
134319695 -rw-------. 1 root root 1691 Dec  9 19:03 anaconda-ks.cfg
134930018 -rw-r--r--. 1 root root   12 Dec 14 16:17 test01
135086254 lrwxrwxrwx. 1 root root   10 Dec 14 16:25 test02 -> /root/test
[root@localhost ~]# cat test01
chinaaaaaaa
[root@localhost ~]# cat test02
cat: test02: No such file or directory

image


補充知識

  • 如何真正刪除一個文件:

  • 刪除文件的底層邏輯:
    1、刪除的是硬鏈接
    2、判斷該文件硬鏈接數是否為0
    3、如果為0,則在磁盤中將其刪除
    4、如果不為0,則只刪除一個硬鏈接


存儲數據相關-inode/block

inode:

inode用於存放的是文件屬性、指針位置,主要在是在格式化創建文件系統的時候誕生的,創建一個文件至少占用一個inode和一個block,在同一分區中,兩個文件的inode號碼相同,兩個文件互為硬鏈接。

  • 展示inode信息:
  [root@localhost ~]# cd /etc/
  [root@localhost etc]# ll -hi /etc/hosts
  67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
  • 統計inode數目

    • 命令:df -i
[root@localhost etc]# df -i
Filesystem                Inodes IUsed    IFree IUse% Mounted on
devtmpfs                   56934   334    56600    1% /dev
tmpfs                      59949     1    59948    1% /dev/shm
tmpfs                      59949   692    59257    2% /run
tmpfs                      59949    16    59933    1% /sys/fs/cgroup
/dev/mapper/centos-root 52164608 77758 52086850    1% /
/dev/sda1                 262144   326   261818    1% /boot
tmpfs                      59949     1    59948    1% /run/user/0	

block:

用於存儲數據-block塊信息,存儲文件數據信息,主要在是在格式化創建文件系統的時候誕生的;

  • block默認大小為4k,比較大的文件,會占用多個block

  • 當文件比較大的時候,磁盤放不下,會導致空間無法使用-顯示磁盤空間不足(no space left on device)

  • 創建一個文件至少占用一個inode和一個block(非空文件)

  • 磁盤讀取數據按block為單位讀取的

  • 讀取一個block會消耗一次磁盤I/O(input/output 磁盤讀寫)

  • 命令:df
  • 相關文件:/etc/hosts
[root@localhost etc]# ll -hi /etc/hosts
67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts

[root@localhost etc]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
devtmpfs                   227736       0    227736   0% /dev
tmpfs                      239796       0    239796   0% /dev/shm
tmpfs                      239796    5624    234172   3% /run
tmpfs                      239796       0    239796   0% /sys/fs/cgroup
/dev/mapper/centos-root 104278276 2636220 101642056   3% /
/dev/sda1                  520868  134236    386632  26% /boot
tmpfs                       47960       0     47960   0% /run/user/0

讀取文件原理圖

  1. 文件首先存儲在硬盤上,文件最小的單位是塊(block),塊由扇區(sector)組成,塊一般大小為4kb,連續8個扇區組成一個塊
  2. 硬盤的最小存儲單位扇區(sector),每個扇區存儲512字節
  3. 操作系統讀取硬盤數據:一次性讀取一塊數據
  • 讀取文件流程

    以讀取/etc/passwd文件內容為例

image

Linux文件系統

Linux文件系統可以簡單分為inode tabledata area,inode table中存有inode,文件系統通常會將文件的權限與屬性放置到inode中,至於實際內容則放置到data block區塊中,還有一個超級區塊(superblock)會記錄整個文件系統的整體信息。

  • 文件的元數據 :權限(rwx)與屬性(擁有者、群組、時間參數、大小等)
  • 文件的數據:實際記錄文件的內容 若文件太大時,會占用多個block
  • 文件系統的整體信息:inode/block的總量使用量剩余量, 以及檔案系統的格式與相關信息等
inode block superblock
記錄文件的元數據 記錄文件的數據 記錄文件系統的整體信息

圖示:

image


文件用戶和用戶組

用戶:相當於賬號,例如root(超管用戶)

用戶組:某些具有相同屬性的賬號的集合

  • 用戶分為系統用戶和普通用戶:
    • uid在[0 - 999] 之間的用戶為系統用戶,一般用在啟動程序上,一般不需要登錄系統,root不一定為超級管理員,uid=0的為超管
    • uid在[1000+]的用戶為普通用戶,一般用在登錄上
  • 命令1:

    • 添加用戶:useradd [用戶]

      • 參數: -g :指定存在用戶組

        -r :創建一個系統用戶

        -M :不創建家目錄

        -u :指定創建用戶ID

    • 刪除用戶:userdel -r [用戶]

    • 相關文件:/etc/passwd

  • 命令2:

    • 添加用戶組:groupadd [組名]
      • 參數 -g:指定用戶組的ID
    • 刪除用戶組:groupdel [組名]
    • 修改用戶組:usermod -g [組名] [用戶名]
    • 相關文件:/etc/group
  • 命令3:id [用戶名] / [組名]

  • 用戶文件操作

# 查看用戶詳情文件
[root@localhost mail]# useradd hammer
[root@localhost mail]# cat /etc/passwd
# 格式如下
hammer:x:1000:1000:[用戶簡介]:/home/hammer:/bin/bash
用戶名		 	:hammer
密碼占位符	   :x
1000    	   :userid
1000		   :組id
/home/hammer    :家目錄
/bin/bash	    :默認的解析器 
# 默認的解析器為bash

# 解析器的種類 (可以修改)
bash  /   sh    / zsh

# sh和bash解析器切換
/bin/bash
/bin/sh

切換用戶
	su - [用戶名]
	su [用戶名]
	
# 在已存在的用戶組內添加用戶
# 通過指定組名添加
[root@localhost mail]# id hammer
uid=1000(hammer) gid=1000(hammer) groups=1000(hammer)
[root@localhost mail]# useradd wang -g hammer
[root@localhost mail]# id wang
uid=1001(wang) gid=1000(hammer) groups=1000(hammer)
# 通過指定組id添加
[root@localhost mail]# useradd -g li 1000 
[root@localhost mail]# id li
uid=1002(li) gid=1000(hammer) groups=1000(hammer)

  • 用戶組操作
[root@localhost mail]# groupadd hammer
[root@localhost mail]# cat /etc/group
hammer:x:1000:

hammer	:組名
x		:密碼占位符
1000	:組id

用戶相關文件

  • 用戶的特征信息:/etc/passwd (掌握文件各列信息)
  • 用戶的密碼信息:/etc/shadow
  • 用戶組特征信息:/etc/group
  • 用戶組密碼信息:/etc/gshadow
  • 用戶家目錄默認隱藏文件:/etc/skel/

不使用useradd命令添加用戶

步驟如下:

# 添加用戶
vim /etc/passwd
test08:x:2001:2001:自建用戶:/home/test08:/bin/bash

# 添加組
vim /etc/group
test08:x:2001:

# 添加用戶密碼密碼
vim /etc/shadow
test08:$6h4j93wta/:18974:0:99999:7:::

# 添加用戶組密碼
vim /etc/gshadow
test08:!::

# 家目錄
mkdir test08
cp /etc/skel/.bash* /home/test08/
chown -R test08.test08  test08
chmod 700 test08/

image


【續:文件權限】


免責聲明!

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



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