我有2個網站/應用程式在伺服器上;專有應用程式和 Nextcloud。 Nextcloud 將使用files_external
儲存插件,該插件允許當地的坐騎,但我做不是希望它能夠瀏覽和查看專有應用程式的原始程式碼...因此mod_selinux
和 sedomain 子項目。
我用來mod_selinux
建立子網域,並為每個網站分配一個子 ID,並在其虛擬主機定義中相應地標記其各自的應用程式和資料目錄...
httpd.conf
selinuxServerDomain *:s0-s0:c0.c100
專有.vhost.conf
selinuxDomainVal *:s0:c10
nextcloud.vhost.conf
selinuxDomainVal *:s0:c20
程式碼所在的應用程式目錄應用了以下權限和上下文...
drwxr-x---. 4 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c10 4096 Jan 17 17:02 proprietary_app_dir
drwxr-x---. 15 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c20 4096 Jan 20 08:09 nextcloud
問題...
一切都在運行,但問題是,我仍然可以使用 nextcloud 瀏覽專有應用程式資料夾,即使專有應用程式的目錄的網域上下文僅限於s0:c10
,並且只要定義了 vhost,Nextcloud應該運行為s0:c20
.
我知道 SELinux 正在完成它的工作,因為我無法查看像 /etc 這樣的資料夾,即使其他用戶對其具有讀取權限,我只能查看具有httpd_sys_(rw_)content_t
應有上下文的資料夾。
我以為 的子進程c20
不應該能夠讀取請求的資料夾c10
。所以我唯一能想到的是httpd_t
(via mod_selinux
) 的生成子層級沒有使用selinuxDomainVal
我在 vhost 檔案中定義的上下文。
我不確定我做錯了什麼,我是否配置錯誤,或者我忘記了某個步驟?將不勝感激您能提供的任何幫助。
額外資訊...
- CentOS8
- 阿帕契2.4.37
- PHP 7.3(透過 remi)
- PHP-FPM
- mod_selinux(從 fedora 31 重新打包的 RPM)
答案1
Nextcloud 是一款基於 PHP 的軟體,不確定您的專有軟體如何運作(也許也是 PHP?)。 Nextcloud 中的實際目錄瀏覽是使用 PHP 進行的,在您的情況下,我得到的資訊是使用 PHP-FPM。我假設您為兩個 VHost 使用相同的 PHP-FPM 池,或者兩個池中的 PHP-FPM SELinux 上下文相同。即使我的假設可能是錯誤的,您也應該在這裡提供有關您的 PHP 配置以及您對 SELinux 所做(或未做)的詳細資訊。