linux ls -l

整理一下 ls -l 相關的內容意義

ls -l 預設顯示第一欄是file type/ permissions / attributes, 第一各字元是file type,d代表 directory,l代表 symbolic link, 在linux中總共有7種file type,分別是

  •  : regular file
  • d : directory
  • l : symbolic link
  • c : character device file
  • b : block device file
  • s : local socket file
  • p : named pipe

前三個是一般檔案系統檔案相關,device file是io device相關,socket、pipe是IPC相關

socket檔案可以在程式有使用unix domain socket 時看到,例如docker在 /run/docker.sock

再來是rwx分別代表 owner、group、other的存取、執行權限permission,這部分就不多提,沒有set時為 ,另外當x在directory時代表可被存取(否則cd 進該directory會permission denied)

最後是 setuid/setgid/sticky的flag,這個flag是跟執行權限有關。setuid、setgid代表執行時以file user/group owner身分執行。如果是flag設定在directory時,setuid不作用,setgid代表在該目錄下建立的檔案group id會設定為該目錄的group id

sticky bit 最早是用來設定執行檔執行結束後仍駐留在記憶體中,目前大多數的UNIX系統已經不這樣使用,目前sticky bit的作用是限制只有owner可以delete or rename的操作,對於directory則是限制該目錄下的file必須是owner才能刪除或是rename

drwxrwxrwt. 10 root root 135 Feb 19 15:07 tmp

如上面 /tmp 在 other項目的 x 處顯示 t 代表設定sticky,因此/tmp下的檔案只有 該檔案的owner可刪或rename(注意是/tmp下的檔案,而不是/tmp本身,/tmp本身的rename, delete 權限由/的permission決定),因為/tmp要讓所有人可存取,所以設定為rwxrwxrwx,如果沒有設定stickybit,rwxrwxrwx會讓所有人都可以刪除/tmp下的所有(第一層)檔案

當然,如果刪除的 第一層 檔案是不為空的目錄時,該子目錄的下的檔案存取權限是由該子目錄的permission決定

在ls -l中 顯示 s 在 user,代表setuid +x ,如上面的su,代表一般的使用者執行su會以root的身分來執行身分切換,而s顯示在group區,代表setgid + x,如screen是以screen group身分執行,顯示在others的t代表sticky+x

值得注意的是sudo的權限是設定成 4111 (set uid + x),只有x沒有rw,這樣還是可以執行的,因為binary執行不需要讀取權限(https://unix.stackexchange.com/questions/214274/purpose-of-permissions-such-as-0111-or-0333)

chmod octet setuid = 4,setgid = 2,sticky = 1

第一欄的最後面有個dot,這是指有設定selinux security context,可用 ls -Z查看

再來ls -l 第2欄是link count,對regular file,是inode hard link數

對目錄來說,link count是指link到該目錄inode的數目,空的目錄為2 如上面的/srv,其中一個是目錄下 . 指向自己,另一個是來自parent directory的指向

當有subdirectories時,因為subdirectory下的 .. 會指向parent inode,所以一個subdirectory會貢獻一個link count,因此如 /var 顯示20,代表它下面有18個subdirectories

/var下有18個subdirectory,link count 20,差異的2個,其中一個是 . 指向自己,另一個是parent directory / 指向/var inode

參考:

This entry was posted in System Administration. Bookmark the permalink.

Leave a Reply