99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

5.3 文件的特殊權(quán)限

2022-05-30 13:53 更新

在復(fù)雜多變的生產(chǎn)環(huán)境中,單純設(shè)置文件的rwx權(quán)限無法滿足我們對安全和靈活性的需求,因此便有了SUID、SGID與SBIT的特殊權(quán)限位。這是一種對文件權(quán)限進(jìn)行設(shè)置的特殊功能,可以與一般權(quán)限同時使用,以彌補(bǔ)一般權(quán)限不能實現(xiàn)的功能。下面具體解釋這3個特殊權(quán)限位的功能以及用法。

  1. SUID

SUID是一種對二進(jìn)制程序進(jìn)行設(shè)置的特殊權(quán)限,可以讓二進(jìn)制程序的執(zhí)行者臨時擁有屬主的權(quán)限(僅對擁有執(zhí)行權(quán)限的二進(jìn)制程序有效)。例如,所有用戶都可以執(zhí)行passwd命令來修改自己的用戶密碼,而用戶密碼保存在/etc/shadow文件中。仔細(xì)查看這個文件就會發(fā)現(xiàn)它的默認(rèn)權(quán)限是000,也就是說除了root管理員以外,所有用戶都沒有查看或編輯該文件的權(quán)限。但是,在使用passwd命令時如果加上SUID特殊權(quán)限位,就可讓普通用戶臨時獲得程序所有者的身份,把變更的密碼信息寫入到shadow文件中。這很像我們在古裝劇中見到的手持尚方寶劍的欽差大臣,他手持的尚方寶劍代表的是皇上的權(quán)威,因此可以懲戒貪官,但這并不意味著他永久成為了皇上。因此這只是一種有條件的、臨時的特殊權(quán)限授權(quán)方法。

查看passwd命令屬性時發(fā)現(xiàn)所有者的權(quán)限由rwx變成了rws,其中x改變成s就意味著該文件被賦予了SUID權(quán)限。另外有讀者會好奇,那么如果原本的權(quán)限是rw-呢?如果原先權(quán)限位上沒有x執(zhí)行權(quán)限,那么被賦予特殊權(quán)限后將變成大寫的S。

    [root@linuxprobe ~]# ls -l /etc/shadow
    ----------. 1 root root 1004 Jan 3 06:23 /etc/shadow
    [root@linuxprobe ~]# ls -l /bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jan 29 2017 /bin/passwd
  1. SGID

SGID主要實現(xiàn)如下兩種功能:

讓執(zhí)行者臨時擁有屬組的權(quán)限(對擁有執(zhí)行權(quán)限的二進(jìn)制程序進(jìn)行設(shè)置);

在某個目錄中創(chuàng)建的文件自動繼承該目錄的用戶組(只可以對目錄進(jìn)行設(shè)置)。

SGID的第一種功能是參考SUID而設(shè)計的,不同點在于執(zhí)行程序的用戶獲取的不再是文件所有者的臨時權(quán)限,而是獲取到文件所屬組的權(quán)限。舉例來說,在早期的Linux系統(tǒng)中,/dev/kmem是一個字符設(shè)備文件,用于存儲內(nèi)核程序要訪問的數(shù)據(jù),權(quán)限為:

    cr--r-----   1 root system 2,  1 Feb 11 2017  kmem

大家看出問題了嗎?除了root管理員或?qū)儆趕ystem組成員外,所有用戶都沒有讀取該文件的權(quán)限。由于在平時我們需要查看系統(tǒng)的進(jìn)程狀態(tài),為了能夠獲取到進(jìn)程的狀態(tài)信息,可在用于查看系統(tǒng)進(jìn)程狀態(tài)的ps命令文件上增加SGID特殊權(quán)限位。查看ps命令文件的屬性信息:

    -r-xr-sr-x   1 bin system 59346 Feb 11 2017  ps

這樣一來,由于ps命令被增加了SGID特殊權(quán)限位,所以當(dāng)用戶執(zhí)行該命令時,也就臨時獲取到了system用戶組的權(quán)限,從而可以順利地讀取設(shè)備文件了。

