投稿内容が、nakami.datに保存される掲示板を設置しました。言語はPerlです。

最初は上手く動いていたのですが
nakami.datをデスクトップ上に落とし
それをFTPソフトでアップしてみたところ
nakami.datを書き込みモードでオープンすることができなくなってしまいました。

パーミッションを調べてみたのですが、
掲示板CGIで作成されるnakami.datも、FTPソフトでアップしたnakami.datも両方同じ644で、
違う所はCGIで作成されるnakami.datの所有者がwww、
FTPソフトでアップしたnakami.datの所有者が1000になっている所だけでした。

この所有者というのが何なのかよくわかりません。
FTPソフトでアップしたファイルを書き込みモードでオープンするにはどうしたら良いでしょうか。
よろしくお願いします。

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

A 回答 (2件)

UNIX系OSやWindowsNTなど、マルチユーザ環境で使われることを想定しているOSにおいては、自分が作ったファイルを勝手に他人に消されては困るので、各ファイルやディレクトリに「誰がそのファイルの所有者か」という情報を割り当てます。

で、ファイル・ディレクトリ毎にファイルの所有者や同じグループの人間、外部ユーザーに対するアクセス権限を設定したものがPermissionというわけです。

で、今回の件ですが、回避策は2つ考えられます。

ユーザー名「www」でファイルを作成できる権限をお持ちなのであれば(root権限を持っている、wwwのID・パスワードを知っているなど)、単にwwwの名前でLoginしてファイルをアップロードするか、rootでLoginしてchownで所有者を変更する(root権限がある場合のみ)だけで済むでしょう。

そうでない場合は、おそらく「www」というユーザーはサーバの管理者サイドのIDですから、一般ユーザがファイルの所有者を「www」に変更することは通常できないと思いますので、「www」がnakami.datに対して書き込むことを許可するために、ファイルのPermissionを666に変更する必要があります。

まあたぶん後者の方法の方が確実でしょう。
    • good
    • 0
この回答へのお礼

パーミッションを666にしたら動きました。
ご回答ありがとうございました。

お礼日時:2001/04/27 16:34

wwwはhttpd経由でアクセスした場合のアカウントです。


たいていは nobodyとかです。
FTPソフトでアップしたファイルのパーミッションを
「666」にすれば問題なく動くと思います。
    • good
    • 0
この回答へのお礼

パーミッションを666にしたら動きました。
ご回答ありがとうございました。

お礼日時:2001/04/27 16:34

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

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

Q掲示板CGIでパスワード制限などが付いたのを探しています...

以下のような条件で掲示板のCGIを探しているですが、探し方が下手なのか条件を満たすものが見つかりません。

■書き込みにパスワード制限が付いていて、一般の人は閲覧しか出来ない設定にできる。関係者だけが書き込む掲示板。
 できれば管理者パスワードを別に設定できるもの(出来なくても可)
■掲示板自体のデザインがある程度自由。(他のページのデザインに合わせたいので)
■設置が複雑すぎない(ある程度は出来ると思うのですがそれほど自信があるわけではないのでなるべく簡単なのも)
■無料(もしくは超安価)で使わせてもらえる。

ご存知の方がおられましたら、お力お貸し下さい。よろしくお願いします。

Aベストアンサー

> 管理者にいちいち依頼し、更新してもらうのではなく、
> 数人の関係者がウェブから直接更新できれば
> と考えているのです。

はぁ,そういうことですか。すみません質問の意味をとりちがえておりました。

そういう方法なら私も現在しています。
参考URLの「ミーティングルーム」と言うのは,書き込みにパスワード制限があります。

ただデザインが好みかどうかわかりませんね。
下記URLならパスワード制限付きなものがあるかもしれません。
普通のBBSのCGIは書き込みにパスワード制限がないのですか。そういえばそのような気もします。

全部は試していないのでハッキリとは言えませんが,ひょっとしたらご希望のものがあるかもしれません。

参考URL:http://www.webpower.jp/

Aベストアンサー

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n";
open(GIF, "file.gif");
binmode(GIF); binmode(STDOUT);
print <GIF>; close(GIF);

もちろん、CGIからは画像フォーマットを返せばいいので、
ファイルから読まずにあらかじめCGIソース内に画像データ
を持っておいて出力する方法も可能です。


ちなみに、多くのCGIではHTMLコンテンツを返す場合が多い
ので、ヘッダは以下のようになります。

print "Content-type: text/html\n\n";

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n...
続きを読む

