為什么要給文件設置權限
首先,Linux是多用戶操作系統,一臺服務器,可能有開發、運維、測試等多個部門構成,同時還有有一個超級管理員root,也就是項目負責人CTO負責整個項目的進度周期。
然而,Linux中的命令十分靈活,專業度要求也很高,如果一個剛剛實習的程序員擁有root權限,不小心刪除了重要文件或者數據,就可能導致整個項目付之一炬?;蛘邌T工離職跑路直接刪除公司數據庫,這樣的案例業內屢見不鮮。
因此,就要給每個用戶分配不同權限,比如,每個用戶對自己創建的文件擁有最高權限,同時,開發組內用戶對組內文件可以進行修改。每個操作都有日志記錄。然而,開發組員工進入運維組目錄,只可以觀看,不可以更改。每個部門再設置一個共享目錄,共享目錄都不可以修改,只有將內容拷貝到自己的目錄下才可以修改。
這樣,才可以更好的保障Linux系統的安全性,一方面防止自己內部人員危險操作,另一方面也可以防止黑客入侵,即時黑客破解了某個用戶的賬號密碼,由于權限有限,也難以進行大規模損害操作。
權限的基本概念
Linux下一切皆文件,不同的用戶對文件擁有不同的權限。在多用戶計算機系統的管理中,權限是指某個特定的用戶具有特定的系統資源使用權利。
在Linux 中分別有讀、寫、執行權限:
權限針對文件 | 權限針對目錄 | |
讀r | 表示可以查看文件內容 | 表示可以查看目錄中存在的文件名稱 |
寫w | 表示可以更改文件的內容 | 表示是否可以刪除目錄中的子文件或者新建子目錄( |
執行x | 表示是否可以開啟文件當中記錄的程序,一般指二進制文件(.sh) | 表示是否可以進入目錄中 |
查看文件權限
Linux中,不同用戶角色創建文件默認權限不同,root用戶創建文件默認權限如上圖所示。
- -代表文件類型是一個普通文件
- 紅框代表文件擁有者user
- 綠框代表文件所屬組group組內其他用戶
- 藍框代表其他用戶other
- 如果是目錄,文件類型為d
文件類型
Linux一共有7種文件類型,分別如下:
- -:普通文件
- d:目錄文件
- l: 軟鏈接(類似Windows的快捷方式)
- b:block,塊設備文件(例如硬盤、光驅等)
- p:管道文件
- c:字符設備文件
- s:套接口文件/數據接口文件
文件權限設置-字母
權限設置:
1:確認要給哪個身份設置權限,u、g、o、ugo(a)
2:確認是添加權限(+)、刪除權限(-)還是賦予權限(=)
3:確認給這個用戶針對這個文件或文件夾設置什么樣的權限,r、w、x
文件權限設置-數字
權限 | 對應數字 | 意義 |
r | 4 | 可讀 |
w | 2 | 可寫 |
x | 1 | 可執行 |
- | 0 | 沒有權限 |
文件擁有者和所屬組設置
擁有者設置
所屬組設置
同時修改擁有者和所屬組
特殊權限
冒險位SETUID(針對二進制文件)
作用:為了讓一般使用者臨時具有該文件所屬主/組的執行權限。
例如:/usr/bin/passwd在執行它的時候需要去修改/etc/passwd和/etc/shadow等文件,這些文件除了root外,其他用戶都沒有寫權限,但是又為了能讓普通用戶修改自己的密碼,那么該如何操作?
去除S位權限
添加S位權限
強制位SETGID(針對目錄)
作用:如果一個目錄有強制位,那么任何用戶在該目錄里所創建的文件屬組都會繼承該目錄的屬組。
去除S位權限
添加S位權限
粘附位T(針對目錄)
作用:只允許文件的創建者和root用戶刪除文件(防止誤刪除權限位)
去除粘附位
添加粘附位
umask
umask表示創建文件時的默認權限(即創建文件時不需要設置而天生的權限)
我們創建一個普通文件最高權限666,而創建一個文件夾其最高權限777。
實際文件權限 = 最高權限 - umask的值
獲取用戶umask值
修改umask值(一般不要更改)
臨時修改
永久修改
ACL權限
ACL,是 Access Control List(訪問控制列表)的縮寫,在 Linux 系統中, ACL 可實現對單一用戶或者某個組設定訪問文件的權限,ACL優勢就是讓權限控制更加的精準。
安裝acl
獲取ACL權限
設置ACL權限
mask權限設置:
目錄遞歸授權