如何在linux上使用suid、sgid和sticky位

SUID、SGID和Sticky位是強大的特殊許可權,您可以為Linux上的可執行檔案和目錄設定這些許可權。我們將分享使用它們的好處和潛在的缺陷。...

SUID、SGID和Sticky位是強大的特殊許可權,您可以為Linux上的可執行檔案和目錄設定這些許可權。我們將分享使用它們的好處和潛在的缺陷。

它們已經在使用了

將安全性構建到多使用者作業系統中會出現幾個難題。以密碼(看似)的基本概念為例。它們都必須儲存起來,這樣每次有人登入時,系統就可以將他鍵入的密碼與儲存的副本進行比較。顯然,密碼是王國的鑰匙,必須加以保護。

在Linux上,儲存的密碼有兩種保護方式:加密,只有具有root許可權的人才能訪問包含密碼的檔案。這聽起來很好,但卻帶來了一個難題:如果只有擁有root許可權的人才能訪問儲存的密碼,那麼那些沒有該許可權的人如何更改他們的密碼?

提升你的地位

通常,Linux命令和程式執行時與啟動程式的人具有相同的許可權集。當root執行passwd命令以更改密碼時,它將以root的許可權執行。這意味著passwd命令可以自由訪問/etc/shadow檔案中儲存的密碼。

理想的方案是,系統中的任何人都可以啟動passwd程式,但passwd程式保留root的提升許可權。這樣任何人都可以修改自己的密碼。

上面的場景正是Set User ID位(SUID)所做的。它使用檔案所有者的許可權而不是啟動程式的人的許可權來執行程式和命令。

你在提升這個專案的地位

不過,還有一個困惑。必須防止此人干涉他人的密碼。Linux採用了SUID方案,它允許它執行一組臨時借用的許可權的應用程式,但這只是安全性的一半。

防止某人使用他人密碼的控制機制包含在passwd程式中,而不是作業系統和SUID方案中。

使用提升許可權執行的程式如果不是以“設計安全”的心態建立的,可能會帶來安全風險。這意味著安全是你考慮的第一件事,然後你就建立在這個基礎上。不要寫你的程式,然後試著給它一層安全的外衣。

開源軟體的最大優勢是你可以自己檢視原始碼或者參考可信的同行評審。在passwd程式的原始碼中,有一些檢查,因此可以檢視執行該程式的人是否是root。如果某人是root使用者(或使用sudo的人),則允許使用不同的功能。

這是檢測是否有人是root使用者的程式碼。

如何在linux上使用suid、sgid和sticky位

下面是一個考慮到這一點的例子。因為root可以更改任何密碼,所以程式不必費心檢查它通常執行的檢查,以檢視使用者有權更改哪些密碼。因此,對於root,它跳過這些檢查並退出檢查函式。

如何在linux上使用suid、sgid和sticky位

使用核心Linux命令和實用程式,您可以確信它們已經實現了安全性,並且程式碼已經被多次審閱。當然,總有未知的剝削威脅。但是,補丁或更新很快就會出現以對抗任**識別的漏洞。

它是第三方軟體,尤其是任何非開源的軟體,在使用SUID時需要格外小心。我們不是說不要這樣做,但是,如果你這樣做了,你要確保它不會讓你的系統暴露在風險之下。你不想提升一個程式的特權,因為它不能正確地自治它自己和執行它的人。

使用suid的linux命令

以下是一些Linux命令,這些命令在由普通使用者執行時使用SUID位授予命令提升的許可權:

ls -l /bin/su ls -l /bin/ping ls -l /bin/mount ls -l /bin/umount ls -l /usr/bin/passwd

如何在linux上使用suid、sgid和sticky位

注意,檔名以紅色高亮顯示,表示已設定SUID位。

檔案或目錄上的許可權通常由三組三個字元表示:rwx。它們代表讀、寫和執行。如果信件存在,則表示已獲得許可。但是,如果出現連字元(-)而不是字母,則表示尚未授予該許可權。

這些許可權有三組(從左到右):檔案所有者許可權、檔案組成員許可權和其他許可權。在檔案上設定SUID位時,“s”表示所有者的執行許可權。

如果在沒有可執行功能的檔案上設定SUID位,則大寫的“S”表示這一點。

我們來看一個例子。普通使用者dave鍵入passwd命令:

passwd

如何在linux上使用suid、sgid和sticky位

passwd命令提示dave輸入新密碼。我們可以使用ps命令檢視執行程序的詳細資訊。

我們將在另一個終端視窗中使用ps和grep,並查詢passwd程序。我們還將在ps中使用-e(每個程序)和-f(全格式)選項。

我們鍵入以下命令:

