
No.3ベストアンサー
- 回答日時:
> PATHは,printenv PATHで表示される物と同じですよね.
ひょっとして、落とし穴にはまられました?
PATH 変数の役割や概念は共通です。 しかし、PATH変数の値(内容)はプロセスによって違います。
だから、Perl の CGIから起動できるコマンドを調べるには、telnet 等でログインした時の PATH 変数を調べてもほとんどの場合役に立ちません。 CGI自身で『現在のPATHの内容』を調べてください。
> cgiプログラムと同じところある物は動きますが,それを/binや/usr/binに移動させると動かなくなります.
まずは、CGIプロセスの PATH変数中に /bin や /usr/bin が含まれているかどうかです。
次に、CGI から見える /bin や /usr/bin はあなたがコマンドをインストールした /bin や /usr/bin と同一かどうかが問題になりますが、他人が設定したサーバーのこのあたりの事をユーザーが調べるのは難しいかも知れません。
状況から察するに、レンタルサーバーですよね? 使える外部コマンドとか自作コマンドのインストール先とかが開示されて無ければ質問しましょう。
たびたびのご回答ありがとうございます.
>しかし、PATH変数の値(内容)はプロセスによって違います。
不勉強なもので,上記については存じておりませんでした.
ご指摘の通り,両者で表示されるPATHは異なっておりました.
#lsコマンドは/binの下にあり,これについてのパスは記述されておりました.
また,プログラム等のupload先のマシンと,Webサーバとなるマシンが異なっていたことが,もう一つの,CGIが動作しない原因となっておりました.
パスが通っていなかった/usr/local/binでも,フルパスで記述すれば動作致しました.
大変勉強になりました.重ねてお礼申し上げます.
No.2
- 回答日時:
> コマンド単位での実行の許可,不許可というのがサーバでは可能ということですね.
> PATHを確認すればよいとのことですが,ディレクトリ毎に許可,不許可を分けているということになりますでしょうか.
技術的な詳細に興味の無い人向けにはYesと答えても良いのですが、そうでは無い場合には以下の様になります。
CGI の子プロセスとして起動する場合も、対話コマンドとして起動する場合も、ディレクトリ指定無で可能なコマンドは PATH と言う環境変数で制御されます。 この環境変数は複数のディレクトリのパスが「:」で区切られて入っています。
プロセスによって PATH環境変数の内容を変える事が、最も基本的な「そのプロセスにどのコマンドを許可するか」の制御です。
だから、PATH環境変数にリストされるディレクトリがそれぞれどんなファイルを含むかを調べれば実行できるコマンドを知る事ができます。
> ls は 実際は 'ls --color=tty' にエイリアスされていた
そのケースは影響無いでしょう。 影響があるのは、 ll が 「ls -l」 にエイリアスされてて、「ll」という名前のコマンドファイルは存在しないといった場合でしょう。
基本的で無い「実行可能なコマンドの制御」には、setuidビットの禁止とか chroot とかいろいろありますが、基本的なPATH変数で説明が付かない場合だけ調べたら良いでしょう。
再度のご回答ありがとうございます.
PATHは,printenv PATHで表示される物と同じですよね.
lsについては,/bin/lsにあり,パスはもちろん通っているのですが,サーバ側でディレクトリ内のファイル一覧を表示させることを禁止していることと関係しているのだと思います.
No.1
- 回答日時:
> サーバのセキュリティがそのように設定されているということなのでしょうか?
そうだと思います。 特に共用レンタルサーバーの場合には、普通の UNIXコマンドのうち一部しか使えないのはむしろ普通だと思います。
調べるには、 $ENV{'PATH'} にリストされるディレクトリに何が入ってるかを見てください。 もしもCGIの入門勉強中であれば、それを表示する CGI作成も簡単な練習問題になります。
あるいはレンタルサーバーなら開示情報や質問で知ることもできるでしょう。
素早いご回答ありがとうございます.
コマンド単位での実行の許可,不許可というのがサーバでは可能ということですね.
PATHを確認すればよいとのことですが,ディレクトリ毎に許可,不許可を分けているということになりますでしょうか.
upload先のマシンと,Webサーバが動いているマシンが異なっていたため,自分の中で少し勘違いしている部分もありました.
ls は 実際は 'ls --color=tty' にエイリアスされていたことが,もしかしたら原因かもしれないと思いました.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
ChatGPT
-
入力フォーム(電話番号)
-
フォームを再送信しますか?
-
perlでpostが受け取れない
-
chatGPTみたいに画像生成出来る...
-
cgiからsendmailを送信で文字化け
-
ChatGPTの性能は昔に比べて上が...
-
iDeCo
-
皆さんはGUCCIはハイブランドだ...
-
cgi-binのエラー?
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlプログラム上でアラートを表示
-
IISでエラー、Apachでは動くの...
-
Webからアクセスし、画面のボタ...
-
同じ階層内を意味する「./」を...
-
CGIファイルへのブラウザからの...
-
インターネット通信
-
cgi を定期的に自動実行
-
自分のcgiがとても重い
-
C言語でCGI
-
PHPとcgiの違い
-
CGIって何ですか?簡潔に教えて...
-
定期的にメールを送ってくれる...
-
EXCELファイルに誰がアクセスし...
-
KENT WEB(昨日の続きです)
-
《エクセルVBA》「他の人が該当...
-
CGIでソースがそのままでてしま...
-
FTPにて553エラー
-
ASPから既存のexcelブックを開...
-
VBAでサーバーにアクセスするに...
-
URLに~/cgi-bin/~を隠す方法
おすすめ情報