自宅サーバーとしてウェブサーバーを構築してPerlはActivePerl。
通常プロバイダ・レンタルサーバーなどでcgiを設置する場合の
パーミッション変更はFTPソフトを使って変更しますが、
ローカルから外部に公開する場合のCGIのパーミッションの変更は
どうやってやるのでしょうか?どうかご教授ください。

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

A 回答 (3件)

こんにちは。

ふたたび

この辺の設定は、wwwサーバのソフトにより変わります。

共有と言う意味で言えば、
フォルダを右クリックして、「共有」
◎このフォルダを共有する
[アクセス許可]
 Everyone
があると思います。このままでは、誰であれアクセスできる状態です。
・[追加]を押したときに、WWW-USERなどに設定するソフトもあったりします。
・wwwソフトの設定で、アクセスするフォルダを制限させる場合もあります。

BlackJumboDog を使用した事が無いので、これ以上は、なんとも・・・。
なんとも、不甲斐無い回答ですが・・・
でわでわ
    • good
    • 0
この回答へのお礼

どうもありがとうございました。がんばって勉強します。

お礼日時:2001/08/24 16:14

こんにちは。



ActivePerl なんで、Windows系ですか?

フォルダを共有したときの権限に準じます。
ただし、Windows9X系 だと、読取、書込(フルコントロール)はありますが、”実行”という項目が無いので読み/書きのみ気にしてください。
windows系は、読めれば、実行できるはずです。

UNIXでしたら、
ローカルのファイルに chmod コマンドで設定してください。

でわでわ

この回答への補足

はじめまして、Haizyさま sightさま

こちらの環境を書くのを忘れていました。スイマセン
OS   Windows2000
WWW  BlackJumboDog
CGI ActivePerl

です。

なにぶん初心なもので、分かりやすく教えていただけると幸いです。
質問する側から勝手なことばかり言いますが、よろしくお願いします。

補足日時:2001/08/23 13:30
    • good
    • 0

ファイルにパーミッションを与えているのは、ファイルを管理しているOSです。


(FTPソフトを使ってパーミッションを変更するというのは、サーバのUNIX系のOSにshellコマンドを送ってファイルにパーミッションを設定しています)
なので、OSがわからないとなんとも・・・。

UNIX系のOSならばchmodコマンドで。
Microsoftのサーバ系OSならばファイルのプロパティとかでできるんじゃないですかね?あまりNT系のファイル権限は知らないのですが・・・。
Windows9x系のOSにはそもそもパーミッションの概念がないような・・・。

この回答への補足

はじめまして、Haizyさま sightさま

こちらの環境を書くのを忘れていました。スイマセン
OS   Windows2000
WWW  BlackJumboDog
CGI ActivePerl

です。

なにぶん初心なもので、分かりやすく教えていただけると幸いです。
質問する側から勝手なことばかり言いますが、よろしくお願いします。

補足日時:2001/08/23 13:32
    • good
    • 0

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

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

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

このQ&Aと関連する良く見られている質問

Qfftpでパーミッションを000にしました

FTP転送ソフト(ffftp)でホームディレクトリのパーミッションを000にしてしまいました。
すると一切のファイルにアクセスできないしホームディレクトリのパーミッション自体も変更できなくなりました。対処方法を教えていただけますでしょうか?

Aベストアンサー

パーミッション000とは
・オーナー権限 読み込み不可・書き込み不可・実行不可
・グループ権限 読み込み不可・書き込み不可・実行不可
・他者権限 読み込み不可・書き込み不可・実行不可
ということです。

こうなったら、プロバイダのサポートに連絡し、ホームディレクトリの権限を修正してもらうように依頼するしか無いでしょう。

例えるならば、ハシゴを利用して屋根に上ったが、上ってきたハシゴを蹴り飛ばしてしまったような感じです。
自分ではどうすることも出来ず、別の人がハシゴをかけ直してくれるのを頼むしかありません。

QCGIファイルのパーミッションの変更方法

CGIファイルのパーミッションの変更をしようとすると「アクセス権を変更する機能がサポートされていません」という表示が出てしまいます。どうすれば変更できるでしょうか?

もしプロバイダを変更するしか方法が無いのならばどこのプロバイダがおすすめか教えてくださると幸いです。(現在ASAHIネットです)

作成ソフトはGoLive6.0で転送はビルダーに付属していた転送機能を利用しています。

Aベストアンサー

https://asahi-net.jp/service/hp/
Asahiネットではプロバイダ側で用意されたCGIしか使えません

