特殊權(quán)限 SUID凯旭、SGID概耻、Sticky

[特殊權(quán)限 SUID、SGID尽纽、Sticky]

一. 前提

本篇主要講解SUID, SGID, Sticky三個(gè)權(quán)限的基本原理和應(yīng)用.

為什么要使用特殊權(quán)限?

比如系統(tǒng)中假如有超過四類人然而每一類人都需要一種獨(dú)特權(quán)限.只有三種獨(dú)特權(quán)限的基礎(chǔ)權(quán)限系統(tǒng)就會(huì)明顯不夠用.

特殊權(quán)限可以擴(kuò)展系統(tǒng)基礎(chǔ)權(quán)限的功能,使得linux權(quán)限更加強(qiáng)大靈活.

在理解特殊權(quán)限之前,需要先具備幾個(gè)關(guān)于安全上下文的認(rèn)知:

前提:進(jìn)程有屬主和屬組咐蚯;文件有屬主和屬組;

(1) 任何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程:取決于發(fā)起者對(duì)程序文件是否擁有執(zhí)行權(quán)限弄贿;

(2) 啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為發(fā)起者矫膨;進(jìn)程的屬組為發(fā)起者所屬的組差凹;

(3) 進(jìn)程訪問文件時(shí)的權(quán)限,取決于進(jìn)程的發(fā)起者:

(a) 進(jìn)程的發(fā)起者侧馅,同文件的屬主:則應(yīng)用文件屬主權(quán)限危尿;

(b) 進(jìn)程的發(fā)起者,屬于文件的屬組馁痴;則應(yīng)用文件屬組權(quán)限谊娇;

(c) 應(yīng)用文件“其它”權(quán)限;

二. SUID

  1. 權(quán)限設(shè)定方法:

  2. 字母表示法:

chmod u+s FILE...

chmod u-s FILE...

  1. 數(shù)字表示法:

chmod 4755 FILE 添加SUID權(quán)限到二進(jìn)制程序文件(添加到DIR無意義)

在普通三位數(shù)字權(quán)限位之前,用4代表添加的SUID位

chmod 0xxx .... 可以刪除文件的SUID(無法刪除目錄的SUID)

  1. 文件權(quán)限表示:

ll f1

-rwsr-xr-x. 1 root root 0 Nov 17 20:18 f1
文件屬主的x權(quán)限,用s代替.表示被設(shè)置了SUID
如果屬主位沒有x權(quán)限,會(huì)顯示為大寫S,表示有故障(權(quán)限無效)

  1. SUID相關(guān)說明:

  2. 啟動(dòng)為進(jìn)程之后罗晕,其進(jìn)程的屬主為原程序文件的屬主济欢;

  3. 只能作用在二進(jìn)制程序上,不能作用在腳本上,且設(shè)置在目錄上無意義 ;

  4. 執(zhí)行suid權(quán)限的程序時(shí),此用戶將繼承此程序的所有者權(quán)限;

  5. SUID工作原理

  6. 環(huán)境前提:

  7. linux中有一個(gè)二進(jìn)制程序cat,屬主屬組均為root

  8. linux中有一個(gè)系統(tǒng)文件/etc/shadow,屬主屬組均為root

  9. 我們創(chuàng)建一個(gè)普通用戶叫user1

  10. user1具有對(duì)cat的執(zhí)行權(quán)限

  11. user1 不具有對(duì)/etc/shadow的任何權(quán)限

  12. 默認(rèn)情況下

  13. user1執(zhí)行cat,系統(tǒng)創(chuàng)建一個(gè)cat進(jìn)程,進(jìn)程的屬主屬組取程序發(fā)起者,也就是user1:user1

  14. cat進(jìn)程訪問/etc/shadow,由于進(jìn)程屬主屬組是user1:user1,與/etc/shadow的屬組屬主都不匹配,所以被拒絕訪問.

  15. 給cat設(shè)置SUID之后

  16. user1執(zhí)行cat.系統(tǒng)創(chuàng)建一個(gè)cat進(jìn)程,進(jìn)程的屬主取cat的屬主,屬組取程序發(fā)起者,就是root:user1

  17. cat進(jìn)程訪問/etc/shadow,由于進(jìn)程屬主是root,與/etc/shadow的屬主匹配,所以被允許訪問.

  18. 舉例說明:

passwd命令是linux系統(tǒng)中用來修改密碼的命令.系統(tǒng)中所有用戶都可以使用.

而passwd命令改密碼的行為是通過修改/etc/shadow文件來實(shí)現(xiàn).

看一下/etc/shadow的文件權(quán)限:

ll /etc/shadow

----------. 1 root root 1771 Nov 16 17:06 /etc/shadow

可見/etc/shadow對(duì)普通用戶沒有任何權(quán)限.

