而且一直出現SELinux的問題,導致常常去找設定問題,最後都是因為SELinux擋住了。雖然安全性提高,但是擾人程度實在不在話下,不過像我這種超新手還是不要隨便關掉這個偉大的安全機制,因此,在這邊記錄一下可能會碰到的問題。
新增使用者之後ftp無法上傳首先,先檢查
ftp_home_dir有沒有打開,可以輸入$getsebool -a | grep ftp後,會列出以下訊息:allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off (略)
這時候就輸入
$setsebool -P ftp_home_dir=1後再試試看ftp,如果還是不行的話,就切到/home下面去查看使用者的資料夾屬性:$cd /home $ls -Z會顯示出資料夾selinux的設定
drwxr-xr-x. aaa aaa system_u:object_r:user_home_dir_t:s0 aaa drwxr-xr-x. bbb bbb system_u:object_r:home_root_t:s0 bbb
上面的bbb的
home_root_t就是阻擋ftp最大的元兇,只要改成跟aaa一樣就可以上傳了,$chcon -t user_home_dir_t bbb,這時立馬打開ftp測試,應該是沒有問題,如果操作有權限問題,記得用sudo,如果再不行的話,就google大神吧!php噴出 permission denied第一,先切到你要上傳的資料夾路徑,然後確定權限為775及group,以centos為例的話,httpd跑的group是apache,所以來瞧瞧設定有沒有問題:
$ls -l 列出 drwxrwxr-x. 9 mike apache 4096 2013-10-14 01:00 upload (略)看起來很完美,可是上傳還是無法,去check一下/tmp權限也是沒問題的,然後跑去看一下php.ini設定上也沒有錯....沒錯!問題又是SELinux,所以再看一下資料夾屬性:
$ls -Z drwxrwxr-x. tounsen apache system_u:object_r:user_home_t:s0 upload (略)
果然出現的
user_home_t屬性是不能讓我們上傳的,所以要將屬性改成httpd_sys_content_t就可以了:$chcon -R -t httpd_sys_content_t upload這樣應該可以順利上傳檔案了,上面加上-R是資料夾內部所有檔案也改變屬性。
以上是我在安裝及設定網站常常撞牆的問題,記錄一下,以後可以參考。
2014/01/07補充一下 httpd_sys_content_t 可能會擋ftp或是apache,可以改用httpd_user_content_t
參考連結:
http://diegobz.net/2010/03/07/enabling-apache-userdir-public_html-with-selinux-enabled-on-fedora/
http://linux.vbird.org/linux_server/0410vsftpd.php

0 意見:
張貼留言