在Linux中,刪除一個文件需要什么權限?


  昨天面試被問到了這個問題,思考了十幾秒,認為是rw權限。面試結束后我查了一些說法和資料才知道我的理解太淺,也不夠准確。今天就來好好復習一下權限的知識,也通過記錄的方式強化記憶。

  

1、文件權限簡單梳理

  假設在Linux中,使用ls命令查看到某文件的權限為:-rw-r--r--,那么它們分別代表什么?

  首位可能的字符有三,- 代表文件,d代表目錄,| 代表軟鏈接文件。

  后九位可能出現的字符有r(讀)w(寫)x(執行)。其中每3位代表一個權限組所擁有的的權限,分別是該文件的所有者(u),所有者所在的組(g)和其他人(o)。

  因此我們可以得知它是一個文件,其所有者可以讀寫,所在組和非同組的其他用戶都只能讀取。

  可以用chmod命令來修改文件權限:

  Usage:chmod [ugoa][+-=][mode=xxx]

  這三個方括號代表分組指定和數字權限修改兩種方式。使用例:

  chmod g+w,o+w a.file   的作用是為組和其他用戶添加寫權限;

  chmod u-x,g-w,o-w a.file   的作用是刪除擁有者的執行權限,刪除組合其他用戶的寫權限。

  數字權限是用 3 位二進制表示的,將rwx權限的是否授予看成二進制數的1和0,那么我們就可以得到權限的數字表示

  r--  100 = 4
  -w- 010 = 2
  --x  001 = 1

  因此數字權限的修改方式也很好理解了,例如常見的權限:

 

  777 --- 代表所有人都對該文件擁有完全的權限
  755 --- 可執行文件的常用權限
  644 --- 普通文件的常用權限

2、權限對目錄和文件的作用

  (1)目錄

  • r: 可以查詢目錄下文件名(如ls)
  • w: 具有修改目錄結構的權限。如新建文件和目錄,刪除此目錄下文件和目錄,重命名此目錄下文件和目錄,剪切,復制等(touch、rm、mv、cp)
  • x: 可以進入(應當看做是“執行”)目錄(如cd)

  (2)文件

  • r: 讀取文件內容(cat、more、head、tail)
  • w: 編輯、新增、修改文件內容(vi、echo),但不包括刪除本文件。
  • x: 可執行

  (3)刪除一個文件到底需要什么權限?

  啰嗦了這么多,有了以上的基礎知識,咱就能回答這個問題了。Linux下,對於某個目錄或文件擁有的權限,針對的是該文件的內容,而不是文件本身,所以應該着重考慮該文件的父文件夾。

  刪除文件a時,必須擁有a的父文件夾的rwx權限。因為你在瀏覽文件夾內容時,“執行”了這個文件夾(cd),且“讀取”了文件夾的內容,瀏覽目錄里的文件(ls);刪除文件a,是對該目錄內容的“寫”(rm)。

  總而言之,要想刪除a,需要其父文件夾的rwx權限,而無需獲取文件a的rwx權限。

  因為a作為其父文件夾的內容而存在,已經由父文件夾的權限所控制。而a的內容則是由a本身的權限所控制。只要不讀寫執行a,就無需a的任何權限。

 

  轉載請注明出處。


免責聲明!

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



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