所以普通用戶默認(rèn)無法使用文本編輯器打開或者編輯這個(gè)文件.

那為什么通過passwd這個(gè)命令就可以編輯呢?

用ls命令查看passwd命令的源文件信息:

ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 2月 22 2012 /usr/bin/passwd

我們發(fā)現(xiàn)passwd這個(gè)程序的屬主位的執(zhí)行位不是x而是s,說明passwd被設(shè)置了特殊權(quán)限SUID.

于是普通用戶運(yùn)行passwd命令,系統(tǒng)創(chuàng)建的passwd進(jìn)程的屬主由默認(rèn)為"程序發(fā)起者"變?yōu)榱藀asswd的屬主

而passwd的屬主是root,所以普通用戶其實(shí)是在用root的權(quán)限修改/etc/shadow文件.最后passwd命令執(zhí)行結(jié)束,passwd進(jìn)程被關(guān)閉.

  1. 做個(gè)實(shí)驗(yàn):

給命令vim添加SUID,可以讓普通用戶自己把自己變?yōu)槌?jí)用戶.

看一下vim的原權(quán)限

ll /usr/bin/vim

-rwxr-xr-x. 1 root root 2289640 Aug 2 08:45 /usr/bin/vim

給vim加個(gè)SUID

chmod u+s /usr/bin/vim

權(quán)限變?yōu)?/p>

-rwsr-xr-x. 1 root root 2289640 Aug 2 08:45 /usr/bin/vim

現(xiàn)在用普通用戶登錄

su quintin

嘗試使用vim編輯系統(tǒng)賬戶文件/etc/passwd

$ vim /etc/passwd

找到自己的用戶名一行

image

修改第三列自己的uid為0

root的uid不用改.

然后保存,提示只讀文件,使用w!強(qiáng)制保存,成功!

image

我們知道普通用戶quintin對(duì)vim是有執(zhí)行權(quán)限的,而對(duì)/etc/passwd則沒有編輯權(quán)限.

通常情況下quintin啟動(dòng)vim后,系統(tǒng)會(huì)創(chuàng)建一個(gè)以當(dāng)前用戶quintin為屬主屬組的vim進(jìn)程,

此時(shí)vim進(jìn)程的屬主屬組為quintin:quintin,由于無論是屬主還是屬組都不具有對(duì)/etc/passwd的編輯權(quán)限,

所以這個(gè)vim進(jìn)程無權(quán)編輯/etc/passwd.

而給/usr/bin/vim設(shè)置了SUID之后,quintin或任何用戶啟動(dòng)vim程序時(shí),

系統(tǒng)創(chuàng)建的vim進(jìn)程的屬主則是取了/usr/bin/vim這個(gè)程序文件自身的屬主root,

所以此時(shí)vim進(jìn)程的屬主屬組為root:quintin. 系統(tǒng)檢查發(fā)現(xiàn)正好匹配了/etc/passwd的屬主,于是放行vim進(jìn)程.

其他文本編輯器同理.

退出vim并重新登陸quintin帳戶

這時(shí)發(fā)現(xiàn)命令提示符已完全變?yōu)閞oot,而且系統(tǒng)認(rèn)為我就是root

image

因?yàn)閘inux只通過uid判斷超級(jí)管理員,而quintin帳戶把自己的uid變成了超級(jí)管理員一樣的0,

所以重新登陸之后,quintin具有了root的身份.

測(cè)試:

找一個(gè)屬主屬組都為root且other位無w的文件

ll /app/f11

-rw-r--r--. 1 root root 0 Nov 17 20:18 f11 </pre>

改個(gè)名字

mv f11 f1

成功.

三. SGID

  1. 權(quán)限設(shè)定方法:

  2. 字母表示法

chmod g+s DIR/FILE...

chmod g-s DIR/FILE...

  1. 數(shù)字表示法 :

chmod 2755 DIR/FILE 添加SGID到目錄或文件

在普通數(shù)字權(quán)限位前,用2代表添加SGID位

chmod 0755 DIR/FILE 刪除文件的SGID,(目錄不受影響)

chmod 755 DIR/FILE 同上

  1. 文件權(quán)限表示:

ll /app/f1

-rwxr-sr-x. 1 root root 0 Nov 17 20:18 /app/f1 </pre>

文件屬組的x權(quán)限,用s代替.表示被設(shè)置了SGID

如果屬組位沒有x權(quán)限,會(huì)顯示為大寫S,表示有故障(權(quán)限無效)

  1. SGID相關(guān)說明:

  2. 作用在二進(jìn)制程序上時(shí):

執(zhí)行sgid權(quán)限的程序時(shí),此用戶將繼承此程序的所屬組權(quán)限

  1. 作用于目錄上時(shí):

