Linux檔案屬性

Linux小菜鸟發表於2024-11-12

檔案屬性

【1】、ls -ihl 每一列的含義

[root@kylin-xu ~]# ls -ilh 
總用量 105M
102604839 -rw-r--r-- 1 root root  57M  9月 21  2017 access.log
102685193 -rw------- 1 root root 2.7K 11月  3 12:29 anaconda-ks.cfg
102407797 -rw-r--r-- 1 root root 3.1K 11月  3 12:31 initial-setup-ks.cfg
102684881 -rw-r--r-- 1 root root  112 11月  4 23:52 nginxconf.bak.txt
102604829 -rw-r--r-- 1 root root  112 11月  4 23:50 nginxconf.txt
102684877 -rw-r--r-- 1 root root  327 11月  4 12:54 num.txt
102604833 -rw-r--r-- 1 root root  49M  2月 15  2017 secure-20161219

image-20241105191630522

【2】、inode和block

  • inode index node 索引節點,類似於我們的身份證

    • inode號碼是身份證號

    • inode空間是類似於身份證存放個人資訊

    • inode空間存放檔案屬性資訊。

  • block 資料塊, 存放資料(檔案內容)

我們檢視 abc.txt 檔案的過程解析

我們在執行cat abc.txt 命令後,首先會進入inode區。因為inode中存在許可權、使用者/使用者組等資訊,如果我們的許可權不匹配,會在這一步就被拒絕

如果可以進入indode區後,裡面會存在著 block位置(指向資料實體指標),他會指引我們到block的位置,進而可以檢視到資料資訊

graph TD; cat命令 subgraph inode區 屬性資訊 檔案大小 許可權 使用者/使用者組 block位置 end subgraph block區 資料 end cat命令--->許可權---->資料
  • 特點:

    • 每建立1個檔案,需要1個inode,block(非空)
    • inode 256位元組一般。
    • block 一般是4k.
    • 建立1個非空檔案,佔1個block, 檔案小沒有佔滿block,剩餘的空間就空著。
    • inode大小,block大小,數量都是在格式化的時候誕生的。
  • 命令

    • 檔案 inode 號碼(不太重要),block(檔案大小 重要)
    ls -lhi   filename
    
  • 目錄 檢視目錄所佔的空間

    [root@kylin-xu ~]# du -sh /etc/
    25M     /etc/
    # -h:以人類可讀的方式檢視大小
    # -s:檢視彙總後的結果
    
    # 不要使用ls -ih去看
    

    對於目錄來說,我們使用 ls -lh 命令去檢視得到的大小並不是該目錄在磁碟中佔據的大小

    因為按照inode和block的關係來分析,目錄的block中存放的是該目錄下所有檔案和目錄的名字,因此我們不能使用ls -lh去檢視目錄的大小

  • 小結:

    • inode,block作用。

    • 命令ls,du

【3】、檔案型別

一切皆檔案

常見Linux檔案型別
-(檔案)
d(目錄)
l(軟連結)
c(字元裝置) 後面使用 不斷輸出(白洞),不斷吸收(黑洞)
/dev/null (黑洞)
/dev/urandom (白洞) /dev/zero(白洞)
b(塊裝置) 硬碟,光碟 (磁碟專題)
s(socket檔案 套接字檔案) 網路傳輸相關
......
  • ls -l
  • file 檢視檔案型別
crw-rw-rw- 1 root root 1, 3 11月  4 14:40 /dev/null
[root@kylin-xu ~]# ll /dev/zero 
crw-rw-rw- 1 root root 1, 5 11月  4 14:40 /dev/zero
[root@kylin-xu ~]# ll /dev/urandom 
crw-rw-rw- 1 root root 1, 9 11月  4 14:40 /dev/urandom
[root@kylin-xu ~]# file /dev/urandom 
/dev/urandom: character special (1/9)

【4】、許可權

1、rwx許可權含義

r read # 讀 可以使用這些命令 cat、less、more、vim
w  write   # 寫 vim echo sed
x  excuter # 可執行,對於普通檔案無意義,對可執行檔案才有意義
-  沒有許可權


[root@kylin-xu day14]# ll
總用量 0
-rw-r--r-- 1 root root 0 11月  6 03:54 1.txt
-rw-r--r-- 1 root root 0 11月  6 03:54 2.txt
-rw-r--r-- 1 root root 0 11月  6 03:54 3.txt
-  # 檔案型別
檔案許可權三位為一組
rw- # 第一列  檔案的屬主		檔案屬於哪個使用者  主人是誰
r-- # 第二列  檔案的屬組		檔案對於小組的許可權 手機對於組內的許可權
r-- # 第三列  檔案的其他許可權	   檔案對於陌生人的許可權 和小組一樣 都是隻能看的許可權

