Как использовать Ruby CGI-скрипты в Uberspace - PullRequest
0 голосов
/ 01 октября 2018

Я хочу использовать сценарии Ruby CGI в Uberspace 7, но столкнулся с несколькими проблемами с разрешениями и настройками безопасности, особенно при использовании гемов.Как мне установить CGI-скрипты с пользовательскими гемами?

1 Ответ

0 голосов
/ 01 октября 2018

Во-первых, обратите внимание, что Uberspace 7 работает на SELinux.Это означает, что файлы сценариев CGI в ~/html/ должны быть не только исполняемыми, но и иметь правильный контекст SELinux.В этом случае тип должен быть httpd_sys_content_t.

Вы можете просмотреть контекст SELinux с помощью ls -lZ:

$ ls -Z file1
-rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1

Если у некоторых файлов неправильный контекст, контекст можно восстановить с помощью команды restorecon, например, restorecon -R ~/html/.

Каталог установки пользователя для драгоценных камней Ruby: ~/.gem/.В Uberspace gem install устанавливается в этот каталог по умолчанию:

$ cat /etc/gemrc
gem: --no-document --user-install

Поскольку домашний каталог не доступен для процесса apache, установленные там гемы не могут быть выполнены из скриптов CGI.Вместо этого вы можете установить гемы в /var/www/virtual/$USER/gem, создать каталог с

$ mkdir /var/www/virtual/$USER/gem

. Вы не можете использовать параметр --install-dir для gem install напрямую, поскольку это противоречит параметрам по умолчанию, указанным выше:

$ gem install mygem --install-dir /var/www/virtual/$USER/gem
ERROR:  Use --install-dir or --user-install but not both

Вместо этого создайте ~/.gemrc со следующим содержимым, чтобы переопределить параметры по умолчанию (замените <USERNAME> своим действительным именем пользователя):

gem: --install-dir /var/www/virtual/<USERNAME>/gem

Теперь установка гемов должна работать:

$ gem install mygem

Чтобы использовать драгоценные камни в CGI-скриптах, установите переменную Gem.paths, прежде чем требовать драгоценные камни:

#!/usr/bin/ruby

Gem.paths = { 'GEM_PATH' => '/var/www/virtual/<USERNAME>/gem' }

require 'mygem'

(... rest of the script)

Это необходимо, поскольку мы не можем изменять переменные среды (т. Е. Установить * 1039).*) для процесса apache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...