文件的特殊權(quán)限主要分為SetUID、SetGID、Sticky BIT三種。
本章節(jié)主要是學(xué)習(xí)SetUID。
1、SetUID的功能
- 只有可以執(zhí)行的二進(jìn)制程序才能設(shè)定SetUID權(quán)限(非可執(zhí)行二進(jìn)制文件并非不能設(shè)定,而是設(shè)定了也無(wú)意義);
- 命令執(zhí)行者要對(duì)該二進(jìn)制程序擁有x(可執(zhí)行)權(quán)限;
- 命令執(zhí)行者在執(zhí)行該二進(jìn)制程序時(shí)獲得程序文件的所屬者身份;
- SetUID權(quán)限只在改程序執(zhí)行過(guò)程中有效(身份改變只是在程序執(zhí)行過(guò)程中,執(zhí)行結(jié)束后自動(dòng)變化原來(lái)的身份);
以用戶修改密碼舉例說(shuō)明:
在前面章節(jié) 從零開(kāi)始學(xué)習(xí)Linux(二十):用戶配置文件 中,我們學(xué)習(xí)了用戶使用passwd命令修改密碼,會(huì)修改 /etc/shadow 文件。/etc/shadow 文件的權(quán)限是000,如下圖所示:
繼續(xù)查看ACL權(quán)限,也沒(méi)有ACL權(quán)限,如下圖所示:
按照之前我們學(xué)習(xí)到的知識(shí),沒(méi)有寫(xiě)權(quán)限,普通用戶是不能夠?qū)懭胛募摹5荓inux系統(tǒng)中非root用戶是可以修改密碼的,即能夠編輯 /etc/shadow 文件。這個(gè)就是通過(guò)本節(jié)SetUID權(quán)限實(shí)現(xiàn)的。
查看passwd文件的位置,并查看passwd文件的詳細(xì)信息。如下圖所示:
從圖中我們可以看到2個(gè)比較怪異的地方:
(1)passwd命令背景是紅色標(biāo)記(Linux紅色表示危險(xiǎn)或錯(cuò)誤);
(2)passwd所屬者權(quán)限是rws(以前都是rwx);
權(quán)限s是以前沒(méi)有看到的,s表示是SetGID權(quán)限。
使用cat命令查看shadow文件,整個(gè)執(zhí)行過(guò)程如下圖所示:
使用cat命令查看/etc/shadow文件和使用passwd命令修改/etc/shadow文件,整個(gè)過(guò)程對(duì)比如下圖所示:
到這我們已經(jīng)說(shuō)清楚了SetUID權(quán)限的功能(類似于Windows系統(tǒng)中的以管理員身份運(yùn)行,不盡相同)。
2、設(shè)定SetUID的方法
2.1、方法一
命令格式:chmod -R 4755 文件名(-R 也可以不加);
說(shuō)明:4表示SetUID權(quán)限,權(quán)限可以理解為有4位,之前我們一直設(shè)置為三位,是因?yàn)槭孜晃覀儙缀醪粫?huì)用到。首位4表示SetUID權(quán)限,首位2表示SetGID權(quán)限,首位1表示Sticky BIT權(quán)限。
執(zhí)行命令:
chmod -R 4755 neimenggu
執(zhí)行過(guò)程如下圖所示:
可以看到以前的權(quán)限是 -rwxr-xr-x+,執(zhí)行命令后權(quán)限是 -rwsr-xr-x+ 。
2.2、方法二
命令格式:chmod -R u+s 文件名(-R 也可以不加);
3、取消SetUID的方法
3.1、方法一
命令格式:chmod -R 755 文件名(-R 也可以不加);
去除首位權(quán)限,只保留三位權(quán)限位。
3.2、方法二
命令格式:chmod -R u-s 文件名(-R 也可以不加);
執(zhí)行命令:
chmod -R u-s neimenggu
可以看到,執(zhí)行命令后,權(quán)限從 -rwsr-xr-x+ 又變回 -rwxr-xr-x+。
再次為neimenggu文件賦予rw-r--r--(4644)權(quán)限,然后再次查看文件詳細(xì)信息:
從圖中可以看到權(quán)限為既不是rwx也不是rws,是rwS。我們說(shuō)過(guò)Linux是嚴(yán)格區(qū)分大小寫(xiě)的,所以這顯示S不是顯示錯(cuò)誤。
S表示錯(cuò)誤的SetUID權(quán)限,要想設(shè)置SetUID權(quán)限的前提是文件具有執(zhí)行權(quán)限。我們對(duì)文件設(shè)置rw-r--r--權(quán)限,沒(méi)有執(zhí)行權(quán)限,所以會(huì)報(bào)錯(cuò)!!!
4、危險(xiǎn)的SetUID
SetUID權(quán)限非常危險(xiǎn),沒(méi)有特殊需求不要設(shè)置SetUID權(quán)限。
對(duì)系統(tǒng)中默認(rèn)具有SetUID權(quán)限的文件作一列表,定時(shí)檢查有沒(méi)有這之外的文件被設(shè)置了SetUID權(quán)限。