點擊返回 自學Linux命令行與Shell腳本之路html
7.3-linux共享文件
在linux系統中共享文件的方法是經過建立組。linux
1. linux爲每一個文件和目錄存儲了3個額外的信息位:
- SUID設置用戶ID
當文件被用戶使用時,程序會以文件屬主的權限運行
- SGID設置組ID
對文件來講,程序會以文件屬組的權限運行
對目錄來講,目錄建立的新文件會以目錄的默認屬組做爲默認屬組
- 粘着位
進程結束後文件還駐留在內存中
SUID設置用戶ID用s表示。shell
- 用戶對應的前三位的x位上若是有,就用小s表示suid。當x位上沒有x的時候,suid就是大寫的S。
- 設置用戶ID位就是讓普通用戶能夠以root或其餘用戶的權限運行只有root或其它用戶才能運行的程序或命令,或程序命令對應原本沒有權限操做的文件等。
- 僅對二進制命令程序有效,不能用在shell等相似腳本文件上。shell腳本僅僅是調用二進制命令程序而已,所以,具體權限還須要看二進制命令自己。
- 二進制命令程序須要有可執行權限x\
- suid權限僅在程序執行過程當中有效。
- 執行命令的任意用戶能夠得到該命令程序執行期間擁有這的權限。
- suid是雙刃劍,是一個比較危險的功能,對系統安全有必定的威脅。
SGID設置組ID
與suid不一樣,sgid既能夠針對文件,也能夠陣地目錄設置。sgid是針對用戶權限修改的。
sgid主要用在目錄中,當爲某個目錄設置了sgid位之後,在該目錄中建立的文件具備該目錄的全部這權限,而不是建立該文件的用戶的默認全部者。這樣,使得在多個用戶之間共享一個目錄中的文件 變得簡單。安全
對文件,sgid功能以下:ui
- sgid僅對二進制命令程序有效。
- 二進制命令或程序須要可執行權限。
- 執行程序的任意用戶能夠得到該命令程序執行期間所屬組的權限。
對目錄,sgid功能以下:命令行
- 用戶在此目錄下建立的文件和目錄,具備和此目錄相同的用戶組設置。
粘着位 sticky bit htm
粘滯位功能用得少,不過對於/tmp目錄這樣的,是整個系統臨時文件存放地,須要設置粘滯位。
一個目錄即便開發全部權限rwxrwxrwx,若是設置了粘滯位,除非目錄屬主和root用戶有權限刪除它,其它用戶不能刪除這個目錄。
讓全部用戶都具備/tmp目錄全部權限,可是每一個用戶只能刪除本身的文件。用t表示,若是沒有執行權限,那麼就是T。/tmp目錄誰均可以寫,經常是木馬第一手跳板地點。blog
如上圖,/tmp權限位最後一位是t。這就是設置了粘滯位。進程
2. 如何共享文件
經過以上的介紹,SGID位對共享文件很是重要,如下就是創建共享文件步驟:內存
- 用mkdir命令建立共享目錄
- 經過chgrp命令將目錄的默認屬組改爲包含全部須要共享文件的用戶的組
- 更改目錄的SGID位置位,確保目錄中的新建文件都用shared做爲默認屬組
- 全部組成員將umask值設置成文件對屬組成員可寫
- 最後,,組成員能到共享目錄下建立新文件,同時shared組內的全部用戶都能訪問這個文件