昨天面試被問到了這個問題,思考了十幾秒,認為是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的任何權限。
轉載請注明出處。