いっその事 プロバイダとは別にレンタルサーバーを借りたらどうでしょ?
http://www.sakura.ne.jp/rs/02.shtml
初年度:年間\2500 次年度より\1500/年

QCGIのパーミッション設定で困っています

初級者ですがよろしくお願いします。

Dreamweaver MXでホームページを制作、アップデートを行っています。
レンタルサーバーはさくらインターネットさんのを使用し、KENT WEBさんのフォームメールを設置している段階で困っています。

パーミッションの設定をするのに、MXのSet Permissions機能をダウンロードし、確かにリモートビューからファイルを選択して右クリックすると『Set Permissions』の表示が追加されたのですが、それをクリックすると
Set Permissions only works with version 7.0.1. and above
と表示されるだけで、全く変更の余地がありません。

これが原因かも不明ですが、送信ボタンをクリックしても"Internal Server Error"と表示され上手くいきません。

自分なりにあっちこっちでたくさん調べましたが、どうにもなりません。
どなたか解決策を教えて下さい!

Aベストアンサー

http://support.adobe.co.jp/faq/qadoc/AJ25.nsf/900f7bf03cd385244925696900084026/d1e9d260ec6e4b6e492571db00051547?OpenDocument#anc_b-2
「Dreamweaver MX 2004 7.0.1 以降で接続の問題が発生する場合、[サイト定義] ダイアログボックスで [サーバー互換性] のオプションを変更し、接続できるかどうかを確認します。」
だそうです。

これでもだめなら、お使いのセキュリティというのは、Noton Personal Firewall( Internet Security)なのでしょうか?一旦ファイヤーウォールを無効にして接続してみて、それで接続できるようならノートン先生が邪魔をしているということなので
http://support.adobe.co.jp/faq/qadoc/AJ25.nsf/900f7bf03cd385244925696900084026/d1e9d260ec6e4b6e492571db00051547?OpenDocument#anc_a-10
パッシブモードにするとか、ノートン側でdreamweaverは通してもらうように設定する
http://service1.symantec.com/SUPPORT/INTER/nisjapanesekb.nsf/0/49256b02002655fd49256b8e0043d997?OpenDocument&seg=hm&lg=ja&ct=jp
でしょうかね。

http://support.adobe.co.jp/faq/qadoc/AJ25.nsf/900f7bf03cd385244925696900084026/d1e9d260ec6e4b6e492571db00051547?OpenDocument#anc_b-2
「Dreamweaver MX 2004 7.0.1 以降で接続の問題が発生する場合、[サイト定義] ダイアログボックスで [サーバー互換性] のオプションを変更し、接続できるかどうかを確認します。」
だそうです。

これでもだめなら、お使いのセキュリティというのは、Noton Personal Firewall( Internet Security)なのでしょうか?一旦ファイヤーウォールを無効にして接続してみて...続きを読む

Qレンタルサーバーlolipop cgiのパーミッションについて

lolipopというレンタルサーバーを使っているのですが、パーミッションの設定が、cgiの取説と違っていて分かりません、、。

取説のパーミッションだとエラーが起きます。

ちなみに、lolipopが推奨するパーミッションは
HTML・画像ファイル 604 (rw----r--)
CGIの実行ファイル 700 (rwx------)
CGIのデータファイル 600 (rw-------)
.htaccessファイル 604 (rw----r--)
ディレクトリ 705 (rwx---r-x)
なのですが、

.pl などのファイルは何なのか
さっぱりです。

私は、http://happy.honesto.net/cgi/ のサイトの
FormMailerDX を作りたいのですが、
パーミッションの設定が分かりません。
お分かりになる方 教えてください。

FormMailerDXの取説は以下の通りです。
/fmdx/(755)
|
+--form.cgi(755)実行ファイル
|
+--sample.htm(644)フォームHTML
|
+--template.txt(666)メールテンプレートファイル
|
+--template2.txt(666)確認画面テンプレートファイル
|
+--jcode.pl(644)日本語コード変換ライブラリ
|
+--mimew.pl(644)MIMEエンコードライブラリ
|
+--/tsv/(777)TSVファイル作成ディレクトリ(空のディレクトリ)
|
+--/tmp/(777)添付ファイル一時保存ディレクトリ(空のディレクトリ)

よろしくお願いします。

lolipopというレンタルサーバーを使っているのですが、パーミッションの設定が、cgiの取説と違っていて分かりません、、。

取説のパーミッションだとエラーが起きます。

ちなみに、lolipopが推奨するパーミッションは
HTML・画像ファイル 604 (rw----r--)
CGIの実行ファイル 700 (rwx------)
CGIのデータファイル 600 (rw-------)
.htaccessファイル 604 (rw----r--)
ディレクトリ 705 (rwx---r-x)
なのですが、