我對1.txt有什麼許可權?
[root@kylin-xu day14]# whoami 
root
2、找出使用者和檔案的關係是什麼?
3、檢視具體的許可權
root對應的1.txt的許可權是前三位 rw-

檔案的最高許可權

目錄的最高許可權

2、rwx和數字的對應關係

r   # 4
w   # 2
x   # 1
-rw-r--r-- 1 xu xu 0 11月  6 04:04 1.txt
user   rw-;4+2+0 
group  r--:4+0+0
others r--:4+0+0
檔案的許可權用數字表示 644

透過數字得出檔案使用字元表示許可權
755
rwxr-xr-x

3、修改檔案許可權

(1)、chown

chown	 # 修改檔案的屬主屬組
語法結構
		 chown oldboy file # 只修改屬主
		 chown oldboy.oldboy file # 修改屬主和屬組
引數選項
	     -R   # 遞迴修改
[root@oldboyedu ~]# ll /tmp/oldboy.txt
-rw-r--r-- 1 root root 6 11月  7 11:11 /tmp/oldboy.txt
  • 案例1.修改test檔案的屬主為xu使用者
[root@kylin-xu tmp]# ll
總用量 0
-rw-r--r-- 1 root root 0 11月  6 04:18 test
[root@kylin-xu tmp]# chown xu test 
[root@kylin-xu tmp]# ll
總用量 0
-rw-r--r-- 1 xu root 0 11月  6 04:18 test
  • 案例2.同時修改屬主和屬組為xu
[root@kylin-xu tmp]# ll
總用量 0
-rw-r--r-- 1 root root 0 11月  6 04:20 test
[root@kylin-xu tmp]# chown xu.xu test 
[root@kylin-xu tmp]# ll
總用量 0
-rw-r--r-- 1 xu xu 0 11月  6 04:20 test
  • 案例3.遞迴修改檔案的屬組和屬組
[root@kylin-xu tmp]# chown xu.xu a -R 
[root@kylin-xu tmp]# ll a
總用量 0
drwxr-xr-x 3 xu xu 60 11月  6 04:21 b
[root@kylin-xu tmp]# ll a/b/
總用量 0
drwxr-xr-x 2 xu xu 40 11月  6 04:21 c
[root@kylin-xu tmp]# ll a/b/c -d
drwxr-xr-x 2 xu xu 40 11月  6 04:21 a/b/c
[root@kylin-xu tmp]# 

(2)、chmod

chmod    # 修改檔案許可權
語法結構
	     chmod +w file # 增加w許可權
	     chmod -w file # 減少w許可權
	     chmod g+w file # 授權屬組位增加w許可權
屬主 使用 u表示 user
屬組 使用 g表示 group
陌生人 使用 o表示 other
  • 案例1.給test 屬主位增加x許可權
[root@kylin-xu tmp]# chmod  u+x test 
[root@kylin-xu tmp]# ll
總用量 0
-rwxr--r-- 1 xu xu  0 11月  6 04:20 test
  • 案例2.給test 屬組位減去w許可權
chmod u-x test
  • 案例3.給test屬主設定rwx許可權
chmod u=rwx test
  • 給test other 設定rw許可權
chmod o=rw test
  • 案例4.同時去掉陌生人的wx許可權
chmod o-wx test
  • 案例5.使用等號來重新賦值許可權位
chmod o=r test
  • 案例6.修改所有位置增加x許可權
chmod +x test
  • 案例7.所有位置減去x許可權
chmod -x test
  • 案例8.對所有位置增加w許可權
chmod ugo+w test
  • 案例9.對所有的位置減少w許可權使用a
chmod a-w test

小結: 使用ugo方式來對檔案進行授權
chmod u+w # 授權屬主位w許可權
chmod u-w # 屬主位減少w許可權
chmod ug+x # 屬主和屬組增加x許可權
chmod ugo+x # 所有位增加x許可權
chmod +x 所有位增加x許可權
chmod a+x 所有位增加x許可權
chmod g=w 去掉原來的許可權,重新增加w許可權

使用數字的方式授權

r # 4
w # 2
x # 1
語法結構
		chmod 644 file  # 授權檔案為644許可權
  • 案例1.授權檔案許可權為rw-r-xr-- 許可權