此文件夾下所有用戶新建文件都自動(dòng)繼承此目錄的用戶組.

  1. SGID實(shí)例:

  2. 作用在二進(jìn)制程序上時(shí),原理同SUID,只是由user位變?yōu)間roup位.

  3. 作用于目錄上時(shí)演示:

普通帳戶quintin在/tmp中創(chuàng)建一個(gè)目錄叫quintindir,添加SGID.權(quán)限777

$ chmod 2777 quintindir/
$ ll -d quintindir/ drwxrwsrwx. 2 quintin quintin 6 Nov 18 14:42 quintindir/

切換到普通用戶user1,在quintindir目錄中創(chuàng)建一個(gè)文件和一個(gè)目錄

$ touch user1file
$ mkdir user1dir
$ ll-rw-rw-r--. 1 user1 quintin 0 Nov 18 14:47 user1file
drwxrwsr-x. 2 user1 quintin 6 Nov 18 14:47 user1dir </pre>

結(jié)果顯示,user1在quintindir目錄下創(chuàng)建的文件和目錄都自動(dòng)繼承了quintindir的屬組

而且新目錄的權(quán)限也繼承了SGID.

所以設(shè)定了SGID的目錄中的所有新建文件和目錄都會(huì)自動(dòng)屬于quintin組.

四. Sticky粘滯位

  1. 權(quán)限設(shè)定方法:

  2. 字母表示法:

chmod o+t DIR...

chmod o-t DIR...

chmod +t DIR...

  1. 數(shù)字表示法:

chmod 1755 DIR

在普通數(shù)字權(quán)限位前,用1代表添加Sticky位

  1. 文件權(quán)限表示:

ll -d tmp

drwxrwxrwt. 2 root root 19 Nov 17 20:02 tmp </pre>

    文件other位的x權(quán)限,用t代替.表示被設(shè)置了Sticky
    如果other位沒有x權(quán)限,會(huì)顯示為大寫T,表示有故障(權(quán)限無效) 
  1. Sticky相關(guān)說明:

  2. 對(duì)于一個(gè)多人可寫的目錄,如果設(shè)置了sticky小渊,則每個(gè)用戶僅能刪除和改名自己的文件或目錄法褥;

  3. 只能作用在目錄上.普通文件設(shè)置無意義,且會(huì)被linux內(nèi)核忽略

  4. 用戶在設(shè)置Sticky權(quán)限的目錄下新建的目錄不會(huì)自動(dòng)繼承Sticky權(quán)限

  5. Sticky實(shí)例:

  6. 目的:

我希望在系統(tǒng)中創(chuàng)建一個(gè)很多用戶可以共同使用的目錄,但是要求用戶之間不能互相刪除改變對(duì)方的文件.

  1. 實(shí)現(xiàn):

root用戶先創(chuàng)建一個(gè)777權(quán)限目錄/app/tmp

普通用戶quintin和wang分別在其中創(chuàng)建幾個(gè)文件和目錄

image

這時(shí)候有個(gè)問題,就是目錄中的任何用戶都可以隨意刪除其他人的文件.

所以root要給/tmp這個(gè)文件夾設(shè)定一個(gè)Sticky位.

chmod 1777 tmp

ll -d tmp

drwxrwxrwt. 5 root root 97 Nov 20 00:49 tmp </pre>

設(shè)定完畢可見目錄tmp的other權(quán)限中的x位已經(jīng)顯示為t.說明已設(shè)定成功.

  1. 測(cè)試

切換到quintin用戶,進(jìn)入/app/tmp目錄

嘗試刪除或改名用戶wang的文件或目錄

改名文件

[quintin@centos7 /app/tmp]$ mv wangf1 aaamv: cannot move ‘wangf1’ to ‘a(chǎn)aa’: Operation not permitted

改名目錄

[quintin@centos7 /app/tmp]$ mv wangd1 bbbmv: cannot move ‘wangd1’ to ‘bbb’: Operation not permitted

移動(dòng)文件
[quintin@centos7 /app/tmp]$ mv wangf1 qdir1/
mv: cannot move ‘wangf1’ to ‘qdir1/wangf1’: Operation not permitted </pre>

刪除文件
[quintin@centos7 /app/tmp]$ rm -f wangf1
rm: cannot remove ‘wangf1’: Operation not permitted </pre>

刪除目錄

[quintin@centos7 /app/tmp]$ rm -f wangf1
rm: cannot remove ‘wangf1’: Operation not permitted </pre>

以上所有操作均提示Operation not permitted,表明Sticky權(quán)限已發(fā)揮作用.

  1. 提示:

普通用戶在設(shè)定了Sticky位的目錄下創(chuàng)建的子目錄不會(huì)繼承這個(gè)Sticky權(quán)限,所以要注意設(shè)定好自己目錄的權(quán)限.