Qcgiで.datファイル内の一文を削除したい。

cgiで.datファイル内の一文を削除したい。
HP上で文書等を保存すると.datファイルに以下の様な文章が追加され、cgiでそれを開いてhtml表示させるとリンクとして使用できる様にしています。日時等の数字は保存時のものとなります。

<form action="" name="MyForm20100805" method="post"><input type="hidden" name="rm" value="2010.08/2010.08.05-a.txt"><input type="hidden" name="del" value="2010/08/05">2010/08/05<input type="button" value="閲 覧" onClick="MyForm20100805.action='hyoji-a.cgi';MyForm20100805.submit();"><input type="button" value="削 除" onClick="MyForm20100805.action='del.cgi';MyForm20100805.submit();">[更新日時:平成2010 年08月日16時54分14秒]</form>

今、間違えて保存してしまったり、不要になった場合に、削除ボタンを押すと.dat内から上記の部分のみを削除するcgiを組みたいのですが、s/やtr/で色々と挑戦したのですが一致する部分がないと判断されてしまったり、ボタンだけが残ってしまったり、最終的には.datファイルにリンク生成時にこの1文を検索文字列としてhidden要素で追加しようとした時に、文字列の中に文字列があって更にその中に文字列が~・・・みたいになってしまっている次第です。
とっても簡単で単純なことを聞いてしまっているのかもしれませんが、よろしければどのように上記の文字列を削除すればよいのか、御教授いただけませんか?

cgiで.datファイル内の一文を削除したい。
HP上で文書等を保存すると.datファイルに以下の様な文章が追加され、cgiでそれを開いてhtml表示させるとリンクとして使用できる様にしています。日時等の数字は保存時のものとなります。

<form action="" name="MyForm20100805" method="post"><input type="hidden" name="rm" value="2010.08/2010.08.05-a.txt"><input type="hidden" name="del" value="2010/08/05">2010/08/05<input type="button" value="閲 覧" onClick="MyForm20100805.action='hyoji...続きを読む

Aベストアンサー

このdatファイルの中には<form action~</form>までのデータしかないのでしょうか?
で、管理のみに使うファイルですよね。
もしそうだとしたら、1行で打ち出すようにして、文頭に管理番号ふってしまったら、
管理が楽になると思います。今のファイルは改行を一旦全消しして、「</form>」を「</form>\n」に変換して、古い順に管理番号ふってしまえばコンバートが終了します。
で、追加の際にはそのファイルを開いて最新の管理番号+1で新しい管理番号をふったら
途中削除とかで飛ぶことはあっても管理番号で管理はできると思いますが・・
実はもっともっと複雑なファイルなんでしょうか?

QCGI.pmとcgi-lib.plの差異について・・・

formで送信したデータをCGI.pmで受け取った場合と、
cgi-lib.plで受け取った場合に差異があるのでしょうか?

cgi-lib.pl内で「\0」を組み込む処理があるのが気になります。

Aベストアンサー

pmはモジュールなので
最新版はサーバー側のCpanから導入する必要があります
(ユーザーが手動で入れることもできますが)
またモジュールを使うならstaticで書かないと意味がありません

上級者で自宅サーバを構築しているのであれば
perlが実行時にモジュールを読みにいくので
CGI.pmの方がより速く動くでしょう

しかし、初心者やクライアントでサーバを借りているのであれば
CGI.pmを入れるのは困難です(一見動いていても
裏でエラーをはいていてサーバーに負担を書けていることもある)
のでcgi-lib.plをお進めします。

Qhttp://www.test.cgi/index などのCGI名のあとのパス名

http://www.test.cgi/index
のようになっているものを見かけるときがあります。普段は
http://www.test.cgi?mode=index
などしているのですが、どのような仕組みになっているのでしょうか?
これはPerlに限らず、CGIとして動作するものなら実装できるのでしょうか?
疑問に思ってしまったので、ご回答のほどをよろしくお願いします。

Aベストアンサー

PATH_INFOと呼ばれる情報です。Perl/CGIであれば環境変数の$ENV{'PATH_INFO'}で取得する事が出来ます。クエリー(?xxx)が$ENV{'QUERY_STRING'}で取得出来る事と同じ要領です。組み合わせてtest.cgi/path/info?query=stringのようにする事も出来ます。(それぞれ上記の環境変数で別々に取り出せます。)

他の言語に関しても取得出来ます。言語名とPATH_INFOで検索をかけてみてください。(例えば『php path_info』等)


おすすめ情報