Linux

使 /home /tmp noexec nodev 沒有單獨的分區

  • February 13, 2012

我需要為根文件系統的某些部分更改一些掛載選項,例如 /tmp /var 和 /home(添加 nodev、nosuid 和配額),但我無法創建單獨的分區並且我沒有足夠的 RAM 來掛載 /tmp 作為 tmpfs。我試過 mount -o bind,noexec,nodev,nosuid /tmp /tmp,但它似乎不起作用,因為在那之後我仍然可以從 /tmp 執行文件並在其上進行設備點頭。還有其他方法嗎?

您可以使用 bind 和 noexec,nodev,nosuid 選項重新掛載 /tmp,但不能一步完成。由於某些 linux 核心 VFS 層限制,您必須先綁定掛載它,然後使用適當的選項重新掛載。

root@utemp:/# /tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# mount -o bind,noexec /tmp /tmp
root@utemp:/# ./tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# umount /tmp
root@utemp:/# mount -o bind /tmp /tmp
root@utemp:/# mount -o remount,noexec /tmp
root@utemp:/# ./tmp/test.sh 
bash: ./tmp/test.sh: Permission denied
root@utemp:/# umount /tmp

這很不方便——而不是 /etc/fstab 中的一行,您必須在系統引導期間呼叫一些腳本,每個目錄有兩個掛載命令。

此LWN文章中的更多資訊。在舊核心中它不起作用——綁定掛載點始終具有與底層文件系統相同的掛載選項。

引用自:https://serverfault.com/questions/359530