質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1708閲覧

cgi から get リクエストすると権限エラーになる

kimurayu

総合スコア158

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/10/23 01:37

編集2017/10/24 03:25

--解決しました。ベストアンサーでいただいた内容ですが、書いておきます。ありがとうございます。

$ sudo gestsebool httpd_can_network_connect on

を設定したら動く様になりました。

こちら を見させていただきました。

--  


http://hogehogehoge.jp/index.rb をブラウザで開き、index.rb の中で open_uri で外部サーバからデータを取得しようとすると権限エラーが発生して何も取得できません。
しかし何の権限なのか分かりません。何の権限をどう直せば良いでしょうか。

ruby

1index.rb 2 3require 'open-uri' 4url = 'https://hogehoge.com?sample.cgi?a=1&b=2&c=3' 5io = OpenURI.open_uri(url) 6puts io.read

hogehogehoge.jp にターミナルからsshでアクセスして直接 ruby index.rb を実行すると取得できます。

以下ブラウザから実行時のエラーメッセージ

/etct/httpd/logs/error_logs [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] Failed to open TCP connection to hogehoge.jp:443 (Permission denied - connect(2) for "hogehoge.jp" port 443) [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] ( [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] Errno::EACCES [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] ) [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:903:in `block in connect' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/timeout.rb:93:in `block in timeout' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/timeout.rb:103:in `timeout' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:902:in `connect' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:887:in `do_start' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/net/http.rb:876:in `start' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:323:in `open_http' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:741:in `buffer_open' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:212:in `block in open_loop' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:210:in `catch' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:210:in `open_loop' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /usr/local/bin/rbenv/versions/2.4.2/lib/ruby/2.4.0/open-uri.rb:151:in `open_uri' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /var/www/html/paper/paper0.12/web-client/index.rb:117:in `(リクエストURL名)' [Mon Oct 23 01:10:10 2017] [error] [client ooo.oo.ooo.oo] \tfrom /var/www/html/paper/paper0.12/web-client/index.rb:120:in `<main>'
/var/log/audit/audit.log type=USER_ERR msg=audit(oooooooooo.ooo:oooooo): user pid=26217 uid=0 auid=500 ses=2924 subj=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=PAM:bad_ident acct="?" exe="/usr/sbin/sshd" hostname=oooo.oooo.hogehoge.jp addr=ooo.oo.ooo.oo terminal=ssh res=failed'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/10/23 22:04

エラーメッセージは正確にそのまま記載してください(ドメイン名やファイル名は置き換えてください)。また、Webサーバのログファイルにメッセージがあれば、それも記載してください。
kimurayu

2017/10/24 01:06

記載しました。
guest

回答1

0

ベストアンサー

index.rbがRubyのスクリプトとして正しく実行できており、かつブラウザに出力されるエラーが500エラーである場合、HTTPヘッダを出力していないことによるものと推測されます。

下記出力をスクリプトの先頭にに含めるとどうなるでしょうか。

puts "Content-Type: text/html¥n"


追記:

下記と同件ですね。同じ内容で複数の質問をすると、回答も分散してしまうので避けてください。
Ruby - open_uri できない(97306)|teratail

考えられる原因としては以下があるかと思います。

  • HTTPS接続の検証に失敗している
  • 実行ユーザーによりopen-uriモジュールからSSL関連のモジュールの読み込みができていない
  • 下記ページ記載の内容と同じ事象でSELinuxにより遮断されている

Permission denied - connect(2) が解決 - sh7nhate’s blog
Elasticsearch+Kibanaのインストールで嵌ったこと - Siburlog

3番目は上記の質問でotnさんがご回答されている内容と同件かと思います。

投稿2017/10/24 01:35

編集2017/10/24 02:18
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kimurayu

2017/10/24 01:46

#!/usr/local/bin/rbenv/shims/ruby puts "Content-type: text/html\n\n" puts これを先頭に記載しています。
kimurayu

2017/10/24 01:49 編集

open-uri の関連の処理以外は動くのですが(open-uriの処理のコードを消すと問題なく動く)、 open-uri で何かのpermission エラー が起きていて処理が止まってしまう様なのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問