891 瀏覽數

ext2(3) 磁區檔案屬性

ext2(3)的檔案系統除了一般的檔案權限管理外,還有一種叫做屬性 (attributes) 可以來設定.這些屬性可以幫助系統管理者更方便嚴謹的檔案權限問題.

指令名稱:

  1. 列印檔案屬性(List advanced file attributes)
    # lsattr filename
    
  2. 修改檔案屬性(Change advanced file attributes)
    # chattr +/-attribute [option] filename
    

屬性attribute

  • S:Synchronous updates to Disk
  • D:Synchronous updates to directory
    資料會直接寫入硬碟中,S 是針對檔案,D 可以針對目錄下所有的檔案.
  • a:Only append mode.本文無法修改,只能以在檔尾增加
    本文無法修改,連root也一樣受到限制,只能以在檔尾增加.

    [root@benjr ~]# chattr +a install.log
    [root@benjr ~]# lsattr install.log
    —–a——-
    [root@benjr ~]# echo ABCDE > install.log
    -bash: install.log : Operation not premitted.
    [root@benjr ~]# echo ABCDE >> install.log
    [root@benjr ~]# chattr -a install.log
    
  • i:Immutable ,也就檔案為唯讀的屬性
    檔案無法修改,連root也一樣受到限制,檔案亦無法在檔尾增加.

    [root@benjr ~]# chattr +i install.log
    [root@benjr ~]# echo ABCDE > install.log
    -bash: install.log : Operation not premitted.
    [root@benjr ~]# echo ABCDE >> install.log
    [root@benjr ~]# chattr -i install.log
    
  • j:data jouralling
    只適用在ext3的分割磁區.
  • d:no dump
    言下之意使用 dump 時,這個檔案不為 dump 所備份.
    以下的檔案屬性,目前 linux 的 kernel 尚未支援
  • c:compressed
    檔案在儲存時會先經過壓縮的動作(compressed on the disk by the kernel)
  • s:secure deletion
    當檔案被刪除,原刪除磁區的資料將會清成0( Its blocks are zeroed and wirtten back to disk if file deleted.)
  • u:undeletable
    有點像是資源回收筒的概念 (This allow user to ask for its undeletion)
  • A: atime (檔案存取時間) 不會被更新
    先來說說 Linux 會記錄檔案的三種時間 mtime / ctime / atime

    • mtime: time of last modification
      紀錄上一次檔案被更改的時間,只要檔案內容被修改過 mtime 的會被更新. 可以透過 ls -l 來看 mtime
    • ctime: time of last status change
    • 只要是檔案或是目錄的 inode 被改變(owner, permissions, 等.)這時間就會被更新.還有當檔案被更新時這 ctime 也會被更新. dump 的備份指令就是透過 ctime 來看需不需要將這檔案做備份為依據. 可以透過 ls -lc 來看 ctime

    • atime: time of last access
    • 這裡記錄著上一次最後存取這個檔案的時間,只要這檔案被存取過這時間就會被更新,如果這檔案是可執行檔在執行後這時間也會被改變.也可以透過 ls -lu 來看 atime

    我們也可以透過 #stat 這個指令來同時看這三種檔案紀錄的時間.

    [root@benjr ~]# chattr +A install.log
    [root@benjr ~]# lsattr  install.log
    ——-A—–
    [root@benjr ~]# stat install.log
    File: `install.log’
    Size: 80820           Blocks: 176        IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 10584066    Links: 1
    Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2010-01-13 17:43:26.000000000 +0800
    Modify: 2010-01-13 17:43:26.000000000 +0800
    Change: 2010-01-13 18:04:11.000000000 +0800
    [root@benjr ~]# echo “TEST" >> install.log
    [root@benjr ~]# stat install.log
      File: `install.log’
    Size: 80825           Blocks: 176        IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 10584066    Links: 1
    Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2010-01-13 17:43:26.000000000 +0800
    Modify: 2010-01-13 18:04:23.000000000 +0800
    Change: 2010-01-13 18:04:23.000000000 +0800
    [root@benjr ~]# chattr -A install.log
    

    唯有 Access time(atime) 沒被修改過.

2 個網友的想法 “ext2(3) 磁區檔案屬性

  1. 自動參照通知: Linux – File | Benjr.tw

  2. 自動參照通知: Linux – lsattr & getfattr | Benjr.tw

發表迴響