Linux中的SUID簡介


SUID權限簡介

SUID權限是Linux里的一種特殊權限,具體的體現為文件擁有者的執行權限x被替換為了s

image

  • 只有二進制程序文件才可以設定SUID,其他類型的文件設置沒有意義。
  • 在賦予SUID權限后,該文件的執行者僅在程序運行時將擁有該文件擁有者的權限。
  • 執行者必須要擁有該文件的執行權限(x)。

如何查找Linux中具有SUID的文件?

可以用以下三個命令查找(效果差不多):

find / -user root -perm -4000 -print 2>/dev/null
 
find / -perm -u=s -type f 2>/dev/null
 
find / -user root -perm -4000 -exec ls -ldb {} \;

下面以/usr/bin/passwd為例介紹:

Linux 系統中用戶的密碼信息被存儲在/etc/shadow文件中,只有 root 用戶擁有權限,其他用戶沒有任何權限。

image

普通用戶想要修改密碼,就是要修改/etc/shadow這個文件。這時系統提供了passwd這個命令來修改密碼,也就是/usr/bin/passwd這個二進制文件。該文件就是一個擁有SUID的文件。

image

那么根據前面對SUID的介紹,普通用戶在運行passwd命令時,相當於作為該程序的執行者,在運行passwd這個文件的時候,該用戶會具有該文件的擁有者的權限,也就是root的權限。以此來完成了對/etc/shadow文件的修改,也就是對自己密碼的修改。

這里我們以cat文件來實際操作一下:

cat命令通常用來查看文件內容。其權限如下圖所示:

image

首先我們使用root用戶創建一個測試文件:suid.txt,並使用chmod命令將其權限修改為000。

image

這時只有root用戶可以對該文件進行操作,使用普通用戶查看該文件會提示Permission denied。

image

接下來我們將賦予cat文件SUID權限,之后觀察其變化。

第一步先復制一個cat文件到當前目錄來供我們操作:

cp /bin/cat .

image

接下來,我們給這個文件SUID權限:

chmod u+s cat

image

可以看到這里擁有者權限里的x變為了s

如果這里的屬主位沒有x權限,會顯示為大寫S,表示有故障(權限無效)

此時我們再切換回普通用戶,用修改后的cat文件來查看suid.txt:

image

可以看到,此時該用戶並沒有該文件的權限,但依然成功查看了文件內容,這就是suid權限的作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM