Devices
為什麼 SELinux 文件系統有它自己的空設備?
通過查看
/sys/fs/selinux
,我發現了這個:# ls -l /sys/fs/selinux/null crw-rw-rw-. 1 root root 1, 3 Jan 24 02:47 /sys/fs/selinux/null
這等同於
/dev/null
:# ls -l /dev/null crw-rw-rw-. 1 root root 1, 3 Jan 24 10:47 /dev/null
那麼 SELinux 擁有自己的空設備有什麼意義呢?
這在將SELinux 實現為 Linux 安全模組中幾乎沒有解釋
這會產生一個填充的 selinuxfs 文件系統,並設置 SELinux 在上下文更改執行時關閉未經授權的文件時使用的特殊空設備節點。
顯然程序不能
/dev/null
在 SELinux 環境中直接使用,它們需要自己的版本。這以前稱為open_devnull,它的開始提供了一些關於為什麼需要它的更多細節:這個針對 2.6.6-rc3 的更新檔更改了 SELinux 模組以嘗試重置它在 exec 上關閉的任何描述符(由於新域對繼承的打開文件沒有權限)以引用空設備。這解決了 SELinux 導致程序錯誤行為的問題,特別是由於在不允許新域訪問呼叫者的 tty 時關閉了描述符 0-2。這主要是為了解決呼叫者在新域方面受信任的情況,因為不受信任的呼叫者情況已經通過 AT_SECURE 和 glibc 安全模式處理。