最近工作時需要用到Linux文件系統權限方面的知識,特意做了一些了解。
Linux文件系統權限基本知識
當我們使用ls -l 命令 或ll 命令可以以列表的形式查看文件
[appuser@localhost app]$ ls -l
total 0
drwxr-xr-x 6 appuser rd 190 Aug 27 09:44 download
drwxr-xr-x 3 appuser rd 69 Aug 12 08:45 handle
drwxr-xr-x 7 appuser rd 267 May 26 16:30 jdk1.8.0_241
drwxr-xr-x 10 appuser rd 152 Aug 27 09:50 nginx
我們可以看到第一列 drwxr-xr-x共十個字符,分別代表如下含義
位置 | 常見取值 | 含義 |
---|---|---|
第1位 | d\l\-... | d代表是一個目錄 l代表是一個鏈接 -代表是一個文件等等。其他含義可自行百度 |
第2\5\8位 | r\- | r代表讀權限 -代表沒有對應權限 第2位的r代表文件所屬用戶擁有的權限 第5位代碼文件所屬用戶組的用戶擁有的權限 第8位代表其他用戶擁有的權限 |
第3\6\9位 | w\- | w代表寫權限 -代表沒有對應權限 第3位的r代表文件所屬用戶擁有的權限 第6位代碼文件所屬用戶組的用戶擁有的權限 第9位代表其他用戶擁有的權限 |
第4\7\10位 | x\- | x代表執行權限 第4位的r代表文件所屬用戶擁有的權限 第7位代碼文件所屬用戶組的用戶擁有的權限 第10位代表其他用戶擁有的權限 |
常見的文件權限管理方案
通常我們會用來進行文件權限管理:如下場景
用戶A、B、C都需要向某系統D發送文件。因文件過大且低頻,四方決定使用ftp的方式發送。D系統希望在服務器上創建了分別為三個用戶創建了用戶ua(用戶組ga)、ub(用戶組gb)、uc(用戶組gc)及文件夾a、b、c,希望各個用戶可以訪問各自的目錄,但不可以訪問其他用戶的目錄,以避免信息泄露。而系統D在處理的文件的時候可以采用統一的用戶進行讀、寫、移動、刪除操作。
因此將目錄a、b、c分別修改為ua、ub、uc所有,目錄權限設為770,所屬用戶組修改為D系統所用的用戶組gd,gd不含用戶a、b、c。
這樣由于用戶ua、ub、uc分別有各自目錄的rwx權限,因此可以cd目錄并創建創建文件,且用戶無法訪問不屬于自己的目錄。
用戶ud屬于用戶組gd,擁有三個目錄的rwx權限,可以cd目錄并移動、創建、刪除文件。