
ブラウザからコマンド実行しようとするとエラーになります。
シンボリックリンクは関係ないかもしれません。
・下記で何かおかしいことはあるでしょうか?
・「本体ファイル」と「シンボリックリンク」の「所有者」が異なっているのはマズいでしょうか?
・「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
No.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とかに。
回答ありがとうございました。
>apacheというユーザーにとって、/home/userの下にあるファイルは参照も実行もできないですが
>/usr/local/bin/の下の実体ファイルは実行できる
>シンボリックリンクファイルの場合は、単にファイルの場所を転送しているだけなので
>ファイルの権限としては、そのリンク先のファイルやその親ディレクトリに依存
・説明大変分かりやすかったです。
>apacheユーザーでも参照できるディレクトリの /usr/local/xxxxとか/opt
・これからどうすればよいかも分かりました
・おかげで疑問が解決しました
・大変参考になりましたー
No.2
- 回答日時:
ブラウザからということは、実行プロセスのオーナーは、"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
・何をコピーするのでしょうか?
・コマンドで実行する対象ファイルだけ?
・それとも、ライブラリ全体?
・一旦アンインストール後、再度インストール場所をやり直すということでしょうか?
No.1
- 回答日時:
どんなエラーになるのでしょうか。
ブラウザからということはhttpdのログに何らかの記録があると思いますが、そちらはどうなっていますか。
httpdの設定でFollowSymLinksは付いていますか。
この回答への補足
回答ありがとうございました
>どんなエラーになるのでしょうか
・ブラウザで確認したエラーは下記です
・Error calling PhantomJS, return code 126
・検索したら、パミッションに関する指摘があったので、その関係のエラーかと思い質問しました
>httpdのログに何らかの記録があると思いますが、そちらはどうなっていますか
・下記を確認しましたが特に気になる点はありませんでした
(注意すべき点が良く分かっていないので見落としがあるかもしれませんが…
・/var/log/secure
・/var/log/secure/messages
>httpdの設定でFollowSymLinksは付いていますか
・セキュリティを高める、と聞いて、よく分からないまま下記のように設定しています
・Options -Indexes FollowSymLinks
・今改めて確認したら、
>Web コンテンツファイル、もしくはファイルまでのパスにシンボリックリンクが含まれている場合、アクセスを拒否する
・と書いてあったのですが、何か関係あるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(コンピューター・テクノロジー) (コマンドプロンプト)コマンドプロンプトのactiveについて 2 2022/07/16 17:21
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- UNIX・Linux コマンドプロンプトでのユーザーのサインイン時間設定について 1 2022/08/09 09:09
- Windows 10 コマンドプロンプトでのユーザーのサインイン時間設定について 1 2022/08/09 20:43
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- その他(プログラミング・Web制作) Arduinoに関する質問 4 2023/08/07 21:19
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- PHP php ログイン 1 2022/11/01 00:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPでファイルがダウンロードで...
-
ファイルが移動できません。
-
あり得ない!アーカイブを展開...
-
vsftpで共有ディレクトリ
-
winSCPでlinuxフォルダを作りたい
-
Apacheのエラーログ【Directory...
-
shellscript内のコマンドを、su...
-
Apacheのドキュメントルート配...
-
Winmerge ファイルの中身は同じ...
-
フォルダ内の一覧を印刷するには?
-
emlをtxtに変換するには?
-
ftpのmgetコマンドの自分の格納...
-
onedriveの中身を削除したらパ...
-
7zを使うとフォルダの中身がす...
-
コマンドプロンプトによるフォ...
-
教えてください!困ってます。
-
「$TD ファイル」を開く方法を...
-
Windows10 フォルダ内の自動並...
-
拡張子.dどういう意味
-
クラリスワークスのファイルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPでファイルがダウンロードで...
-
lsでディレクトリのサイズが409...
-
shellscript内のコマンドを、su...
-
あり得ない!アーカイブを展開...
-
ファイルが移動できません。
-
ダウンロードしたファイル
-
Ubuntu、ファイル移動によるエ...
-
「E212:書込み用にファイルを開...
-
winSCPでlinuxフォルダを作りたい
-
SSHで現在のディレクトリから移...
-
ファイル所有者を「apache」へ...
-
RPM のソースパッケージが展開...
-
Index.html表示しない!!
-
Apache2.0で「#exec」コマンド...
-
cronで定期的にWGETしたい
-
SFTPでファイルのアップロード...
-
書き込み権限がありません
-
特定ファイルだけFFFTPでアップ...
-
OpenSSHでSFTPの接続ができず困...
-
シンボリックリンクでパミッシ...
おすすめ情報