日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
創(chuàng)新互聯linux教程:5.3文件的特殊權限

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

我們提供的服務有:網站設計、網站建設、微信公眾號開發(fā)、網站優(yōu)化、網站認證、開陽ssl等。為數千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的開陽網站制作公司

  1. SUID

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

查看passwd命令屬性時發(fā)現所有者的權限由rwx變成了rws,其中x改變成s就意味著該文件被賦予了SUID權限。另外有讀者會好奇,那么如果原本的權限是rw-呢?如果原先權限位上沒有x執(zhí)行權限,那么被賦予特殊權限后將變成大寫的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主要實現如下兩種功能:

讓執(zhí)行者臨時擁有屬組的權限(對擁有執(zhí)行權限的二進制程序進行設置);

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

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

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

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

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

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

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

    [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/

在使用上述命令設置好目錄的777權限(確保普通用戶可以向其中寫入文件),并為該目錄設置了SGID特殊權限位后,就可以切換至一個普通用戶,然后嘗試在該目錄中創(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é)內容相關的命令:chmod和chown。

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

    [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

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

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

    [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

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

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

與前面所講的SUID和SGID權限顯示方法不同,當目錄被設置SBIT特殊權限位后,文件的其他人權限部分的x執(zhí)行權限就會被替換成t或者T,原本有x執(zhí)行權限則會寫成t,原本沒有x執(zhí)行權限則會被寫成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

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

    [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

當然,要是也想對其他目錄來設置SBIT特殊權限位,用chmod命令就可以了。對應的參數o+t代表設置SBIT粘滯位權限:

    [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/

分享題目:創(chuàng)新互聯linux教程:5.3文件的特殊權限
文章源于:http://www.5511xx.com/article/cooesph.html