前文提到,每個文件都有其歸屬的所有者和所屬組,當(dāng)創(chuàng)建或傳送一個文件后,這個文件就會自動歸屬于執(zhí)行這個操作的用戶(即該用戶是文件的所有者)。如果現(xiàn)在需要在一個部門內(nèi)設(shè)置共享目錄,讓部門內(nèi)的所有人員都能夠讀取目錄中的內(nèi)容,那么就可以創(chuàng)建部門共享目錄后,在該目錄上設(shè)置SGID特殊權(quán)限位。這樣,部門內(nèi)的任何人員在里面創(chuàng)建的任何文件都會歸屬于該目錄的所屬組,而不再是自己的基本用戶組。此時,我們用到的就是SGID的第二個功能,即在某個目錄中創(chuàng)建的文件自動繼承該目錄的用戶組(只可以對目錄進(jìn)行設(shè)置)。

    [root@linuxprobe ~]# cd /tmp
    [root@linuxprobe tmp]# mkdir testdir
    [root@linuxprobe tmp]# ls -ald testdir/
    drwxr-xr-x. 2 root root 6 Feb 11 11:50 testdir/
    [root@linuxprobe tmp]# chmod -Rf 777 testdir/
    [root@linuxprobe tmp]# chmod -Rf g+s testdir/
    [root@linuxprobe tmp]# ls -ald testdir/
    drwxrwsrwx. 2 root root 6 Feb 11 11:50 testdir/

在使用上述命令設(shè)置好目錄的777權(quán)限(確保普通用戶可以向其中寫入文件),并為該目錄設(shè)置了SGID特殊權(quán)限位后,就可以切換至一個普通用戶,然后嘗試在該目錄中創(chuàng)建文件,并查看新創(chuàng)建的文件是否會繼承新創(chuàng)建的文件所在的目錄的所屬組名稱:

    [root@linuxprobe tmp]# su - linuxprobe
    Last login: Wed Feb 11 11:49:16 CST 2017 on pts/0
    [linuxprobe@linuxprobe ~]$ cd /tmp/testdir/
    [linuxprobe@linuxprobe testdir]$ echo "linuxprobe.com" > test
    [linuxprobe@linuxprobe testdir]$ ls -al test
    -rw-rw-r--. 1 linuxprobe root 15 Feb 11 11:50 test

除了上面提到的SGID的這兩個功能,我們再介紹兩個與本小節(jié)內(nèi)容相關(guān)的命令:chmod和chown。

chmod命令是一個非常實用的命令,能夠用來設(shè)置文件或目錄的權(quán)限,格式為“chmod [參數(shù)] 權(quán)限 文件或目錄名稱”。如果要把一個文件的權(quán)限設(shè)置成其所有者可讀可寫可執(zhí)行、所屬組可讀可寫、其他人沒有任何權(quán)限,則相應(yīng)的字符法表示為rwxrw----,其對應(yīng)的數(shù)字法表示為760。通過前面的基礎(chǔ)學(xué)習(xí)和當(dāng)前的練習(xí)實踐,現(xiàn)在大家可以感受到使用數(shù)字法來設(shè)置文件權(quán)限的便捷性了吧。

    [root@linuxprobe ~]# ls -al test
    -rw-rw-r--. 1 linuxprobe root 15 Feb 11 11:50 test
    [root@linuxprobe ~]# chmod 760 test
    [root@linuxprobe ~]# ls -l test
    -rwxrw----. 1 linuxprobe root 15 Feb 11 11:50 test

除了設(shè)置文件或目錄的權(quán)限外,還可以設(shè)置文件或目錄的所有者和所屬組,這里使用的命令為chown,其格式為“chown [參數(shù)] 所有者:所屬組 文件或目錄名稱”。

chmod和chown命令是用于修改文件屬性和權(quán)限的最常用命令,它們還有一個特別的共性,就是針對目錄進(jìn)行操作時需要加上大寫參數(shù)-R來表示遞歸操作,即對目錄內(nèi)所有的文件進(jìn)行整體操作。

    [root@linuxprobe ~]# ls -l test
    -rwxrw----. 1 linuxprobe root 15 Feb 11 11:50 test
    [root@linuxprobe ~]# chown root:bin test
    [root@linuxprobe ~]# ls -l test
    -rwxrw----. 1 root bin 15 Feb 11 11:50 test
  1. SBIT

