Permissions
無法在 redmine 中上傳文件(使用 centos 7)
我在 centos 7 vm(核心 3.10.0-229.7.2.el7.x86_64)中安裝了 redmine 2.6.6.stable。到目前為止一切正常,但我目前無法上傳文件。Google搜尋我發現Passenger寫了這些文件(https://www.redmine.org/issues/8817),它可能沒有正確的寫權限。但我試圖在過去 2 小時內修復它,但沒有成功。
當我嘗試上傳內容時 Apache 的 error_log:
App 3419 stderr: Errno::EACCES (Permission denied - /var/www/html/vhosts/redmine/files/2015/08/150811151550_icon.png): App 3419 stderr: app/models/attachment.rb:108:in `initialize' App 3419 stderr: app/models/attachment.rb:108:in `open' App 3419 stderr: app/models/attachment.rb:108:in `files_to_final_location' App 3419 stderr: app/controllers/attachments_controller.rb:88:in `upload'
這些是我的 redmine 目錄的目前權限:
[root@server ~]# ls -l /var/www/html/vhosts/redmine/ total 44 drwxr-xr-x. 7 apache apache 78 Jul 7 16:47 app drwxr-xr-x. 5 apache apache 4096 Jul 24 08:42 config -rwxr-xr-x. 1 apache apache 160 Jul 7 16:47 config.ru -rwxr-xr-x. 1 apache apache 240 Jul 7 16:47 CONTRIBUTING.md drwxr-xr-x. 3 apache apache 36 Jul 24 08:37 db drwxr-xr-x. 2 apache apache 107 Jul 7 16:47 doc drwxr-xr-x. 5 apache apache 55 Jul 7 16:47 extra drwxrwxr-x. 3 apache nobody 33 Aug 11 15:05 files -rwxr-xr-x. 1 apache apache 3714 Jul 7 16:47 Gemfile -rwxr-xr-x. 1 apache apache 3668 Jul 24 08:24 Gemfile.lock drwxr-xr-x. 8 apache apache 4096 Jul 7 16:47 lib drwxr-xr-x. 2 apache apache 43 Jul 24 08:36 log drwxr-xr-x. 2 apache apache 19 Jul 7 16:47 plugins drwxr-xr-x. 8 apache apache 4096 Jul 24 08:38 public -rwxr-xr-x. 1 apache apache 275 Jul 7 16:47 Rakefile -rwxr-xr-x. 1 apache apache 205 Jul 7 16:47 README.rdoc drwxr-xr-x. 2 apache apache 30 Jul 7 16:47 script drwxr-xr-x. 9 apache apache 4096 Jul 7 16:46 test drwxr-xr-x. 8 apache apache 85 Jul 7 16:47 tmp drwxr-xr-x. 2 apache apache 6 Jul 7 16:47 vendor
我試圖更改乘客執行的使用者,但沒有成功。顯然它在 centos 7 中存在一些問題,並且該伺服器還執行一個 gitlab 實例,所以我放棄嘗試更改它並嘗試 chmoding 和 chowning 我的文件目錄。我的乘客配置:
[root@server ~]# cat /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.0.14/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/share/gems/gems/passenger-5.0.14 PassengerDefaultRuby /usr/bin/ruby PassengerUser apache </IfModule>
無論我如何嘗試更改PassengerUser(也嘗試了幾次PassengerDefaultUser)參數,我都會讓“nobody”使用者執行它:
[root@server ~]# ps aux | grep Passenger root 2785 0.0 0.2 430108 4604 ? Ssl 15:09 0:00 Passenger watchdog root 2789 0.0 0.3 645040 6348 ? Sl 15:09 0:00 Passenger core nobody 2798 0.0 0.2 298768 4676 ? Sl 15:09 0:00 Passenger ust-router apache 3448 0.0 5.6 414536 106948 ? Sl 15:15 0:00 Passenger RubyApp: /var/www/html/vhosts/redmine root 4556 0.0 0.0 112640 972 pts/0 R+ 15:26 0:00 grep --color=auto Passenger You have new mail in /var/spool/mail/root
有人遇到同樣的問題嗎?我該如何解決?
保持 selinux 強制執行的解決方案是添加以下規則:semanage fcontext -a -t httpd_sys_rw_content_t “/var/www/html/vhosts/redmine/files(/.*)?” ,然後使用restorecon -Rv /var/www/html/vhosts/redmine應用設置。
感謝@StackPlayer 表明 SELinux 可能對此負責。