8

これは、 SELinux が有効になっている通常の Linux マシンに、NLP で使用する注釈付きコーパスを作成するために使用されるbrat 注釈ツールをインストールするときに発生する問題を解決する方法を説明する自問自答式の質問です。これは、ツールのバージョン 1.3 に基づいています。

ドキュメントに記載されているインストール手順には、次の手順が含まれます。

  1. .tar.gz ファイルを (Apache) Web サーバー ディレクトリに解凍します。通常、/var/www/htmlまたは$HOME/public_html
  2. おそらく、解凍されたディレクトリの名前を次のbrat-v1.3_Crunchy_Frogような単純なものに変更しますbrat
  3. ディレクトリに入って実行sudo ./install.sh
  4. sudo service httpd startまだ実行されていない場合は、Web サーバーを開始します ( )。

問題:この手順に従って、ブラウザで brat を使用しようとすると (に指示することによって) http://localhost/brat/index.xhtml、次のエラー メッセージが画面に表示されて失敗します。

Error: ActiongetCollectionInformation failed on error Internal Server Error
Error: Actionwhoami failed on error Internal Server Error
Error: ActionloadConf failed on error Internal Server Error

Apache エラー ログ (通常は に/var/log/httpd/error_logあります) にも次のエラーが表示されます。

(13)Permission denied: exec of '/var/www/html/new/ajax.cgi' failed, referer: http://localhost/new/index.xhtml
Premature end of script headers: ajax.cgi, referer: http://localhost/new/index.xhtml

この問題を解決するには?

4

2 に答える 2

4

これは SELinux が原因です。これを解決する 1 つの方法は、SELinux を無効にすることですが、やや過激でない方法は、ブラットが必要とするアクセス権を設定することです。

問題の根本は次のとおりです。

  1. brat は、実行可能スクリプト (CGI スクリプト)、静的ファイル、および注釈付きデータをすべて同じディレクトリ (ディレクトリ) に保持しますhtml
  2. デフォルトでは、SELinux は非 CGI ディレクトリからの CGI スクリプトの実行を防止するように設定されています。ここでは、Apache の設定を変更するだけでは役に立ちません。
  3. SELinux は、CGI スクリプトがデータをディスクに書き込むのを防ぐようにも構成されています。

SELinux 構成を変更するには、次のように特定のファイルとディレクトリへのアクセス権を付与する必要があります (これは brat インストール ディレクトリ内から行います)。

$> chcon -t httpd_sys_content_t .
$> chcon -t httpd_sys_script_exec_t *.cgi
$> sudo chcon -R -t httpd_sys_script_rw_t work data

($>コマンドプロンプトを表します。)

最初のコマンドは、現在のディレクトリへの読み取りアクセスを有効にします (不要な場合もあります)。2 番目のコマンドは、末尾が で終わるすべてのファイルの CGI スクリプトの実行を有効にします.cgi(これは必須です)。work3 番目のコマンドは、 andディレクトリへの書き込みアクセスを有効にしますdata(これも必要です)。workまたは `dataにファイルまたはサブディレクトリを追加するたびに、再度適用する必要があります。

于 2013-01-25T09:33:55.100 に答える