[xu@kylin-xu day14]$ chmod 654 1.txt 
[xu@kylin-xu day14]$ ll 1.txt 
-rw-r-xr-- 1 xu xu 0 11月  6 04:04 1.txt
  • 案例2.授權檔案許可權為rw------- 許可權
[xu@kylin-xu day14]$ chmod 600 1.txt 
[xu@kylin-xu day14]$ ll 1.txt 
-rw------- 1 xu xu 0 11月  6 04:04 1.txt
  • 案例3.授權檔案許可權為 rw-r--r-- 許可權
[xu@kylin-xu day14]$ chmod 644 1.txt 
[xu@kylin-xu day14]$ ll
總用量 0
-rw-r--r-- 1 xu xu 0 11月  6 04:04 1.txt
  • 案例4.授權檔案許可權為---------許可權
chmod 000 1.txt
# 經常使用到的授權數字
644 rw-r--r--
755 rwxr-xr-x
600 rw-------
chmod # 遞迴授權檔案的屬主屬組為600許可權
引數選項:
	  -R  # 遞迴授權 比較危險 別用來修改目錄

4、rwx對於檔案的作用

r對於檔案的作用:
1、可讀
2、不可寫  但是可以強制寫入vim
3、不能執行
4、不能刪除,刪除是由目錄的許可權控制的
[xu@kylin-xu day14]$ echo pwd > 1.txt 
[xu@kylin-xu day14]$ chmod u=r 1.txt 
[xu@kylin-xu day14]$ ll 1.txt 
-r--r--r-- 1 xu xu 4 11月  6 04:59 1.txt
[xu@kylin-xu day14]$ cat 1.txt 
pwd
[xu@kylin-xu day14]$ echo aaa > 1.txt 
-bash: 1.txt: 許可權不夠
[xu@kylin-xu day14]$ ./1.txt
-bash: ./1.txt: 許可權不夠
[xu@kylin-xu day14]$ echo pwd > 1.txt 
-bash: 1.txt: 許可權不夠
w對於檔案的作用:
[xu@kylin-xu day14]$ chmod u=w 2.txt 
[xu@kylin-xu day14]$ ll 2.txt 
--w-r--r-- 1 xu xu 0 11月  6 04:55 2.txt
[xu@kylin-xu day14]$ cat 2.txt 
cat: 2.txt: 許可權不夠
[xu@kylin-xu day14]$ echo pwd > 2.txt 
[xu@kylin-xu day14]$ 

1.不能檢視檔案內容
2.不能使用vim方式寫入 只能使用echo 追加內容
3.不能執行
4、只有一個w的話,理論上是可以的,但是在實際生產中意義不大
x對於檔案的作用:
[xu@kylin-xu day14]$ chmod u=x  1.txt 
[xu@kylin-xu day14]$ ll
總用量 8
---xr--r-- 1 xu xu 4 11月  6 04:59 1.txt


# 檔案只有一個x啥都不能幹
[xu@kylin-xu day14]$ ./1.txt 
bash: ./1.txt: 許可權不夠
# 想讓檔案可以執行必須有r許可權
xu@kylin-xu day14]$ chmod u=rx 1.txt 
[xu@kylin-xu day14]$ ll 1.txt 
-r-xr--r-- 1 xu xu 4 11月  6 04:59 1.txt
[xu@kylin-xu day14]$ ./1.txt 
/home/xu/day14

總結:
1. 1個r對於檔案有作用,只讀
2. rw對於檔案是最高許可權可讀寫
3. r和x對於檔案是有執行的許可權
4. rwx指令碼擁有最高的許可權

對於檔案來講最高許可權為666 所有位置都可讀寫

5、rwx對目錄的作用

[xu@kylin-xu ~]$ ll -d day14/
drwxr-xr-x 2 xu xu 45 11月  6 04:55 day14/

1.目錄只有r許可權 啥都不能幹。由於目錄的block存放的是該目錄下的檔名,因此使用 ll 檢視也就只能看到檔名
[xu@kylin-xu ~]$ chmod u=r day14/
[xu@kylin-xu ~]$ ll day14/ -d
dr--r-xr-x 2 xu xu 45 11月  6 04:55 day14/
[xu@kylin-xu ~]$ ll day14/ 
ls: 無法訪問 'day14/1.txt': 許可權不夠
ls: 無法訪問 'day14/2.txt': 許可權不夠
ls: 無法訪問 'day14/3.txt': 許可權不夠
總用量 0
-????????? ? ? ? ?             ? 1.txt
-????????? ? ? ? ?             ? 2.txt
-????????? ? ? ? ?             ? 3.txt