.pl などのファイルは何なのか
さっぱりです。

私は、http://happy.honesto...続きを読む

Aベストアンサー

lolipopサーバーを2年近く使っている者です。
755→705
644→604
666→606
777→707
のように、すれば大丈夫です。
cgiの説明のままでも動いてしまいますけど。
真ん中を0にすることにより、不正アクセスによってのログファイルを覗かれたり…ということがなくなるようなことが書いてあったと思います。

Qパーミッション

無料で配布してあるCGIを設置したのですが、
You don't have permission to access /usr/bin/***.cgi on this server
と出てきます。
パーミッションの設定ミスかと思ったのですが、CGIファイルはすべて755に変えてあるのを確認しました。

環境は、自宅サーバで、OSがFedoraCore5です。

Aベストアンサー

まず 本当に/usr/bin/以下に有るのなら危険なので
/home/ か/var/www などの下のディレクトリに移してください。
それとfedora5標準の(またはyumで入れた)httpdならsuexecが有効ですので.cgiは755ではなく700で動きます。

You don't have permission to accessになる原因は.cgiのパーミッション以外では
1. options の設定がされていない =>httpd.confか .htaccessでOptions ExecCGI
2. 上位ディレクトリのどこかが700 (701でOK)
3. selinuxで制限されている =>ルート権限で setenforce 0 を試してみる

QCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

アマゾンで調べると表題でCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

Aベストアンサー

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}+プログラム:処理結果 -[CGI]-> Webサーバー -[INTERNET]->ブラウザ

PHPの動作
 ブラウザ-[INTERNET]->Webサーバー:PHP:処理結果 -[INTERNET]->ブラウザ

PHPを単体で処理できるようにインストール設定すればPHPをCGIとして利用することも可能です。当然、利用範囲がCGIの域を出なくなり、PHPとしてのメリットがなくなってしまいます。
そのような非効率的な運用利用をする方はほとんどいないので書籍にしても需要が無いと思います(何らかの事情で必要な方なら、WebサーバとCGIがしっかり理解できていれば簡単に実現できるかと思います)。

ちなみに、代表的なWebサーバApacheは外部組み込み機能を使ってPerlを「PHPの動作」と同じ動きをさせることができます。
そちらは「CGI」の範疇ではなく「Webサーバー構築」の分野ですのでそういった書籍を参考にしてください。

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}...続きを読む

QJAVAでパーミッションを設定する。

お世話になります。

JAVAでUNIXファイルシステム上のファイルにパーミッションを設定することは可能なのでしょうか?

java.security.Permissionクラスなんかをjavadocで見てみたのですが、いまいちピンっと来なかったので。
もし可能であれば、どのクラスのどのメソッドを使えば、実現できるのかを教えてもらえると助かります。

よろしくお願いします。

Aベストアンサー

Java プログラムから chmod で行うようなアクセス制御を
かけたい、ということでしょうか。
以下、もしそうであれば、ですが、

java.security.Permission クラス(とそのサブクラス)は
Java のプログラムに対するアクセス権限を制御するだけで、
OSのもつアクセス制御機能を利用するためのものではありません。

質問されてるようなことを実現したいのであれば、
お勧めはできませんが、
Runtime#exec を使って chmod を実行するしかないと思います。

QCGIから別サーバーのCGIの呼び出し

以下の二つのサーバーでCGIを動作させようと考えています。

 サーバーA:ユーザーからアクセスできる。
 サーバーB:サーバーAからアクセスでき、ユーザーからはアクセスできない。

この環境で

(1)サーバーAでリクエストを受け、簡単な処理をする。
(2)サーバーA上のCGIからサーバーB上のCGIを呼び出す。
(3)サーバーB上で処理(etc. メールの送信)を行い、処理結果をサーバーAのCGIに返す。
(4)サーバーA上で簡単な処理を行い、結果をユーザーに表示する

というような処理を考えています。
perlでは、このような処理を実装することは可能でしょうか?

サーバーAからサーバーBにあるスクリプトファイルを読み込んで、サーバーAで実行するということはできそうなのですが、サーバーB上のCGIはサーバーBで実行するというようなことができるのかがわかりません。

初心者的な質問で申し訳ありませんが、よろしくお願いします。

Aベストアンサー

 無理やり実装することは可能ですけど、面倒ですよ?
 自分でソケットを開いてHTTPで通信するんです。

QsuEXECとパーミッションの関係がわかりません

ホームページ作成初心者です。


