Linux 剖析目錄許可權 粘滯位

2021-10-22 19:26:37 字數 3289 閱讀 4933

本篇文章我將向大家詳細介紹linux中兩個非常重要的知識點目錄許可權以及粘滯位,這兩點也是在面試中經常會被問到的兩個問題,我會盡自己最大的努力來讓大家有所收穫。

2. 粘滯位(重點!!)

下面我們先來通過幾個例子來感受一下目錄的三種許可權。

dir1是當前路徑下的乙個目錄。我是這個目錄的擁有者,可以看到一開始我擁有目錄dir1的讀許可權,所以我可以呼叫ls指令檢視到當前目錄下有兩個檔案file1.txt和file2.txt。

這裡我再簡單說一下吧,觀察目錄詳細資訊的第一部分是10個字元。

這裡的第乙個字元'd'表示當前檔案的型別是目錄(注意:linux下一切皆檔案)。像下面的普通檔案file1.txt的第乙個字元就是'-'.

接下來的九個字元33為一組,分別表示擁有者、所屬組、其他使用者的許可權。

其中'r'表示可讀許可權,'w'表示可寫許可權,'x'表示可執行許可權。如果當前位置是字母,說明擁有這項許可權,如果是字元'-'說明不擁有這項許可權。

接下來使用chmod指令去掉擁有者的讀許可權。

chmod -r dir1

緊接著當我再來再來呼叫ls指令檢視目錄dir1下的檔案時,大家可以看到申請被拒絕。這就是因為我沒有這個目錄的讀許可權。

我們再來看:

雖然我當前沒有讀許可權,但是我還有寫許可權。因此我還是可以往目錄下寫檔案,而沒有被拒絕。

同理:

雖然我當前沒有讀許可權,但是我還有執行許可權。因此我還是可以進入到目錄中去。

如上圖所示,一開始我擁有dir1目錄的寫許可權,所以我可以呼叫touch指令往dir1目錄下建立乙個新檔案file4.txt。

touch dir1/file4.txt

當我再次呼叫chmod指令去掉擁有者的寫許可權:

chmod u-w dir1

這時我發現當我再次想要往目錄下寫檔案的時候,被拒絕了。這就是因為我沒有當前目錄下的寫許可權。

同理,雖然我沒有dir1目錄的寫許可權,但是我還是有dir1目錄的讀許可權和可執行許可權,因此我依舊可以進入檢視dir1目錄的檔案,以及進入dir1目錄。

這次我們再來看目錄的可執行許可權。

如上圖所示,一開始我擁有dir1目錄的可執行許可權,所以我可以進入到當前目錄下。

當我再次呼叫chmod指令移除掉擁有者的可執行許可權。

chmod u-x dir1

這時當我再次想要進入dir1目錄時,被拒絕了。這就是因為我沒有當前目錄的可執行許可權。

!!!但是,但是

我發現我雖然沒有當前目錄的可執行許可權,但是我還是有讀許可權和寫許可權的。好,你不讓我進去就不進去,但我還是可以讀dir1目錄下的內容,以及往dir1目錄裡寫東西吧。

但是可以看到,這兩個申請統統被拒絕了。這,又是為什麼呢?

目錄不論是讀還是寫,前提是都要進入目錄。也就是說如果沒有執行許可權進不去目錄,即使有讀和寫許可權依舊是無濟於事的。這是極為易錯的一點,也是面試中經常會被問道的乙個問題,所以大家應該牢記於心。

下面我再來為大家總結一下目錄的可執行許可權。

首先,什麼是粘滯位?為什麼會搞出這麼乙個東西呢?

這裡我就要帶大家再回顧一下我前面提到的目錄許可權的概念。

注意觀察可寫許可權當乙個人擁有目錄的可寫許可權時,他就可以刪除掉當前目錄下的檔案

這意味著什麼?就是只要使用者具有目錄的寫許可權, 使用者就可以刪除目錄中的檔案, 而不論這個使用者是否擁有這個檔案的寫許可權.

下面我們來驗證一下:

當前我是使用者leo,可以看到,當前路徑下有乙個目錄rootdir它的擁有者和所屬組是root,所以我是這個目錄的other。

這裡可以看到,我這個other擁有rootdir目錄的寫許可權。

然後進入到rootdir目錄裡可以看到,當前目錄裡有兩個檔案,file1.txt和file2.txt,這兩個檔案的擁有者和所屬組都是root,所以說我是這兩個檔案的other。注意看,我並沒有這兩個檔案的寫許可權和可執行許可權,也就是說我除了檢視外不能對這個檔案進行任何操作。

但是,我竟然呼叫rm指令將file2.txt檔案給刪掉了。

rm -f file2.txt

這個時候就會出現問題,這好像不太科學啊, 我張三建立的乙個檔案, 憑什麼被你李四可以刪掉,而且你張三也沒有我這個檔案的寫許可權啊?

為了解決這個不科學的問題, linux引入了粘滯位的概念.

當乙個目錄被設定為"粘滯位"(用chmod +t),則該目錄下的檔案只能由

這次我使用chmod指令為rootdir目錄加上粘滯位。

chmod +t rootdir

如上圖所示,加上粘滯位之後詳細資訊第一段的最後一列就會變為't'.

前面我剛為目錄rootdir加上了粘滯位,現在我再以leo的身份進來,這時我依舊具有rootdir目錄的讀寫許可權。

那我還能不能像剛才一樣刪掉該目錄下的檔案呢?

顯然,最終結果被拒絕了,提示操作不被允許。

這就是粘滯位的作用!!

Linux中粘滯位許可權

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

linux中SET位許可權和粘滯位許可權詳解

對檔案或目錄進行訪問控制時,讀取 寫入 執行 是最基本的三種許可權型別。除此之外,在linux中還存在著set位許可權 suid sgid 粘滯位 sticky bit 等為檔案或目錄提供額外的控制方式。下面我們就來聊聊這兩個非常有用的方式。set位許可權 位許可權多用於給可執行的程式或指令碼檔案進...

Linux檔案和目錄粘滯位許可權的使用與設定

粘滯位 stickybit 又稱粘著位,是unix檔案系統許可權的乙個旗標。最常見的用法在目錄上設定粘滯位,也只能針對 設定,對於 件 效。則設定了粘滯位後,只有目錄內檔案的所有者或者root才可以刪除或移動 該檔案。如果不為目錄設定粘滯位任何具有該目錄寫和執行許可權的使用者都可以刪除和移動其中的檔...