【linux】循序漸進學運維-基礎篇-文件特殊權限管理

前言:

上一節我們瞭解了Linux操作系統的權限管理,今天我們來聊聊文件特殊管理權限:

文件特殊管理權限主要從以下幾點進行討論:
SUID
SGID
Sticky bit

1. SUID詳解

chmod u+s
chomd 4777
chmod u-s

我們平時創建用戶後都會設置密碼,我們都 知道passwd 和shadow,我們來看看他們的權限

[root@zmgaosh test]# ll /etc/passwd
-rw-r--r-- 1 root root 1317 6月  20 15:16 /etc/passwd
[root@zmgaosh test]# ll /etc/shadow
---------- 1 root root 1073 6月  20 15:16 /etc/shadow
[root@zmgaosh test]# 

從上面可以看到,/etc/shadow,沒有任何的訪問權限,修改密碼就是要把密碼寫入到這個沒有權限的shadow, 如果是root修改密碼我們可以理解,那如果是一個普通用戶呢,能不能修改自己的密碼。

  • 不能,因爲沒有權限,只能root幫他修改密碼
  • 能,既然你這麼問了肯定要猜能

我們來做個試驗試一下:

 
[root@zmgaosh test]# useradd gaosh
[root@zmgaosh test]# passwd gaosh
更改用戶 gaosh 的密碼 。
新的 密碼:
無效的密碼: 密碼未通過字典檢查 - 它沒有包含足夠的不同字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@zmgaosh test]# su - gaosh
[gaosh@zmgaosh ~]$ whoami
gaosh
[gaosh@zmgaosh ~]$ passwd
Changing password for user gaosh.
Changing password for gaosh.
(current) UNIX password:    #先輸入本身的密碼
New password:                 #輸入新密碼
Retype new password: 
passwd: all authentication tokens updated successfully.
[gaosh@zmgaosh ~]$ 
[gaosh@zmgaosh ~]$ ll /usr/bin/passwd
-rwsr-xr-x 1 root root 27856 Aug  9  2019 /usr/bin/passwd

可以看到,普通用戶設置密碼也能成功,所以貓膩在哪裏呢,我們查看下passwd這個命令,發現該命令在owner區域的執行權限字段不是x而是s

結論: 如果一個命令的SUID位被設置爲s, 那麼其在執行的過程中,命令的執行用戶就會切換成命令的owner進行執行

接下來爲了驗證上述結論,我們拿一個沒有s權限的來試一下
實驗步驟:

  1. 在沒有suid權限時候能否執行操作
  2. 加上suid權限再次查看結果

本次我們用more命令

[root@zmgaosh test]# ll /usr/bin/more
-rwxr-xr-x 1 root root 41112 12月  3 2019 /usr/bin/more

可以看到沒有suid權限

[root@zmgaosh test]# su - gaosh    
上一次登錄:一 6月 22 07:54:55 CST 2020pts/0 上
[gaosh@zmgaosh ~]$ whoami
gaosh
[gaosh@zmgaosh ~]$ more /etc/shadow     #沒有suid權限的時候,無法查看此文件
/etc/shadow: Permission denied
[gaosh@zmgaosh ~]$ exit
logout
[root@zmgaosh test]# chmod u+s /usr/bin/more    #加上suid權限
[root@zmgaosh test]# ll !$
ll /usr/bin/more
-rwsr-xr-x 1 root root 41112 12月  3 2019 /usr/bin/more  #可以看到x位的s
[root@zmgaosh test]# su - gaosh
上一次登錄:一 6月 22 08:06:14 CST 2020pts/0 上
[gaosh@zmgaosh ~]$ whoami
gaosh
[gaosh@zmgaosh ~]$ more /etc/shadow  #已經能夠查看
root:$6$SlVomD$EBjlGVUUOnCCk.lupiqnL58ESGeVJBNCvIc7IE6LNQ9J66OEhNSvlZQvk8EJkx6laSHDeDnuVN3NnJgqZxZid.:18430:0:999
99:7:::