ps -e -f | grep passwd

如何在linux上使用suid、sgid和sticky位

報告了兩行,其中第二行是grep程序,它在其中查詢字串為“passwd”的命令。不過,這是我們感興趣的第一行,因為這是dave啟動的passwd程序的第一行。

我們可以看到passwd程序的執行方式與root啟動它時的執行方式相同。

設定suid位

用chmod很容易改變SUID位。u+s符號模式設定SUID位,u-s符號模式清除SUID位。

為了說明SUID位的一些概念,我們建立了一個名為htg的小程式。它位於dave使用者的根目錄中,並且沒有SUID位。當它被執行時,它顯示真實有效的使用者id(UID)。

真正的UID屬於啟動程式的人。有效ID是程式執行時所使用的帳戶,就像啟動程式時所使用的帳戶一樣。

我們鍵入以下內容:

ls -lh htg ./htg

如何在linux上使用suid、sgid和sticky位

當我們執行程式的本地副本時,我們看到真實的和有效的id都被設定為dave。所以,它的行為就像一個正常的程式應該。

讓我們將它複製到/usr/local/bin目錄,以便其他人可以使用它。

我們鍵入以下命令,使用chmod設定SUID位,然後檢查它是否已設定:

sudo cp htg /usr/local/bin sudo chmod u+s /usr/local/bin/htg ls -hl /usr/local/bin/htg

如何在linux上使用suid、sgid和sticky位

因此,複製程式,並設定SUID位。我們將再次執行它,但這次將執行/usr/local/bin資料夾中的副本:

htg

如何在linux上使用suid、sgid和sticky位

即使dave啟動了這個程式,有效ID也被設定為root使用者。因此,如果mary啟動程式,同樣的事情也會發生,如下所示:

htg

如何在linux上使用suid、sgid和sticky位

真實身份是瑪麗,有效身份是根。程式以根使用者的許可權執行。

相關:如何在Linux上使用chmod命令

sgid位

Set Group ID(SGID)位與SUID位非常相似。在可執行檔案上設定SGID位時,有效組被設定為該檔案的組。程序使用檔案組成員的許可權執行,而不是使用啟動它的人的許可權。

我們調整了htg程式,這樣它也顯示了有效的組。我們將把htg程式組更改為使用者mary的預設組mary。我們還將使用帶有chown的美國和g+s符號模式來移除SUID位並設定SGID。

為此,我們鍵入以下內容:

sudo chown root:mary /usr/local/bin/htg sudo chmod u-s,g+s /usr/local/bin/htg ls -lh /usr/local/bin/htg

如何在linux上使用suid、sgid和sticky位

您可以在組許可權中看到由“s”表示的SGID位。另外,請注意,組被設定為mary,檔名現在以黃色突出顯示。

在我們執行程式之前,讓我們確定dave和mary屬於哪個組。我們將使用id命令和-G(groups)選項來列印所有組id。然後,我們將以dave的身份執行htg程式。

我們鍵入以下命令:

id -G dave id -G mary htg

如何在linux上使用suid、sgid和sticky位

mary的預設組ID是1001,htg程式的有效組是1001。因此,雖然它是由dave發起的,但它是在mary組成員的許可權下執行的。就好像戴夫加入了瑪麗組織一樣。

讓我們將SGID位應用到一個目錄。首先,我們將建立一個名為“work”的目錄,然後將其組更改為“geek”,然後在該目錄上設定SGID位。

當我們使用ls檢查目錄的設定時,我們還將使用-d(directory)選項,以便檢視目錄的詳細資訊,而不是目錄的內容。

我們鍵入以下命令:

sudo mkdir work sudo chown dave:geek work sudo chmod g+s work ls -lh -d work

如何在linux上使用suid、sgid和sticky位

設定SGID位和“geek”組。這些將影響在工作目錄中建立的任何項。

我們鍵入以下內容以進入工作目錄,建立一個名為“demo”的目錄,並檢查其屬性:

cd work mkdir demo ls -lh -d demo

如何在linux上使用suid、sgid和sticky位

SGID位和“geek”組自動應用於“demo”目錄。

讓我們鍵入以下內容以使用touch命令建立檔案並檢查其屬性:

touch useful.sh ls -lh useful.sh

如何在linux上使用suid、sgid和sticky位

新檔案的組將自動設定為“geek”

相關:如何在Linux上使用chown命令

有點粘

粘性位元的名字來源於它的歷史用途。在可執行檔案上設定時,它會向作業系統標記可執行檔案的文字部分應以交換方式保留,從而加快其重用速度。在Linux上,粘性位隻影響目錄,在檔案上設定它是沒有意義的。