五. 總結(jié):

  1. 作用范圍及功能:

  2. SUID:作用于文件(二進(jìn)制程序)

此用戶將繼承此程序的所有者權(quán)限

  1. SGID:作用于文件(二進(jìn)制程序)和目錄

  2. 對(duì)于文件:

此用戶將繼承此程序的所屬組權(quán)限.

  1. 對(duì)于目錄:

此文件夾下所有用戶新建文件都自動(dòng)繼承此目錄的用戶組.

  1. Sticky:作用于目錄

設(shè)定后,目錄中的用戶只能刪除、移動(dòng)或改名自己的文件或目錄

| |

二進(jìn)制文件

|

目錄

|
|

SUID

|

此用戶將繼承此程序的所有者權(quán)限

|

無意義

|
|

SGID

|

此用戶將繼承此程序的所屬組權(quán)限

|

此目錄下所有用戶新建文件都自動(dòng)繼承此目錄的用戶組

|
|

Sticky

|

無意義

|

目錄中每個(gè)用戶僅能刪除酬屉、移動(dòng)或改名自己的文件或目錄

|

  1. 添加權(quán)限方法及注意事項(xiàng):

  2. 字母權(quán)限法很靈活,無論目錄還是文件都可以隨意添加刪除超級(jí)權(quán)限

chmod u+s ... 添加SUID

chmod g+s ... 添加SGID

chmod +s ...同時(shí)添加SUID和SGID

chmod -s ...同時(shí)刪除SUID和SGID

chmod o+t ...添加Sticky

chmod +t ...同上

  1. 數(shù)字權(quán)限表示法添加/刪除時(shí):

  2. 數(shù)字權(quán)限法可以同時(shí)刪除文件的所有三種超級(jí)權(quán)限

chmod 0755 FILE

chmod 755 FILE

  1. 數(shù)字權(quán)限法只能刪除目錄的Sticky.不能刪除目錄的SUID和SGID.
  2. 數(shù)字權(quán)限法每次只能設(shè)置一種超級(jí)權(quán)限.添加權(quán)限時(shí):

對(duì)于文件,會(huì)刪除掉原有的其他超級(jí)權(quán)限.

對(duì)于目錄,添加SUID或SGID時(shí),Sticky會(huì)被刪除.

  1. 所有表示為大寫字母的權(quán)限均為無效(故障)權(quán)限,因?yàn)槿鄙倭讼鄳?yīng)的x權(quán)限.

  2. 幾個(gè)權(quán)限位映射參考:

SUID: user, 占據(jù)屬主的執(zhí)行權(quán)限位半等;

s: 屬主擁有x權(quán)限

S:屬主沒有x權(quán)限

SGID: group, 占據(jù)group的執(zhí)行權(quán)限位揍愁;

s: group擁有x權(quán)限

S:group沒有x權(quán)限

Sticky: other, 占據(jù)ohter的執(zhí)行權(quán)限位;

t: other擁有x權(quán)限

T:other沒有x權(quán)限

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杀饵,一起剝皮案震驚了整個(gè)濱河市莽囤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌切距,老刑警劉巖烁登,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蔚舀,居然都是意外死亡饵沧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門赌躺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狼牺,“玉大人,你說我怎么就攤上這事礼患∈窃浚” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵缅叠,是天一觀的道長悄泥。 經(jīng)常有香客問我,道長肤粱,這世上最難降的妖魔是什么弹囚? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮领曼,結(jié)果婚禮上鸥鹉,老公的妹妹穿的比我還像新娘。我一直安慰自己庶骄,他們只是感情好毁渗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著单刁,像睡著了一般灸异。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羔飞,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天肺樟,我揣著相機(jī)與錄音,去河邊找鬼褥傍。 笑死儡嘶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恍风。 我是一名探鬼主播蹦狂,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼誓篱,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了凯楔?” 一聲冷哼從身側(cè)響起窜骄,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摆屯,沒想到半個(gè)月后邻遏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虐骑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年准验,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷没。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糊饱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颠黎,到底是詐尸還是另有隱情另锋,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布狭归,位于F島的核電站夭坪,受9級(jí)特大地震影響恋追,放射性物質(zhì)發(fā)生泄漏辕翰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一菱肖、第九天 我趴在偏房一處隱蔽的房頂上張望潭流。 院中可真熱鬧竞惋,春花似錦、人聲如沸灰嫉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讼撒。三九已至,卻和暖如春股耽,著一層夾襖步出監(jiān)牢的瞬間根盒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工物蝙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炎滞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓诬乞,卻偏偏與公主長得像册赛,于是被迫代替她去往敵國和親钠导。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容