2014-02-25 27 views
1

我試圖在與乘客的Apache2下的Fedora 19上運行Ruby on Rails的,我在日誌的Apache +乘客 -/tmp目錄權限被拒絕

[Tue Feb 25 09:37:52.367683 2014] [passenger:error] [pid 2779] * Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog because it encountered the following error during startup: Cannot change the directory '/tmp/passenger.1.0.2779/generation-1/buffered_uploads' its UID to 48 and GID to 48: Operation not permitted (errno=1)

該目錄(/tmp/passenger.1.0得到這個錯誤。 2779)甚至不存在。我認爲這個問題與selinux有關。我試圖解決它大約4個小時。 Httpd運行在用戶apache和組apache下,我試過

cat /var/log/audit/audit.log | grep passenger | audit2allow -M 
passenger semodule -i passenger.pp 

但仍然沒有。

+0

手動創建此文件 「/tmp/passenger.1.0.2779/generation-1/buffered_uploads」 充分的權限。一次試一試。 –

+0

不能正常工作,/tmp/passenger.1.0.xxxx和xxxx每當我運行服務器時都會有所不同 – FuF

+0

您的乘客以sudo用戶身份運行嗎? –

回答

0

在你的情況下,你應該首先將SELinux切換到Permissive模式,然後嘗試捕獲從啓動Apache運行你的應用程序的審計日誌。 1 一旦獲得了應用程序的主頁,就可以使用日誌構建自定義策略。

  1. 開關SELinux的成Permissive模式和清潔audit.log

    ]#setenforce 0
    ]#RM /var/log/audit/audit.log
    ]#服務進程auditd重啓

  2. 重啓Apache

    ]#服務的httpd重新啓動

  3. 嘗試使用Web瀏覽器打開您的應用程序 它可能提供有關應用程序運行時發生的情況的更多信息。

  4. 創建自定義策略模塊,允許這些行動

    ]#的mkdir工作
    ]#裁談會工作
    ]#grep的httpd的/var/log/audit/audit.log | audit2allow -M乘客
    ]#LS使用 'semodule' 命令到當前SELinux策略
    passenger.pp passenger.te

  5. 負載postgrey策略模塊:

    ]#semodule -i passenger.pp
    ]#setenforce 1

  6. 重啓Apache

    ]#服務的httpd重啓

參考文獻: http://wiki.centos.org/HowTos/SELinux#head-faa96b3fdd922004cdb988c1989e56191c257c01