在目錄上設定粘滯位時,使用者只能刪除該目錄中屬於自己的檔案。他們不能刪除屬於其他人的檔案,無論對這些檔案設定了哪種檔案許可權組合。

這允許您建立一個目錄,每個人和他們啟動的程序都可以用作共享檔案儲存。這些檔案受到保護,因為,同樣,沒有人可以刪除任何其他人的檔案。

讓我們建立一個名為“shared”的目錄,我們將使用chmod的o+t符號模式來設定該目錄的粘性位。然後我們將檢視該目錄上的許可權,以及/tmp和/var/tmp目錄。

我們鍵入以下命令:

mkdir shared sudo chmod o+t shared ls -lh -d shared ls -lh -d /tmp ls -lh -d /var/tmp

如何在linux上使用suid、sgid和sticky位

如果設定了粘滯位,則“其他”檔案許可權集的可執行位設定為“t”。檔名也以藍色突出顯示。

/tmp和/var/tmp資料夾是兩個擁有為所有者、組和其他人設定的所有檔案許可權的目錄示例(這就是它們以綠色突出顯示的原因)。它們被用作臨時檔案的共享位置。

有了這些許可權,理論上任何人都應該可以做任何事情。但是,粘性位會覆蓋它們,任何人都不能刪除不屬於他的檔案。

提醒

以下是我們上面所述內容的快速清單,以供將來參考:

  • SUID只對檔案有效。
  • 您可以將SGID應用於目錄和檔案。
  • 只能對目錄應用粘性位。
  • 如果“s”、“g”或“t”指示器以大寫形式出現,則表示尚未設定可執行位(x)。
  • 發表於 2021-04-02 14:48
  • 閱讀 ( 39 )
  • 分類:網際網路

你可能感興趣的文章

遲鈍的(blunt)和粘端結紮術(sticky end ligation)的區別

...是鈍性結紮和粘性結紮的區別。 R參考文獻:1。限制性酶如何成為分子生物學的工作馬〉,《國家科學院院刊》。國家Acad科學,n.d.Web。2017年4月12日。阿德南,阿姆納。限制性酶在生物技術中的應用。N、 p.,N.d.網路。2017年4月12...

  • 發佈於 2020-10-25 22:10
  • 閲讀 ( 50 )

你能在linux上執行它嗎?11個在linux上執行的windows應用程式

... 相關:如何在Linux上安裝Minecraft ...

  • 發佈於 2021-03-11 00:39
  • 閲讀 ( 53 )

你的密碼管理器安全嗎?比較了5項服務

... 資料加密解釋瞭如何保護密碼、支付資訊和個人資訊的安全。對於主密碼,Dashlane使用10000次PBKDF2迭代來獲得加密金鑰。Dashlane使用AES-256加密其伺服器上的任何資料。像LastPass一樣,公司從...

  • 發佈於 2021-03-13 11:59
  • 閲讀 ( 48 )

windows與linux:以下是它們的共同點

... 人們喜歡指著Windows,為這個功能或是這個功能是如何從Linux或Mac中被盜而哭泣。但是,微軟在1985年就率先推出了一個Windows1.0的功能:Alt+Tab開關。 ...

  • 發佈於 2021-03-14 16:05
  • 閲讀 ( 55 )

葡萄酒程式不起作用?嘗試以下步驟

...更好的機會讓程式執行。您可以在他們的網站上找到有關如何為Linux發行版執行此操作的具體說明。 ...

  • 發佈於 2021-03-16 10:20
  • 閲讀 ( 50 )

如何用舊計算機構建linux網路伺服器

... 下面介紹如何設定Linux web伺服器。 ...

  • 發佈於 2021-03-17 19:20
  • 閲讀 ( 54 )

如何使用windows subsystem for linux執行linux桌面

... 下面介紹如何使用Windows子系統在Windows中執行Linux桌面。 ...

  • 發佈於 2021-03-18 04:14
  • 閲讀 ( 45 )

最好的無需安裝的便攜應用程式

...,就像其他計算機檔案一樣。那麼,當zip檔案壞了時,您如何盡力挽救它呢?你用Zip2Fix。 ...

  • 發佈於 2021-03-18 12:35
  • 閲讀 ( 68 )

如何在windows10上獲得linux bash shell

... 如何在windows10上安裝linux bash shell ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 58 )

如何在64位pc上執行真正老的軟體:6種方法

...箇舊的軟體需要執行,它確實提出了一個問題。下面是你如何反擊,讓你的舊16位軟體和遊戲在Windows10上執行。 ...

  • 發佈於 2021-03-21 15:52
  • 閲讀 ( 55 )
zlrh9970
zlrh9970

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