目錄的三權限之——R,W,X之間的愛恨糾葛!
文件的權限我們一般都很容易了解,但是目錄的權限,我們可能很多人就容易含混不清了,而許多時候目錄的權限也是非常重要的。
因此我專門做了一個關于目錄其他用戶的權限實驗,以此來解開目錄權限的神秘面紗。在此我分別設定了三種情況,看看當某個目錄/testdir對其他用戶user1僅沒有R,W,X權限時,其他用戶對此目錄有什么操作權限呢?
一、當目錄的O=WX時,即沒有讀權限
當目錄的其他用戶權限為o=wx,即無讀權限時。其他用戶不能使用#ll命令查看目錄內的文件列表,但可以使用cd命令進入目錄;能夠用#touch,#rm,#cat,#nano,或echo來在目錄內新建,刪除,查看,修改自己的文件(注:圖二中 echo沒有修改成功是語法錯誤,非權限原因),以下為執行結果的截圖,其中圖一為執行前的環境:
圖一 執行環境
圖二 cd可進入,ll不能打開目錄列表,能增刪查看及修改目錄內的文件
圖三 nano 修改成功
二、當目錄的O=RX時,即沒有寫權限
當目錄的其他用戶權限為o=rx時,即無寫權限時,其他用戶可以用#ll命令打開目錄內的文件列表或#cd進入目錄;也可以用#cat 查看目錄內自己的文件,或用echo及nano命令修改目錄內自己的文件;但是不能在目錄內創建或刪除自己的文件,執行時截圖如下:
圖四 cd可進入,ll可打開目錄,可修改目錄內文件,但不可增刪文件
圖五 修改成功,移除文件權限不夠
三、當目錄的O=RW時,即沒有執行權限
當目錄的其他用戶的權限為o=rw時,及其他用戶對目錄無執行權限時;其他用戶不可用#ll命令進去目錄文件列表(Permission denied,但是會顯示目錄的文件名,而文件詳細信息顯示為“?”號),也不能用cd命令進入命令;且不能用touch或rm命令在目錄內新建文件或刪除目錄內自己的文件,甚至不能用cat命令讀目錄內自己的文件;且也不能使用echo或nano或vim來修改目錄內自己文件的內容。
圖六 ll無權限,但有帶?的文件列表顯示,不能查看增刪修改文件
圖七 nano修改時提示無權限
圖 八 用vim修改加!強制保存退出時提示
我們可以把以上內容的結果總結成如下列表:
目錄權限 |
ll打開目錄 |
Cd進入目錄 |
新建、刪除文件 |
查看修改文件 |
O=wx |
否 |
可 |
可 |
可 |
O=rx |
可 |
可 |
否 |
可 |
O=rw |
否 |
否 |
否 |
否 |
從中我們可以總結出什么來呢?
一般來說R,W,X分別代表讀寫和執行權限的,而在目錄上時也大體是如此:
R權限是使目錄有讀權限的,即能用ll命令查看目錄內文件列表的;
W權限是使目錄有寫權限的,即能用touch或rm命令增刪目錄內用戶有此權限的文件;
X權限是目錄的執行權限,在此代表著可用cd命令進入此目錄。
而對目錄類的文件的查看與修改動作似乎是與目錄的權限無關的,只與文件本身的權限有關,除非目錄沒有x執行權限。
不過我們會發現:當權限o=rw,即有讀權限和寫權限時,其他用戶也是不能打開文件列表或在目錄內增刪文件的。這是為什么了?再仔細看看,我們就可以發現問題了。
當o=rw時是沒有執行權限的,即進入不了目錄的;而圖八中的錯誤提示也為“can’t open file for writing”,也就是說不能夠打開文件所以不能修改。
也就是說但目錄對其他用戶沒有x權限時,其他用戶是進入不了此目錄的。當你進入不了目錄時,你當然就不能對目錄內的文件做任何操作了。所以當我們想對目錄執行目錄內文件列表查看時,除了要有r讀權限還要有x執行權限;同理要對目錄執行w操作時,也同時還需要x執行權限。
原創文章,作者:beyond,如若轉載,請注明出處:http://www.www58058.com/30835