linux文件的特殊權限總結與實驗

在linux中,有一個安全上下文的概念,一個進程(運行的程序)能否訪問某個文件,取決於發起進程的用戶對被操作文件存在什麼權限。

A. 如果進程的發起者是該被訪問文件的屬主,則以文件屬主的權限來訪問

B. 否則,如果進程的發起者是屬於該被訪問文件的屬組中的用戶,則以文件屬組的權限來訪問

C. 否則,以其他用戶來訪問此文件

而在這個權限之外,還存在着三種特殊權限

SUID:當對某一個程序文件設置了SUID置位,則該進程(程序)訪問系統上的文件時,以程序的屬主的身份來訪問該文件,而不是執行程序的用戶的權限來訪問文件。

SGID:當某目錄的屬組對目錄有寫權限,並且設置了SGID置位時,屬於屬組的這些用戶在這個目錄下創建文件時,被創建的文件的屬組默認會變成該目錄的屬組,而不是創建文件的用戶的基本組。

SBIT:當對某目錄設置了SBIT置位時,用戶只能刪除自己在該目錄下創建的文件,而不能刪除其他用戶創建的文件,哪怕用戶對目錄存在寫權限。

操作:

1. SUID:   chmod u+s

2. SGID:  chmod g+s

3. SBIT: chmod o+t

實驗:

一、 SUID實驗

將/bin/cat複製到/test目錄,將/test/bin程序進行SUID置位。讓一個普通使用該程序來查看/etc/shadow文件。然後再用系統自帶的/bin/cat來查看該文件。

#  將/bin/cat複製到/test目錄

[root@liuqing test]# cp /bin/cat /test/

[root@liuqing test]# ll /test

總用量 60

-rwxr-xr-x. 1 root root 54080 11月 21 17:04 cat

#對/test/cat文件進行SUID置位,該文件的屬主屬組都是root

[root@liuqing test]# chmod u+s /test/cat

[root@liuqing test]# ll

總用量 60

-rwsr-xr-x. 1 root root 54080 11月 21 17:04 cat

-rw-r-----. 1 lyf  lyf     14 11月 21 16:15 file1.txt

#切換到普通用戶liuqing

[root@liuqing test]# su - liuqing

上一次登錄:四 11月 21 16:05:54 CST 2019pts/1 上

[liuqing@liuqing ~]$

#普通用戶liuqing,使用/test/cat可以查看/etc/shadow

[liuqing@liuqing ~]$ /test/cat /etc/shadow

root:$6$gdIxmcOy$JSDVjR0tSdQfVTDrukonWIfRLdDIut63ZYiucsTmj8TPJ0Sq/wZduJhWgSUidlHeW6pmISq.B7Vx4OlGX1P1p1:18185:0:99999:7:::

#普通用戶使用系統自帶的/bin/cat,不能查看/etc/shadow

[liuqing@liuqing ~]$ ll /bin/cat

-rwxr-xr-x. 1 root root 54080 8月  20 14:25 /bin/cat

[liuqing@liuqing ~]$ cat /etc/shadow

cat: /etc/shadow: 權限不夠

二、 SGID實驗

系統上有兩個用戶,gentoo和fedora,它們的附加組爲mygrp,現在對/test目錄進行SGID置位,當我們使用這兩個用戶在/test目錄下創建文件時,文件的屬組會自動變成mygrp。

#查看gentoo和fedora是否存在

[root@liuqing test]# id gentoo

uid=4007(gentoo) gid=4007(gentoo) 組=4007(gentoo),5000(magedu)

[root@liuqing test]# id fedora

uid=4008(fedora) gid=4008(fedora) 組=4008(fedora),5000(magedu)

# 創建組mygrp

[root@liuqing test]# groupadd mygrp

# 將用戶gentoo和fedora添加附加組mygrp

[root@liuqing test]# usermod -a -G mygrp gentoo

[root@liuqing test]# usermod -a -G mygrp fedora

[root@liuqing test]# id gentoo

uid=4007(gentoo) gid=4007(gentoo) 組=4007(gentoo),5000(magedu),5003(mygrp)

[root@liuqing test]# id fedora

uid=4008(fedora) gid=4008(fedora) 組=4008(fedora),5000(magedu),5003(mygrp)

# 修改/test的屬組爲mygrp,修改屬組權限爲rwx,對/test進行SGID置位

[root@liuqing /]# chown :mygrp /test

[root@liuqing /]# chmod g+w /test

[root@liuqing /]# chmod g+s /test

[root@liuqing /]# ls -ld  /test

drwxrwsr-x. 2 root mygrp 34 11月 21 17:23 /test

# 切換用戶到gentoo

[root@liuqing /]# su - gentoo

上一次登錄:四 11月 21 17:22:21 CST 2019pts/0 上

[gentoo@liuqing ~]$

# gentoo用戶在/test目錄下創建了gentoo.txt文件,查看文件屬性,該文件屬組爲mygrp

[gentoo@liuqing ~]$ touch /test/gentoo.txt

[gentoo@liuqing ~]$ ll /test

總用量 60

-rw-rw-r--. 1 gentoo mygrp     0 11月 21 17:25 gentoo.txt

三、 SBIT實驗

/test目錄的屬組是mygrp,對這個目錄,進行了SGID置位,mygrp組對目錄有rwx權限。那麼這個目錄下,附加組是mygrp的用戶在目錄中創建的文件的屬組是mygrp,這時,附加組是mygrp的這些用戶可以在目錄中創建、修改刪除文件,而這樣的話,這些用戶也可以刪除別的用戶創建的文件,爲了不讓別人刪除某用戶創建的文件,則可以對目錄進行stick,stick之後,只有用戶自己和管理員可以刪除該目錄下該用戶自己創建的文件。

# 對目錄進行stick置位,查看權限,發現在o的權限位,有一個t

[root@liuqing test]# chmod o+t /test

[root@liuqing test]# ls -ld /test

drwxrwsr-t. 2 root mygrp 52 11月 21 17:25 /test

#切換到fedora用戶,創建一個fedora.txt

[root@liuqing test]# su  - fedora

[fedora@liuqing ~]$ touch /test/fedora.txt

[fedora@liuqing ~]$ echo "How are you?"  >> /test/fedora.txt

#查看目錄下的文件,對於gentoo.txt ,它的權限是屬組有rw。

[fedora@liuqing ~]$ ll /test

-rwsr-xr-x. 1 root   root  54080 11月 21 17:04 cat

-rw-rw-r--. 1 fedora mygrp    13 11月 22 08:45 fedora.txt

-rw-rw-r--. 1 gentoo mygrp     0 11月 21 17:25 gentoo.txt

#fedora用戶可以編輯gentoo.txt這個文件

[fedora@liuqing ~]$ echo  "New line"  >> /test/gentoo.txt

[fedora@liuqing ~]$

[fedora@liuqing ~]$

[fedora@liuqing ~]$ cat /test/gentoo.txt

New line

#由於進行了SBIT置位,fedora用戶不能刪除gentoo.txt這個文件,因爲這個文件不是fedora創建的。

[fedora@liuqing ~]$ rm /test/gentoo.txt

rm: 無法刪除"/test/gentoo.txt": 不允許的操作


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章