注意,有時候在owner區的s可能設置的是S。給普通文件強行加suid權限,顯示的就是大寫的S,因爲普通文件本身沒有x執行權限, 正確的用法是先給文件x權限,然後在給s權限,這樣纔是小寫的s.

實驗步驟:

  1. 先查看普通文件的權限
  2. 給予普通文件s權限,查看是否出現大S
  3. 去掉suid權限,先給予執行權限再給予s權限
  4. 查看是否x位是否爲小s
[root@zmgaosh test]# ll
總用量 0
-rw-r--r-- 1 root root 0 6月  22 07:31 gaosh.txt
[root@zmgaosh test]# chmod u+s gaosh.txt 
[root@zmgaosh test]# ll
總用量 0
-rwSr--r-- 1 root root 0 6月  22 07:31 gaosh.txt
[root@zmgaosh test]# chmod u-s gaosh.txt 
[root@zmgaosh test]# ll
總用量 0
-rw-r--r-- 1 root root 0 6月  22 07:31 gaosh.txt
[root@zmgaosh test]# chmod u+x gaosh.txt 
[root@zmgaosh test]# chmod u+s gaosh.txt 
[root@zmgaosh test]# ll
總用量 0
-rwsr--r-- 1 root root 0 6月  22 07:31 gaosh.txt
[root@zmgaosh test]# 

2. .SGID (Set-group identification)

SGID和SUID基本類似,知識在命令執行後切換的用戶不是owner而是group
可以給二進制可執行文件設置,也可以給目錄設置

如果給目錄設置SGID權限,那麼在這個目錄下新創建文件的時候,新創建的文件所屬組會集成上級目錄的權限。

[root@zmgaosh test]# mkdir gaosh
[root@zmgaosh test]# ll -d gaosh
drwxr-xr-x 2 root root 4096 6月  22 08:20 gaosh
[root@zmgaosh test]# chmod g+s gaosh
[root@zmgaosh test]# ll
總用量 4
drwxr-sr-x 2 root root 4096 6月  22 08:20 gaosh

[root@zmgaosh test]# chown :gaosh gaosh  #改變文件目錄的屬組
[root@zmgaosh test]# ll -d gaosh
drwxr-sr-x 2 root gaosh 4096 6月  22 08:21 gaosh
[root@zmgaosh test]# cd gaosh
[root@zmgaosh gaosh]# touch test1  #驗證新創建的文件的屬組會不會改變
[root@zmgaosh gaosh]# ll
總用量 0
-rw-r--r-- 1 root root  0 6月  22 08:21 test
[root@zmgaosh gaosh]# 

注意: SGID的s權限也是分大小寫的,當g權限組沒有x權限的時候,設置SGID後就會變成大寫的S,這點跟SUID一樣。

3. SBIT 權限 (Sticky Bit)

設置方法: chmod g+s

注意: 只對目錄有效

Sticky Bit主要用於目錄的共享。目錄 /var/tmp and /tmp就具備共享功能,所有用戶都可以創建文件,還可以修改或執行其它用戶的文件,但是刪除文件只能是文件擁有者。一旦目錄的Sticky Bit被設置了,就能保證目錄中各自的文件只有文件的擁有者和root可以刪除。

[root@zmgaosh gaosh]# ll -d /var/tmp
drwxrwxrwt. 4 root root 4096 6月  20 20:31 /var/tmp

權限t也有大小寫之分,大寫說明沒有x權限,小寫說明有x權限,這點和權限s是一樣的。

總結:

  1. 三種權限的設置方法:
    SUID: chmod u+s SGID: chmod g+s SBIT: chmod o+t
    數字表示: SUID =4 SGID =2 SBIT=1
    chmod 4777 chmod 2777 chmod 1777

如果三種權限都設置的話,就是chmod 7777

  1. 及時排除擁有特殊權限的用戶,如果不是你本人設置的一定要去掉特殊權限,並檢查是否 有後門漏洞。

我是高勝寒,一個在教培行業不忘初心的人

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