(A)

suEXECについて

http://www.aconus.com/~oyaji/www/apache_linux_suexec.htm

では、

-----------------------
なお、CGI 関係以外のファイル( HTML や GIF 等)の扱いは、従来どおり "644" 等としないと見えません。suEXEC はあくまで CGI や SSI の実行に関してのみ機能するものだからです。
-----------------------

一方

http://tech.bayashi.net/pdmemo/permission.html

では、

-----------------------
拡張子が .html などの HTML ファイル ==> 600
-----------------------

となっています。

600では一般のサイト訪問者がread出来ない様に思えるのですが、問題ないのでしょうか?


suEXEC設定がされているサーバーでは、各拡張子のパーミッションはどのように設定すれば良いのか教えてください。



(B)

http://tech.bayashi.net/pdmemo/permission.html



-------------------------------
■UNIX + Apache サーバで nobody権限の場合
UNIXのApacheは通常 nobody権限で実行され

■UNIX + Apache サーバで SuExec環境の場合
SuExec環境では、Apacheがユーザ(オーナ)権限で実行されます。
-------------------------------



上記のApacheの nobody権限、ユーザ権限、オーナ権限 というのは

FTPソフトでパーミッションを設定するときの オーナー権限、グループ権限、ユーザ権限

とは全く関係のない別物なのでしょうか?


特にnobody権限とは何でしょうか?

--------------------
ファイルの読み書きもnobody権限しかありません。なので、パーミッションでも第三者に対する許可が必要です
--------------------

↑が何を言っているのか理解できません。



(A)(B)について教えてください。

ホームページ作成初心者です。


(A)

suEXECについて

http://www.aconus.com/~oyaji/www/apache_linux_suexec.htm

では、

-----------------------
なお、CGI 関係以外のファイル( HTML や GIF 等)の扱いは、従来どおり "644" 等としないと見えません。suEXEC はあくまで CGI や SSI の実行に関してのみ機能するものだからです。
-----------------------

一方

http://tech.bayashi.net/pdmemo/permission.html

では、

-----------------------
拡張子が .html などの HTML ファイル ==> 600
-----------...続きを読む

Aベストアンサー

>1
>Apacheでの「WEBページの所有者」の権限は、パーミッションの「オーナー]の権限に
>Apacheでの「nobody」の権限は、パーミッションの「ユーザー]の権限に
>に対応しているのでしょうか?

考え方が根本的に間違っています。

パーミションのオーナービット=ファイルの所有者と、実行中のプロセスの実行者が一致している場合に適用される。

パーミションのグループビット=ファイルのグループと、実行中のプロセスの実行者が所属するグループが一致している場合に適用される。

パーミションのユーザービット=ファイルの所有者やグループと、実行中のプロセスの実行者やグループが、どちらも一致しなかった場合に適用される。

「上から順に適用されるか調べられていく」のであって「対応」なんかしていません。

まず「どれがどれに対応するのか」って考え方を捨ててください。「対応」と言う概念を持ち込むのは間違いですから。

あと「オーナー」「グループ」「ユーザー」ではなく「オーナー」「グループ」「その他」と覚えた方が良いです。ユーザービットは、事実上「その他ビット」ですから。

判りやすく解説してみます。

usersと言うグループに所属するaaaさんとbbbさんが居ます。二人は別人ですが同じグループに所属しています。

ある所に、所有者がbbbになっていて、グループがadminsになっているfile1と言うファイルがあります。パーミションは604(-rw----r--)に設定されています。

aaaさんが、あるプロセスを実行しました。そのプロセスの実行者はaaaです。

そのプロセスが「file1」を「Readのみ」でオープンしようとしています。

すると、まず「file1の所有者bbbと、プロセスの実行者aaaが、同一人物か?」がチェックされます。

同一人物であれば「オーナーのパーミション」が適用されますが、今回は「別人」ですから適用されません。

別人であれば、今度は、file1のグループadminsと、プロセスの実行者aaaのグループusersが、同一のグループか?」がチェックされます。

同じグループであれば「グループのパーミション」が適用されます。今回は「別のグループ」ですから適用されません。

別グループであれば「ユーザー(その他)のパーミション」が適用されます。

こうして「オーナーか、グループか、ユーザー(その他)か、どのパーミションが適用されるのか」が判断され、今回は「Readのみのオープン」ですから「ユーザー(その他)のrのビット」が付いているかどうかで、オープン出来るかオープン出来ないかが決まります。

今回は、ユーザー(その他)のビットは「r--」なので、オープンに成功(オープンが許可)します。

