最新閲覧日:

ブラウザからコマンド実行しようとするとエラーになります。
シンボリックリンクは関係ないかもしれません。

・下記で何かおかしいことはあるでしょうか?
・「本体ファイル」と「シンボリックリンク」の「所有者」が異なっているのはマズいでしょうか?
・「x」がそれぞれ3つずつ表示されているので、実行権限に問題はない、という認識で合っているでしょうか?

■/usr/local/bin
lrwxrwxrwx 1 root root phantomjs -> /home/user/phantomjs/bin/phantomjs

■/home/user/phantomjs/bin
-rwxrwxr-x 1 user user phantomjs

このQ&Aに関連する最新のQ&A

root 意味」に関するQ&A: equal roots の意味

A 回答 (3件)

> ・/home/userのパーミッションは、ご指摘の通りでした


> ・drwx------ 20 user user

なるほど。これではapacheというユーザーには
シンボリックリンクファイルが指し示している 実体ファイルを実行することは出来ませんね。



>シンボリックリンクするのではなく、/usr/local/bin/にコピーしてしまったほうが簡単
疑問1
>・なぜコピーすると、問題が解決するのでしょうか?

apacheというユーザーにとって、/home/userの下にあるファイルは参照も実行もできないですが
/usr/local/bin/の下の実体ファイルは実行できるからです。

いまでも、/usr/local/bin/phantomjs にあるのだから実行できるはずと 思ってしまうかもしれませんが
シンボリックリンクファイルの場合は、単にファイルの場所を転送しているだけなので
ファイルの権限としては、そのリンク先のファイルやその親ディレクトリに依存します。




>・実行プロセスのオーナーは、"root"ではなく同じくapacheなので、状況は改善しないと思うのですが…
>・/usr/local/bin/のパミッション
>・drwxr-xr-x. 2 root root

いえいえ。
上記のrwxr-x-rxのパーミッションの意味は、
root本人には rwx
rootグループには、r-x
それ以外には、r-x
です。
apacheにとっては、ファイルを書き込む権限はないですが、
読み込む権限と、ディレクトリ下に移動できる権限はあります。


>
>疑問2
>・何をコピーするのでしょうか?
> ・コマンドで実行する対象ファイルだけ?
>・それとも、ライブラリ全体?

基本的には、.実行したいファイルです。つまり
/usr/local/bin/phantomjsとなります。

ただし、実行するコマンドが、ライブラリやconfigファイルなど、
別のファイルも読み込むということもありえます。
その場合は、そのファイルも、apacheが参照できるディレクトリにコピーして
コマンド中のパス設定なり環境設定なりも変更しないけません。
(そのプログラムの仕様次第なので、どうするのがよいかは一概には言えません)

もし、そのプログラムが
任意のディレクトリにまずは、インストールして
/usr/local/bin/にシンボリックリンクを設置することを 
標準インストール方法として推奨しているのであれば
インストールするディレクトリを /usr/local/xxxあたりに変更してしまったほうが
手っ取り早いでしょう。


>・一旦アンインストール後、再度インストール場所をやり直すということでしょうか?

そのほうがよいでしょうね。
/home/user下では、他のユーザーには実行さえできないので、
apacheユーザーでも参照できるディレクトリの /usr/local/xxxxとか/optとかに。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。

>apacheというユーザーにとって、/home/userの下にあるファイルは参照も実行もできないですが
>/usr/local/bin/の下の実体ファイルは実行できる

>シンボリックリンクファイルの場合は、単にファイルの場所を転送しているだけなので
>ファイルの権限としては、そのリンク先のファイルやその親ディレクトリに依存

・説明大変分かりやすかったです。


>apacheユーザーでも参照できるディレクトリの /usr/local/xxxxとか/opt

・これからどうすればよいかも分かりました

・おかげで疑問が解決しました
・大変参考になりましたー

お礼日時:2015/01/24 21:13

ブラウザからということは、実行プロセスのオーナーは、"user"ではなく


Webサーバーを実行しているプロセスのオーナー (apache等)なので

/home/user/phantomjs/bin
に実行特権があり、これのシンボリックリンクを実行しているとしても
/home
/home/user
/home/user/phantomjs
/home/user/phantomjs/bin
の各親ディレクトリのパーミッションとして、
apache等のユーザーがディレクトリ内に潜れる特権が必要です。

多分、/home/userのパーミッションが drwxr-x---(750) とか drwx------(700)に
なっていて、apache等のotherユーザーからは ディレクトリに潜れない設定に
なっているのではないでしょうか?

この場合ですと、
/home/userのパーミッションを変更するというのは セキュリティー的に避けたほうがよいでしょうし、
わざわざこのために sudo等で 実行するユーザーを切り替えるというのも大げさなので
シンボリックリンクするのではなく、
/usr/local/bin/にコピーしてしまったほうが簡単ではと。


もし、修正するたびにコピーする手間とミスが、気になるようならば
/home/user以外のotherユーザーが参照できる場所(例えば /usr/local/xxxxとか)に実体をおいて、
それをシンボリックリンクする形にする という方法でもありかと。

この回答への補足

回答ありがとうございました

・apache実行権限を/home/userに付与したいけど、セキュリティーの観点から避けたい
・ここまでは分かるのですが、それ以降の内容が難しくて対策部分が理解できなかったので追加で教えてください

・/home/userのパーミッションは、ご指摘の通りでした
・drwx------ 20 user user

>シンボリックリンクするのではなく、/usr/local/bin/にコピーしてしまったほうが簡単
疑問1
・なぜコピーすると、問題が解決するのでしょうか?
・実行プロセスのオーナーは、"root"ではなく同じくapacheなので、状況は改善しないと思うのですが…
・/usr/local/bin/のパミッション
・drwxr-xr-x. 2 root root

疑問2
・何をコピーするのでしょうか?
・コマンドで実行する対象ファイルだけ?
・それとも、ライブラリ全体?
・一旦アンインストール後、再度インストール場所をやり直すということでしょうか?

補足日時:2015/01/23 20:15
    • good
    • 0

どんなエラーになるのでしょうか。


ブラウザからということはhttpdのログに何らかの記録があると思いますが、そちらはどうなっていますか。
httpdの設定でFollowSymLinksは付いていますか。

この回答への補足

回答ありがとうございました

>どんなエラーになるのでしょうか
・ブラウザで確認したエラーは下記です
・Error calling PhantomJS, return code 126
・検索したら、パミッションに関する指摘があったので、その関係のエラーかと思い質問しました

>httpdのログに何らかの記録があると思いますが、そちらはどうなっていますか
・下記を確認しましたが特に気になる点はありませんでした
(注意すべき点が良く分かっていないので見落としがあるかもしれませんが…
・/var/log/secure
・/var/log/secure/messages

>httpdの設定でFollowSymLinksは付いていますか
・セキュリティを高める、と聞いて、よく分からないまま下記のように設定しています
・Options -Indexes FollowSymLinks

・今改めて確認したら、
>Web コンテンツファイル、もしくはファイルまでのパスにシンボリックリンクが含まれている場合、アクセスを拒否する
・と書いてあったのですが、何か関係あるでしょうか?

補足日時:2015/01/23 19:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報