Linux中的特殊許可權粘滯位(sticky bit)詳解

来源:http://www.cnblogs.com/MrListening/archive/2016/08/27/5813281.html
-Advertisement-
Play Games

Linux下的文件許可權 在linux下每一個文件和目錄都有自己的訪問許可權,訪問許可權確定了用戶能否訪問文件或者目錄和怎樣進行訪問。最為我們熟知的一個文件或目錄可能擁有三種許可權,分別是讀、寫、和執行操作,在這裡不做詳細說明。我們創建一個文件後系統會預設地賦予所有者讀和寫許可權。當然我們也可以自己修改它,添 ...


Linux下的文件許可權

在linux下每一個文件和目錄都有自己的訪問許可權,訪問許可權確定了用戶能否訪問文件或者目錄和怎樣進行訪問。最為我們熟知的一個文件或目錄可能擁有三種許可權,分別是讀、寫、和執行操作,在這裡不做詳細說明。我們創建一個文件後系統會預設地賦予所有者讀和寫許可權。當然我們也可以自己修改它,添加自己需要的許可權。

特殊許可權

但是這三種許可權就足夠了嗎?我們現在來說說在linux下的另一個特殊許可權。首先我們來看看在根目錄下的一個目錄tmp,可以看到tmp目錄的other許可權是'rwt',那麼這裡的t又是什麼許可權呢,有什麼意義。

在理解這個許可權之前我們先來看看tmp這個目錄是存放什麼東西的,linux下tmp目錄是存放一些臨時文件的,那麼上圖可以看到,該目錄的所有者和組用戶的許可權都是rwx,對於other的許可權是rwt。

我們知道如果一個目錄的other許可權設置有寫和執行許可權的話,那麼別的用戶也是可以在該目錄下進行創建文件和刪除文件等操作,我們來試一試:

現在是root用戶,在它的根目錄下創建了一個cur目錄,並且賦予了777許可權。

之後再給cur目錄下新建了test1和test2兩個文件,而此時我們可以看到這兩個文件的other許可權只有一個讀許可權。

現在我們切換用戶到dh用戶下,試著刪除剛剛新建的文件,發現是完全可以刪除的。那麼這就存在了一個問題,像/tmp目錄的許可權是應該設置成"rwxrwxrwx"的,因為它要允許任何用戶都能在該目錄下創建、刪除、移動文件等操作。但我們剛剛也看到了,我的dh用戶是可以刪除root用戶在cur目錄下創建的文件夾,那麼對於tmp目錄,任意用戶都可以刪除系統服務運行中的臨時文件(別的用戶的),那麼這肯定是我們不想要的。

所以回到最初,我們看到tmp目錄的許可權是"rwxrwxrwt",這裡的t就起了相當重要的作用。

粘滯位(粘著位)

上面所說的t許可權就是我們在這裡要講的粘滯位(sticky bit),我們給剛剛的cur目錄採用chmod o+t的方式給other用戶設置粘滯位。

然後我們繼續切換到dh用戶,看看我們能否繼續之前的刪除操作:

可以看到此時我們是沒有許可權刪除root用戶創建的文件了,這也就是粘滯位的作用。

粘滯位許可權便是針對此種情況設置,當⽬錄被設置了粘滯位許可權以後,即便⽤戶對該⽬錄有寫⼊許可權,也不能刪除該⽬錄中其他⽤戶的⽂件數據,⽽是只有該⽂件的所有者和root⽤戶才有權將其刪除。設置了粘滯位之後,正好可以保持⼀種動態的平衡:允許各⽤戶在⽬錄中任意寫⼊、刪除數據,但是禁⽌隨意刪除其他⽤戶的數據。

幾點說明

對於特殊許可權的添加是添加在原有的執行許可權上的,所以特殊許可權添加的要求需要文件或者目錄本身具有可執行許可權。

上圖中,我去掉了cur的other的執行許可權,可以看到本來't'的位置變成了'T',此時dh用戶在cur目錄中是不具有許可權來進行一系列操作的。

那麼原來的執行標誌x到哪裡去了呢? 系統是這樣規定的, 假如本來在該位上有x, 則這些特別標誌 (suid, sgid, sticky) 顯示為小寫字母 (s, s, t).否則, 顯示為大寫字母 (S, S, T) 。  

註意事項

》粘滯位許可權是針對目錄的,對文件無效

上述的這些操作是在root用戶下創建了一個test.c文件,然後添加了t許可權,然而在dh用戶下還是可以直接進行刪除的。所以粘滯位是針對有執行許可權的目錄的,對於文件添加粘滯位並沒有什麼作用。

 

 

 

 

 

 

文章原創作者:Mr_Listening https://home.cnblogs.com/u/MrListening/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文介紹RHEL7.2文件的歸檔和壓縮 文件歸檔 歸檔的好處:方便使用、查詢、閱讀,易於管理 (批量刪除文件) 常用操作 命令:tar 作用:將許多文件一起保存至一個單獨的磁帶或磁碟歸檔,並能從歸檔中單獨還原所需文件 用法: tar [選項...] [FILE]... | 選項 | 說明 | | : ...
  • 進程概念 | 名稱 | 說明 | | : | : | | 程式 | 一組指令的集合 | | 進程 |程式的執行就是進程也可以把進程看成一個獨立的程式在記憶體中有其對應的代碼空間和數據空間,一個進程所擁有的數據和代碼只屬於自己進程是資源分配的基本單位,也是調度運行的基本單位 | | 線程 | 線程被人們 ...
  • 一、問題起源 在Linux系統中,通過rm刪除文件將會從文件系統的目錄結構上解除鏈接(unlink),如果文件是被打開的(有一個進程正在使用),那麼進程將仍然可以讀取該文件磁碟空間也一直被占用 這樣就會導致我們明明刪除了文件,但是磁碟空間卻未被釋放 二、問題分析 1、首先獲得一個已經被刪除但是仍然被 ...
  • 》進程式控制制塊 在linux中進程信息存放在叫做進程式控制制塊的數據結構中,每個進程在內核中都有⼀個進程式控制制塊(PCB)來維護進程相關的信息,Linux內核的 進程式控制制塊是task_struct結構體。在Linux中,這個結構叫做task_struct。 task_struct是Linux內核的一種數據結 ...
  • 1、問題描述 2、問題分析 google 499 / ClientClosed Request An Nginx HTTP server extension. This codeis introduced to log the case when the connection is closed b ...
  • 1.運行環境Windows xp;Arduino1.6.11 IDE.2.問題在Arduino編譯時,經常出現如下的錯誤: collect2.exe: error: ld returned 5 exit statusexit status 1Error compiling for board Ard... ...
  • 1.MMU是Memory Management Unit的縮寫,中文名是記憶體管理單元,它是中央處理器(CPU)中用來管理虛擬存儲器、物理存儲器的控制線路,同時也負責虛擬地址映射為物理地址,以及提供硬體機制的記憶體訪問授權,多用戶多進程操作系統。 2.虛擬記憶體由來:許多年以前,當人們還在使用DOS或是更 ...
  • 文: 小波/QQ463431476 今年暑假參加了電子設計比賽,4天3夜(2016/7/25 7/29)選了個電子秤,所以想說說一點心得分享一下。秤可以測量,用了濾波和一個線性的方程。 硬體部分主要焊接4個電阻應變片搭建一個全橋電路,然後經過放大器,將電壓信號放大,HX711擁有一個24位 AD 來 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...