顯示具有 SELinux 標籤的文章。 顯示所有文章
顯示具有 SELinux 標籤的文章。 顯示所有文章

2018-10-16

SELinux 開放指定的資料匣可以讓 web.service 上傳

這個問題很老我知道…

我從 fedora 2 開始玩到現在的 Centos 7 ,越到後面在用網頁伺服器時最常遇到的就是在透過網頁端上傳資料到伺服端時的權限問題。

印象中很早前好像還沒有 SELinux 的保護機制,然後直到開始使用這個機制時有真的會累到乾脆就停用算了…不然一直在找解決方法或者 setsebool 改來改去都覺得累,關掉比較一了百了。

-----
回正題上…

主要是現在在 Centos 7 上用 nginx + php-fpm ,前端在用 ckeditor + ckfinder 時,因為 ckfinder 會使用上傳,相關的動作就是建檔、建資料匣、覆寫、刪除,以前自己手邊有系統時,說真的,我是直接就把 SELinux 給關了,但後來在接案子跟在處理資安的事情時就比較會去避免「直接關掉」的作法。

後來在 google 上翻到我不太確定這樣做適不適合,但感覺至少比直接關掉 SELinux 來的好的做法就是
chcon -R -h -t httpd_sys_script_rw_t [dir]
chcon:用來修改 SELinux 權限的東西
-R:指定 [dir] 以下的所有東西,包括子資料匣與其檔案
-h:等同用 --no-dereference  ,意指不參照其所在的權限(應該是獨立設定,而不承接父層)
-t:等同用 --type,指定使用「httpd_sys_script_rw_t」的安全權限

---
一般在 web.service 對應的 documentRoot ,--type 應該都是 httpd_sys_content_t ,我個人猜應該是指「單純文件」,也就是只給「讀取」或「被執行」的權限,所以 php、apache、nginx 大至上一開始的都是如此的,因為「網頁」本來就是給人「看」的。

因為服務類型的網站大都會是可以讓 client 端傳上文件、資料匣,若是用來存放 client 上傳的東西的目的地只有「看」的權限,那就會出現被 SELinux 擋掉的狀況,所以這時可以把指定的資料匣改成 httpd_sys_script_rw_t 或 httpd_sys_content_rw_t 就是允許該資料匣能透過 web.service 由 client 上傳東西來儲存了。

此狀況不一定只用在 web.service ,ftp 也行,但就不能用 httpd_sys_script_rw_t 這種一看分類就是給 web.service 用的…特有的 service 還是要用特用的 type ,這樣比較安全。

2016-09-29

Bind9 的 log 權限問題…

其實這個問題很久了,只是因為沒有造成什麼大問題就沒有去理它…

是在「cat /var/log/message | grep named」時候出現一堆的「unable to rename log file '/var/log/named/general.log' to '/var/log/named/general.log.0': permission denied」

這個訊息不管它,最多就是 log 吃不進去或繼續的塞在單一個檔案而已…但越來越大也不太好

有確定過 owner 和讀寫權限都正常…但就算讀寫開到 777 也還是有這個訊息

後來在一次開新的 log 在 named 時才看到…原來是 named 在 log 的 SELiunx 「標籤」跟一般的 log 「標籤」不一樣…

「標籤」可以使用「ls -Z」查…

一般的「標籤」,在「/var/log/」底下的是「system_u:object_r:var_log_t:s0」,而我們在 named 的 config 設定 log 時,因為它的 log 檔是由使用者 touch 出來的檔案的「標籤」也是會和「/var/log/」底下的標籤一樣是「system_u:object_r:var_log_t:s0」或者是「unconfined_u:object_r:var_log_t:s0」…

但當 named 這個程序自己產生的 log 的「標籤」卻是「system_u:object_r:named_log_t:s0」…最大的不同也就是「named_log_t」…

所以,要將「var_log_t」改成「named_log_t」…可以使用
chcon -t name_log_t <file_name>

2011-06-04

坑呀…apache與SELINUX

最近無聊,就把fedora 8的一台主機重灌…想說備份都ok了…

才發現…灌了fedora 15,會一直狂凍結…我的pc也只是intel(R) 3.2G的…又不是現在的SandyBridge…幹嘛給我凍…

再改灌CentOS 5.6後才想到,會不會是因為FC15預設是用ext4的關係…

----
總之,不理了…現在在CentOS跑就好
結果,apache 2.2上去後…想說一切良好…就來把wordpress還原…

但沒想到…確發生無法創檔(像.htaccess)或更新(plugin/theme)之類的問題

看了/var/log/messages後才知道,原來又是SELINUX的事…

根據http://ca95.pixnet.net/blog/post/13716184

可以把wordpress的selinux屬性變為httpd_sys_content_t…就ok了