天天看點

Setuid權限的介紹和查找-讓任意賬号以root身份執行指令

linux的檔案系統權限除了常見的讀、寫、執行(r、w、x)外還有s、t、i、a權限:

本文介紹一下這四種特殊權限中的s鍵位有什麼特點

s:檔案屬主群組設定suid和guid,檔案在被設定了s權限後将以root身份執行。

在設定s權限時檔案屬主、屬組必須先設定相應的x權限,否 則s權限并不能正真生效(當我們ls -l時看到rws,大寫s說明s權限未生效)。比如linux修改密碼的passwd便是個設定了suid的程式,普通使用者無讀寫/etc/shadow檔案 的權限确可以修改自己的密碼。

我們來進行測試,使用root賬号建立一個700的檔案,這樣除了root别人對這個檔案都沒有任何權限,包括讀取。

<code>1</code>

<code>[root@</code><code>test</code> <code>test</code><code>]</code><code># echo test&gt;test.txt</code>

<code>2</code>

<code>[root@</code><code>test</code> <code>test</code><code>]</code><code># chmod 700 test.txt</code>

<code>3</code>

<code>[root@</code><code>test</code> <code>test</code><code>]</code><code># ls -l test.txt</code>

<code>4</code>

<code>-rwx------ 1 root root 5 oct 27 13:37 </code><code>test</code><code>.txt</code>

現在卻換到非root使用者下測試,無法讀取這個檔案:

<code>[ntop@test test]$ cat test.txt</code>

<code>cat: test.txt: permission denied</code>

然後我們給cat添加setuid權限測試

<code>[root@</code><code>test</code> <code>test</code><code>]</code><code># chmod a+s /bin/cat</code>

<code>[root@</code><code>test</code> <code>test</code><code>]</code><code># su ntop</code>

<code>[ntop@</code><code>test</code> <code>test</code><code>]$ </code><code>cat</code> <code>test</code><code>.txt</code>

<code>test</code>

<code>5</code>

<code>[ntop@</code><code>test</code> <code>test</code><code>]$</code>

已經可以通路這個隻有root使用者才有權限通路的檔案了。

是以這是一個非常危險的權限,如果rm被賦予了s,那麼就可以删除任意root可以删除的檔案了。是以應該謹慎給程式賦予這個權限。

可以通過 find / -perm -4000檢視系統中所有具有setuid權限檔案,看是否有被别人而已添加了超級權限的檔案影響了系統的安全~

繼續閱讀