2.目錄只有w許可權 啥都不能幹。

3.x對於目錄的作用:
1.x控制是否可以cd到目錄下
2.沒有其他任何許可權
[root@oldboyedu oldboy]# chmod u=x /oldboy
[root@oldboyedu oldboy]# ll -d /oldboy
d--xr-xr-x 2 oldboy oldboy 45 11月 11 11:31 /oldboy

目錄許可權的常用組合方式:
1.r-x組合作用 可以進入到目錄可以檢視目錄下所有的檔案資訊 能不能看檔案內容具體看檔案的許可權
2.r-x組合不能在目錄下刪除 建立 改名等動作
3.rwx組合目錄的最高許可權可以進入可以增刪改查

為什麼會出現許可權拒絕?

[xu@kylin-xu ~]$ cat /etc/shadow
cat: /etc/shadow: 
# 由於shadow檔案本身對於other來說沒有r許可權

#passwd的其他位置沒有w許可權 必須rw
[xu@kylin-xu ~]$ echo 11111>> /etc/passwd
-bash: /etc/passwd: 許可權不夠
[xu@kylin-xu ~]$ ll /etc/passwd
-rw-r--r-- 1 root root 2031 11月  5 16:00 /etc/passwd

# 由於/etc/目錄的other位置沒有w許可權
[xu@kylin-xu ~]$ touch /etc/haha
touch: 無法建立 '/etc/haha': 許可權不夠
[xu@kylin-xu ~]$ ll /etc/ -d
drwxr-xr-x 121 root root 8192 11月  6 02:47 /etc/

# 因為root目錄的其他位置沒有r-x許可權
[xu@kylin-xu ~]$ ls /root
ls: 無法開啟目錄 '/root': 許可權不夠
[xu@kylin-xu ~]$ 登出
[root@kylin-xu ~]# ll /root -d
dr-xr-x--- 5 root root 4096 11月  6 03:53 /root

6、umask

umask作用決定預設建立檔案和目錄的許可權 # 瞭解umask值 不作為重點
預設檔案的許可權: 644
預設目錄的許可權: 755

[root@kylin-xu ~]# umask 
0022

檔案預設許可權: 是由檔案的最高許可權666減去umask值得到的
 666
-022
=644
目錄預設許可權: 是由目錄的最高許可權777減去umask預設的值
 777
-022
=755
  • 案例1.umask值修改為044
[root@kylin-xu ~]# umask 044
[root@kylin-xu ~]# umask 
0044
[root@kylin-xu ~]# ll a.txt 
-rw--w--w- 1 root root 0 11月  6 06:41 a.txt
[root@kylin-xu ~]# mkdir aaaa
[root@kylin-xu ~]# ll -d aaaa/
drwx-wx-wx 2 root root 6 11月  6 06:41 aaaa/
  • 案例2.umask值修改為032
# 如果umask存在奇數位,檔案相減後+1,目錄不需要
[root@kylin-xu ~]# umask 032
[root@kylin-xu ~]# umask 
0032
[root@kylin-xu ~]# touch abc.txt
[root@kylin-xu ~]# ll abc.txt 
-rw-r--r-- 1 root root 0 11月  6 06:44 abc.txt
[root@kylin-xu ~]# mkdir qaaa
[root@kylin-xu ~]# ll -d qaaa/
drwxr--r-x 2 root root 6 11月  6 06:44 qaaa/

7、隱藏許可權位

# 檢視隱藏許可權位
[root@kylin-xu ~]# touch test.txt
[root@kylin-xu ~]# lsattr test.txt 
-------------------- test.txt

#增加a隱藏許可權 作用只能追加內容到檔案中
[root@kylin-xu ~]# chattr +a test.txt 
[root@kylin-xu ~]# lsattr test.txt 
-----a-------------- test.txt
[root@kylin-xu ~]# rm -f test.txt 
rm: 無法刪除 'test.txt': 不允許的操作
[root@kylin-xu ~]# echo aa > test.txt 
-bash: test.txt: 不允許的操作
[root@kylin-xu ~]# echo oooo >> test.txt 
[root@kylin-xu ~]# cat test.txt 
oooo

# 去掉a隱藏許可權
[root@kylin-xu ~]# chattr -a test.txt 
[root@kylin-xu ~]# lsattr test.txt 
-------------------- test.txt

# i 無敵的 除了檢視啥都不能幹
[root@kylin-xu ~]# chattr +i test.txt 
[root@kylin-xu ~]# cat test.txt 
oooo
[root@kylin-xu ~]# echo aaa>> test.txt 
-bash: test.txt: 不允許的操作

我們可以理解為 隱藏許可權是限制root使用者的

8、特殊許可權位

suid set uid   4# 作用 在使用者執行命令的時候相當於屬主的許可權去執行。
需要我們給屬主的位置增加s許可權。任何人使用命令的時候相當於命令的屬主的許可權。
sgid         2  # 針對目錄設定,對於設定了sgid的許可權的目錄,在該目錄中建立的內容自動繼承上一級目錄的屬組
sticky粘滯位 1   # 主要是針對共享目錄設定的,設定了sticky的目錄中,誰建立的內容,只能被誰刪除。
suid

[root@kylin-xu ~]# ll /usr/bin/passwd 
-rwsr-xr-x 1 root root 30800  4月 20  2022 /usr/bin/passwd
sgid
[root@kylin-xu ~]# chown xu.xu test
[root@kylin-xu ~]# touch test/qqq
[root@kylin-xu ~]# ll test/qqq 
-rw-r--r-- 1 root xu 0 11月  6 07:14 test/qqq
sticky

[root@kylin-xu ~]# mkdir /nfs 
[root@kylin-xu ~]# chmod 777 /nfs
[root@kylin-xu ~]# chmod o+t /nfs
[root@kylin-xu ~]# ll -d /nfs
drwxrwxrwt 2 root root 35 11月  6 07:16 /nfs
[root@kylin-xu ~]# su - xu 
[xu@kylin-xu nfs]$ echo xu > xu.txt
[root@kylin-xu ~]# su - tom
上一次登入: 二 11月  5 11:47:09 -03 2024 pts/2 上
[tom@kylin-xu ~]$ cd /nfs
[tom@kylin-xu nfs]$ echo tom > tom.txt
# 在這個目錄下面有xu和tom兩個使用者建立的檔案,由於目錄設定了sticky,tom不能刪除xu建立的使用者
[tom@kylin-xu nfs]$ \rm -f xu.txt 
rm: 無法刪除 'xu.txt': 不允許的操作

【5】、軟硬連線

1、軟連結

  • 軟連結類似於windows快捷方式,存放原始檔的位置.

    • 符號連結(symbolic link或symlink),軟連結
  • 建立軟連結 給/etc/sysconfig/network-scripts/ifcfg-ens33 建立軟連結/opt/ifcfg-ens33

    [root@kylin-xu ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-ens33  /opt/ifcfg-ens33
    [root@kylin-xu ~]# ll /opt/ifcfg-ens33 
    lrwxrwxrwx 1 root root 42 11月  5 08:02 /opt/ifcfg-ens33 -> /etc/sysconfig/network-scripts/ifcfg-ens33
    
    
    # ln -s 原始檔  目標檔案
    
  • 刪除軟連線

    [root@kylin-xu opt]# rm -f ifcfg-ens33 
    # 不會影響到原始檔
    
  • 刪除原始檔

    [root@kylin-xu day06]# touch 123
    [root@kylin-xu day06]# ln -s 123 456
    [root@kylin-xu day06]# ll
    總用量 1636
    -rw-r--r-- 1 root root       0 11月  5 08:05 123
    lrwxrwxrwx 1 root root       3 11月  5 08:05 456 -> 123
    [root@kylin-xu day06]# rm -f 123
    # 軟連結不能使用了
    

    image-20241105201459028

2、硬連結

  • 在同一個分割槽中,inode號碼相同的互為硬連結。

    ln 原始檔  目標檔案
    

3、區別

  • 含義:
    • 軟連結原始檔位置
    • 硬連結在同一個分割槽中inode號碼相同
  • 特點:
    • 最長用的是軟連結,對檔案,目錄建立。
    • 硬連結只能對檔案建立,不能對目錄。
  • 刪除

【6】、檔案時間

時間
修改時間 mtime 修改時間,最常用的。
訪問時間 atime 看一次檔案,時間就會改變。限制mtime有關。
屬性改變時間 ctime 屬性資訊修改這個時間就變化。
建立時間 btime 檔案建立時間。
[root@kylin-xu day06]# stat list.txt 
  檔案:“list.txt”
  大小:20              塊:8          IO 塊:4096   普通檔案
裝置:fd00h/64768d      Inode:102684889   硬連結:1
許可權:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近訪問:2024-11-05 00:06:10.939806497 -0300
最近更改:2024-11-05 00:06:08.442785880 -0300
最近改動:2024-11-05 00:06:08.442785880 -0300
建立時間:-

相關文章