close

在Linux裡面常常輸入ls -l顯示目錄和檔案的長列表詳細結果

這個列表裡面很多欄位的數值對於檔案很容易理解,

然而對於目錄而言,有些欄位卻不是那麼好懂.

舉個例子

mint@mint ~ $ ls -ld firefox

 

drwxr-xr-x 10 mint mint 920 Oct 19 21:28 firefox

第二個欄位的數值,對於檔案而言,是指說這個檔案有幾個hard link數量,

基本會是1起跳(因為它自己就佔了1個).

這個欄位對於目錄而言,是指說它底下有幾個子目錄,一般會是2起跳,

也就是裡面的「.」和「..」這2個子目錄.

第五個欄位是Size大小,對檔案而言很容易懂,就是這個檔有多大

對目錄而言,是指這個目錄的metadata大小,

metadata應該算是說記錄這關於這個目錄的資訊.

因為UNIX系統裡面everything is file,所以在有一些distribution裡,

像以前玩過的Knoppix,你也可以直接 vi 一個目錄

就會顯示這個目錄裡面的資訊.

最重要的就是第一個欄位的權限資訊,這些權限對於檔案也很容易了解

但是對目錄而言就沒那麼好懂了.

先來說x權限,目錄的x權限代表你可以cd進去該目錄

r權限代表你可以讀取這個目錄的檔名/目錄名

但是只有r權限你也只能讀檔名/目錄名,並不能讀到這個目錄的inode資訊

也就是ls -l列出來的那一串(權限、檔案大小、修改時間等等的資訊)

如果你要讓r權限可以完全讀取這些inode資訊,必須還要再搭配x權限才行.

再來是w權限,代表你可以對目錄寫入,但是只有w權限你並沒有辦法幹什麼事

連寫入也不行,w必須要搭配x的權限才能正確做寫入的動作,也就是w要有x權限才有意義.

另外關於權限還有一點新手很容易搞混的就是,你在Linux裡面,

可不可以 「新增/刪除/更名」 一個檔案或目錄

是要看你所在的那層目錄給你什麼樣的權限,而不是看你想動的那個檔案或目錄.

也就是說當前目錄下有一個檔案就算我具有rwx權限,但我所在的目錄不允許我write的話

我不能對這個檔案進行 刪除/更名 的動作,也不能像 touch abc這樣建立一個新檔

(touch的功用是如果檔案不存在,則建立新檔,

如果檔案已存在,就將它的修改時間改為最新)

因為inode資訊是寫到那個目錄裡面,但你沒有這個目錄的w權限,所以會失敗.

你把這些動作想成是對目錄的內容做修改就很好懂了.

但是就算我沒有這個目錄的w權限,我也可以直接清空一個我具有rwx權限的檔案內容

並不一定要直接砍掉它也行.

另外如果在權限那一欄的後面看到一個「+」號,那代表可能採用了

ACL或是SELinux的機制.

像是我要清除c.bin的內容就有好幾種方式

$  &> c.bin
$  echo -n > c.bin
$  : > c.bin
$  > c.bin
$  cp /dev/null c.bin

這5種指令之一都可以直接清空c.bin的內容.

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 fvalinux 的頭像
    fvalinux

    Elegance

    fvalinux 發表在 痞客邦 留言(0) 人氣()