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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

3回答

8929閲覧

Apache上のPHPからexecコマンドで.shを読み出したい。

DASH

総合スコア20

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2016/10/25 05:46

Raspberry Piでradikoを聴いているのですが、WEB上からチャンネルを選択したいと思い、ページを作ってApaceh上からPHPで動くようにしました。

php上からexecを使いplay_radiko.shを読み出すようにしているのですが、デフォルト設定のwww-dataユーザだと動かなかったので、Apacehの設定で/etc/apache2/envvarsのユーザとグループをpiにして動かしています。できればwww-dataで動かすことはできないでしょうか?piだと権限が強い気がするので、できればwww-dataで使いたいです。
シェルのplay_radiko.shは/usr/binに置いてます。
play_radiko.shの権限をwww-dataにしてもだめでした。
cat /etc/groupで調べたところwww-dataはnologinユーザのようで、suで入ることはできずshを動かすことができるのわかりません。

ご教授いただきたく、宜しくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

play_radiko.sh スクリプトが /home/pi/ 以下にファイルを作るようですね。
play_radiko.sh スクリプトを修正して、/tmp/ など、www-data ユーザーが書き込めるディレクトリにファイルを作るようにした方がいいかもしれません。

修正しないのであれば、www-data → pi に sudo して play_radiko.sh を実行するようにするしかないと思います。

/etc/sudoers

www-data ALL=(ALL) NOPASSWD: /usr/bin/play_radiko.sh

PHP から実行するコマンド

/usr/bin/sudo -u pi /usr/bin/play_radiko.sh

投稿2016/10/25 15:35

TaichiYanagiya

総合スコア12141

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

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

DASH

2016/10/26 02:57 編集

回答ありがとうございます。 デフォルトがtmpだったのですが、ご指摘通りtmpに戻したところwww-dataユーザで動くようになりました。ただ、/etc/sundoersのwww-data部分を消しても動きました。再起動しても大丈夫でした。
guest

0

play_radiko.shのothersに実行権限を付けてみては?

shell

1$ sudo chmod o+x /usr/bin/play_radiko.sh

ちなみに、そのアカウントでログイン出来なくともそのユーザー権限で実行してみることは可能ですよ

shell

1$ sudo -u www-data /usr/bin/play_dadiko.sh

投稿2016/10/25 06:02

kunai

総合スコア5405

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

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

DASH

2016/10/25 06:13

回答ありがとうございます。 上記でためしてみましたが、下記のエラーがでました。 /home/pi/radio/auth1_fms_6789: 許可がありません [stop] failed auth1 process (/home/pi/radio/auth1_fms_6789) ↑ただ、このファイルフォルダの中には無いのですが・・・一時ファイル? 許可はどうしたら良いのでしょうか・・・
guest

0

特定のコマンドだけ権限を付与して実行できます。ただし、変更にミスがあるとまずいので変更するファイルはバックアップとっておくことをオススメします。

参考URL
http://tom-rc.hatenablog.com/entry/2015/03/17/213545

投稿2016/10/25 05:51

s.t.

総合スコア2021

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

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

DASH

2016/10/25 06:19 編集

回答ありがとうございます。 参考URLを見まして sudo visudoを実行し pi ALL=(ALL) NOPASSWD: ALLの下の行に www-data ALL=(ALL) NOPASSWD: ALLを追加しました。 apacheのユーザとグループをwww-dataに戻しapacheを再起動しました。 ラジオ動かないです。ユーザとグループを再びpiにしてapache再起動で動きます。 最後尾のALLの箇所を/usr/bin/play_radiko.shでもだめでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問