1. 程式人生 > >自學Linux Shell7.3-linux共享文件

自學Linux Shell7.3-linux共享文件

bsp 學linux 屬組 info 不同 文件 .html 建立 AS

點擊返回 自學Linux命令行與Shell腳本之路

7.3-linux共享文件

在linux系統中共享文件的方法是通過創建組。

1. linux為每個文件和目錄存儲了3個額外的信息位:

  • SUID設置用戶ID
    當文件被用戶使用時,程序會以文件屬主的權限運行
  • SGID設置組ID
    對文件來說,程序會以文件屬組的權限運行
    對目錄來說,目錄創建的新文件會以目錄的默認屬組作為默認屬組
  • 粘著位
    進程結束後文件還駐留在內存中

SUID設置用戶ID用s表示。

  • 用戶對應的前三位的x位上如果有,就用小s表示suid。當x位上沒有x的時候,suid就是大寫的S。
  • 設置用戶ID位就是讓普通用戶可以以root或其他用戶的權限運行只有root或其它用戶才能運行的程序或命令,或程序命令對應本來沒有權限操作的文件等。
  • 僅對二進制命令程序有效,不能用在shell等類似腳本文件上。shell腳本僅僅是調用二進制命令程序而已,因此,具體權限還需要看二進制命令本身。
  • 二進制命令程序需要有可執行權限x\
  • suid權限僅在程序執行過程中有效。
  • 執行命令的任意用戶可以獲得該命令程序執行期間擁有這的權限。
  • suid是雙刃劍,是一個比較危險的功能,對系統安全有一定的威脅。

SGID設置組ID
與suid不同,sgid既可以針對文件,也可以陣地目錄設置。sgid是針對用戶權限修改的。
sgid主要用在目錄中,當為某個目錄設置了sgid位以後,在該目錄中創建的文件具有該目錄的所有這權限,而不是創建該文件的用戶的默認所有者。這樣,使得在多個用戶之間共享一個目錄中的文件 變得簡單。

 對文件,sgid功能如下:

  • sgid僅對二進制命令程序有效。
  • 二進制命令或程序需要可執行權限。
  • 執行程序的任意用戶可以獲得該命令程序執行期間所屬組的權限。

 對目錄,sgid功能如下:

  • 用戶在此目錄下創建的文件和目錄,具有和此目錄相同的用戶組設置。

粘著位 sticky bit 

粘滯位功能用得少,不過對於/tmp目錄這樣的,是整個系統臨時文件存放地,需要設置粘滯位。
一個目錄即使開發所有權限rwxrwxrwx,如果設置了粘滯位,除非目錄屬主和root用戶有權限刪除它,其它用戶不能刪除這個目錄。
讓所有用戶都具有/tmp目錄所有權限,但是每個用戶只能刪除自己的文件。用t表示,如果沒有執行權限,那麽就是T。/tmp目錄誰都可以寫,常常是木馬第一手跳板地點。

技術分享圖片

如上圖,/tmp權限位最後一位是t。這就是設置了粘滯位。

2. 如何共享文件

通過以上的介紹,SGID位對共享文件非常重要,以下就是建立共享文件步驟:

  • 用mkdir命令創建共享目錄
  • 通過chgrp命令將目錄的默認屬組改成包含所有需要共享文件的用戶的組
  • 更改目錄的SGID位置位,確保目錄中的新建文件都用shared作為默認屬組
  • 所有組成員將umask值設置成文件對屬組成員可寫
  • 最後,,組成員能到共享目錄下創建新文件,同時shared組內的所有用戶都能訪問這個文件

自學Linux Shell7.3-linux共享文件