この辺りの話は、UNIXの基礎の基礎の教本を読んで、1から勉強して来てください。

基礎知識が欠落している為、現状の貴方には「パーミションの概念」を正しく理解できません(「対応」とか言ってる時点で、お話になりません)

>1で[WEBページの所有者]の権限=[オーナー]の権限が成り立つなら、拡張子cgiのオーナーのパーミッションが7の場合、

どのパーミションを立てると、誰が何を出来るようになるのか、UNIXの基礎の基礎の教本に書いてあるので、読んでから出直して来て下さい。

>3
>>・パーミションの「x」だけ機能するsuExecが入ったApacheの場合
>>「nobodyやdaemon(httpd.confで設定しているユーザー)」で新しいプロセスが実行される。
>>その新しいプロセスから呼び出されるCGIやSSIだけ「WEBページの所有者」で実行される。
>CGIのデータファイルも「WEBページの所有者」で実行されるのでしょうか。
>CGIが入ったディレクトリのパーミッションはどのように設定すれば良いのでしょうか。

UNIXの基礎の基礎の教本を読んで、読むだけじゃなく、書いてある事を理解すれば「CGIを実行するのは誰か?」を考えただkで、パーミションをどう設定すれば良いか判る筈です。

>1
>Apacheでの「WEBページの所有者」の権限は、パーミッションの「オーナー]の権限に
>Apacheでの「nobody」の権限は、パーミッションの「ユーザー]の権限に
>に対応しているのでしょうか?

考え方が根本的に間違っています。

パーミションのオーナービット=ファイルの所有者と、実行中のプロセスの実行者が一致している場合に適用される。

パーミションのグループビット=ファイルのグループと、実行中のプロセスの実行者が所属するグループが一致している場合に適用される。

パーミションのユーザービ...続きを読む

QPerlのCGIでフォームのテキスト配列をPerlで取得するには?

フォームで通常は同じ名前のデータを取得することは無いのですが
表計算のように同じ名前の場合、データの取り出し方がわかりません。
以下、通常の1件の場合のソースです。


#!/usr/bin/perl

$| = 1;

use strict;
our %in;

use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
require 'jcode.pl';
require 'cgi-lib.pl';
#

#-----分岐-----

&ReadParse;

# 配列でない場合
my $namae = $in{'namae'}
print "$namaeで名前が1件表示される";
# これをフォームで namaeが配列になった場合、
#<input type="text" name ="namae">
#<input type="text" name ="namae">
#<input type="text" name ="namae">
# のような場合、3件取得する場合

exit;

__END__

フォームで通常は同じ名前のデータを取得することは無いのですが
表計算のように同じ名前の場合、データの取り出し方がわかりません。
以下、通常の1件の場合のソースです。


#!/usr/bin/perl

$| = 1;

use strict;
our %in;

use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
require 'jcode.pl';
require 'cgi-lib.pl';
#

#-----分岐-----

&ReadParse;

# 配列でない場合
my $namae = $in{'namae'}
print "$namaeで名前が1件表示される";
# これをフォームで namaeが...続きを読む

Aベストアンサー

パラメータのデコード処理で使用するモジュールによって、やり方は変わってきますが、cgi-lib.pl と CGI.pm の場合は下記のようになります。

cgi-lib.pl :
 対象のパラメータが収納された変数を \0 を区切り文字として分割する。

CGI.pm :
 リストコンテキストで値を受け取る。


例) cgi-lib.plを使う場合 ----------------------------
require "cgi-lib.pl";

&ReadParth; # デコード処理
@hoge = split(/\0/, $in{hoge}); # \0 で分割
------------------------------------------------

例) CGI.pmを使う場合 --------------------------------
use CGI;

$query = new CGI; # 新しいCGIオブジェクトの作成
@hoge = $query->param('hoge'); # パラメータhogeの内容の受け取り
------------------------------------------------

参考URL:http://www.futomi.com/lecture/form/cgilib.html#3.2,http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm#FETCHING_THE_VAL

パラメータのデコード処理で使用するモジュールによって、やり方は変わってきますが、cgi-lib.pl と CGI.pm の場合は下記のようになります。

cgi-lib.pl :
 対象のパラメータが収納された変数を \0 を区切り文字として分割する。

CGI.pm :
 リストコンテキストで値を受け取る。


例) cgi-lib.plを使う場合 ----------------------------
require "cgi-lib.pl";

&ReadParth; # デコード処理
@hoge = split(/\0/, $in{hoge}); # \0 で分割
---------------------------------------...続きを読む


人気Q&Aランキング

おすすめ情報