現(xiàn)在,大學(xué)里的很多老師都要求學(xué)生將作業(yè)上傳到服務(wù)器的特定共享目錄中,但總是有幾個“破壞分子”喜歡刪除其他同學(xué)的作業(yè),這時就要設(shè)置SBIT(Sticky Bit)特殊權(quán)限位了(也可以稱之為特殊權(quán)限位之粘滯位)。SBIT特殊權(quán)限位可確保用戶只能刪除自己的文件,而不能刪除其他用戶的文件。換句話說,當(dāng)對某個目錄設(shè)置了SBIT粘滯位權(quán)限后,那么該目錄中的文件就只能被其所有者執(zhí)行刪除操作了。

最初不知道是哪位非資深技術(shù)人員將Sticky Bit直譯成了“粘滯位”,劉遄老師建議將其稱為“保護(hù)位”,這既好記,又能立刻讓人了解它的作用。RHEL 7系統(tǒng)中的/tmp作為一個共享文件的目錄,默認(rèn)已經(jīng)設(shè)置了SBIT特殊權(quán)限位,因此除非是該目錄的所有者,否則無法刪除這里面的文件。https://www.linuxprobe.com/chapter-05.html

與前面所講的SUID和SGID權(quán)限顯示方法不同,當(dāng)目錄被設(shè)置SBIT特殊權(quán)限位后,文件的其他人權(quán)限部分的x執(zhí)行權(quán)限就會被替換成t或者T,原本有x執(zhí)行權(quán)限則會寫成t,原本沒有x執(zhí)行權(quán)限則會被寫成T。

    [root@linuxprobe tmp]# su - linuxprobe
    Last login: Wed Feb 11 12:41:20 CST 2017 on pts/0
    [linuxprobe@linuxprobe tmp]$ ls -ald /tmp
    drwxrwxrwt. 17 root root 4096 Feb 11 13:03 /tmp
    [linuxprobe@linuxprobe ~]$ cd /tmp
    [linuxprobe@linuxprobe tmp]$ ls -ald
    drwxrwxrwt. 17 root root 4096 Feb 11 13:03 .
    [linuxprobe@linuxprobe tmp]$ echo "Welcome to linuxprobe.com" > test
    [linuxprobe@linuxprobe tmp]$ chmod 777 test
    [linuxprobe@linuxprobe tmp]$ ls -al test 
    -rwxrwxrwx. 1 linuxprobe linuxprobe 10 Feb 11 12:59 test

其實,文件能否被刪除并不取決于自身的權(quán)限,而是看其所在目錄是否有寫入權(quán)限(其原理會在下個章節(jié)講到)。為了避免現(xiàn)在很多讀者不放心,所以上面的命令還是賦予了這個test文件最大的777權(quán)限(rwxrwxrwx)。我們切換到另外一個普通用戶,然后嘗試刪除這個其他人創(chuàng)建的文件就會發(fā)現(xiàn),即便讀、寫、執(zhí)行權(quán)限全開,但是由于SBIT特殊權(quán)限位的緣故,依然無法刪除該文件:

    [root@linuxprobe tmp]# su - blackshield
    Last login: Wed Feb 11 12:41:29 CST 2017 on pts/1
    [blackshield@linuxprobe ~]$ cd /tmp
    [blackshield@linuxprobe tmp]$ rm -f test
    rm: cannot remove ‘test’: Operation not permitted

當(dāng)然,要是也想對其他目錄來設(shè)置SBIT特殊權(quán)限位,用chmod命令就可以了。對應(yīng)的參數(shù)o+t代表設(shè)置SBIT粘滯位權(quán)限:

    [blackshield@linuxprobe tmp]$ exit
    Logout
    [root@linuxprobe tmp]# cd ~
    [root@linuxprobe ~]# mkdir linux
    [root@linuxprobe ~]# chmod -R o+t linux/
    [root@linuxprobe ~]# ls -ld linux/
    drwxr-xr-t. 2 root root 6 Feb 11 19:34 linux/
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號