68user's page 掲示板

Prev< No. 1774〜1790> Next  [最新発言に戻る] [過去ログ一覧]
No. 1774 # 68user 2001/03/02 (金) 12:35:01
>>1773 purine
必ず OS 名や使用している言語を書いてください。

kill コマンドか、システムコール kill を使います。
    http://X68000.startshop.co.jp/~68user/unix/pickup?keyword=kill&target=command&partial=on

No. 1775 # 68user 2001/03/03 (土) 20:09:31
japu さん (http://www.japu.org/) より、source.cgi に関して
CGI Security Advisoriy をいただきました。

これは他サイトに HTTP でアクセスし、GET した結果を表示
するもので、
    「CGI の小部屋」http://X68000.startshop.co.jp/~68user/Cgi-room/
からは <!-- --> でコメントアウトしてあったものです
(なぜコメントアウトしたかは忘れた)。

# また、昔利用していた http proxy 経由でアクセスするため、
# X68000.startshop.co.jp からは正しく動作しませんでした。

しかし、トップページからはスクリプトのソースを見ることができ、
source.cgi 自体も実行可能なままになっていました。これに対して
    http://X68000.startshop.co.jp/~68user/Cgi-room/source.cgi?url=http://www.yahoo.co.jp';ls%20*'
といったアタックが可能でした。これは
    open(IN,"$httptalker -get '$url'|");
の部分で
    open(IN,"$httptalker -get 'http://www.yahoo.co.jp';ls *''|");
と解釈されます。open の引数に ; ? * | などを渡すと、perl は
/bin/sh を起動し、/bin/sh がコマンドを実行しますので、任意の
コマンドが実行可能です。

で、SA を受けて
    open(IN, "-|") or exec($httptalker, '-get', $url);
と修正しました。この場合は perl が直接 fopen(3) を呼ぶため、' ; * など
が特別扱いされることなく、$httptalker の引数にそのまま渡ります。

source.cgi の更新履歴:
    http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/Cgi-room/source.cgi


セキュリティホールを指摘して下さった japu さんに感謝いたします。

んで、
    「CGI の小部屋」http://X68000.startshop.co.jp/~68user/Cgi-room/
ですが、もうメンテする気力がないし、技術的な興味もないし (nslookup とか
whois コマンド呼ぶだけのスクリプト見てもおもしろくないでしょ)、例えば
ドメイン名検索とかならもっと便利なサイトがあるので、この掲示板で誰からも
反応がなければ近日中に消すつもりです。

No. 1776 # 68user 2001/03/03 (土) 20:48:21
>>1775 68user
>  open(IN, "-|") or exec($httptalker, '-get', $url);
> と修正しました。この場合は perl が直接 fopen(3) を呼ぶため
訂正。perl が直接 pipe(2)、fork(2)、exec(2) するため、でした。

No. 1777 # Netboy [E-mail] 2001/03/03 (土) 21:02:28
CGIの小部屋は消さないで欲しいです.
メンテ終了ページは倉庫ディレクトリなどに
移設するのみにしていただけると嬉しいです.

簡単な内容のものでも,知らない人に説明するとき
サンプル的に便利に利用させていただいております.

No. 1778 # 68user 2001/03/03 (土) 21:36:08
>>1777 Netboy
> CGIの小部屋は消さないで欲しいです.
了解いたしました。と決まれば、見られても恥ずかしくない
程度に brush up せねば。

No. 1779 # ふくし [E-mail] 2001/03/04 (日) 01:16:31
いつも質問ばかりですいませんのふくしです。
Perl で use strict 'vars'; とすると、変数を使うときは
パッケージを明示するか、my 宣言しないと怒られますが、
$a、$b という変数は怒られないで、%main:: シンボルテーブルに
追加されますね。$aa だとダメ。$c もダメ。なぜでしょう?
恐れ入りますがご存知の方はご教示ください。

No. 1780 # 68user 2001/03/04 (日) 01:24:36
>>1779 ふくし
想像でモノを言いますが、sort でセットされるのが $a と
$b だから特別扱いされているんじゃないでしょうか。
# Ex. sort { $a cmp $b }

No. 1781 # ふくし 2001/03/04 (日) 02:22:08
ああ〜そかそかそかそか。使いますねえ sort で $a と $b。
すっきりしました。いつもありがとうございます!(^^)

No. 1782 # Tel 2001/03/05 (月) 16:05:53
はじめまして。Telと申します。
以前、こちらで共有メモリについて少し触れられていたようなので、質問をしてみようと思いました。

現在、共有メモリ上にフラグの役割をもつ変数を用意し、複数のプロセス間でそのフラグを参照し、フラグの状態によって処理の分岐をするというプログラムを書いています。
そこでわからない点が出てきました。

共有メモリに変数を用意する方法の記述についてはサンプル等を見て作成することができると考えています。
しかし、それを参照する各プロセス側での記述方法について、サンプルが少なくよくわからないのです。
たとえば
int flag;
char data[datalength];
という2つの変数が共有メモリにある場合、flagの内容によってdataに書き込む内容を分けるという処理は具体的には、どう記述すれば良いのでしょうか。

プログラムAは
flag==1 ならば"good morning."
flag==2 ならば"good afternoon."
flag==3 ならば"good evening."
をdataに書き込む。
プログラムBは
flag==1 ならば"beakfast."
flag==2 ならば"lunch."
flag==3 ならば"dinner."
をdataに書き込む。
上記のような場合、AとBそれぞれではどう宣言してからflagやdataを使うのでしょうか。

勉強不足からくる質問だと思いますがUNIXの知識がない為なのか、書籍の選びかたが悪い為なのか、難しくて具体的な記述方法がわからないためにこちらにきてみました。
どうかご指導願います。よろしくおねがいします。

No. 1783 # ゆう 2001/03/05 (月) 19:14:45
UNIXでパーミッションを変更しようとしたのですが
以下のメッセージで変更できません。どうしてですか?
502 SITE command not implemented.

No. 1784 # rosegarden 2001/03/05 (月) 19:26:37
>>1783 ゆう
> 以下のメッセージで変更できません。どうしてですか?
> 502 SITE command not implemented.
サーバ側でサポートしていないからでしょう。
SITE コマンドと言うのは標準的でないコマンドのことです。
だから、理屈の上では
ftp>SITE SHUTDOWN NOW
なんて出来ても別に不思議ではないと思います。

それでは身も蓋もないので、ためしに、
ftp>SITE CHMOD 600
とか win98 の ftp.exe だと
ftp>literal SITE CHMOD 600
(だったかな?) とかしてみて駄目だったら、駄目なんだと思います。

どっちにしても、管理者に聞いてみないと、はっきりしたことは
分からないと思います。

No. 1785 # rosegarden 2001/03/05 (月) 19:40:28
>>1782 Tel
書き込み拝見しましたが、どうも共有メモリ云々でつまずいて
おられるのではなく、単純に C 言語で目的を
達成するプログラムを書く方法について悩まれているように思えます。

# もしも違いましたら、ごめんなさい。
# 何をどうされたいのかが、不明で推測で書いていますので、
# 御理解ください。

shared memory を使ったプログラミングは経験が無いんですが、
ちょっと本を見たら、初期化やセットアップは別として
メモリへのアクセスは普通に配列や malloc したバッファへの
アクセスと変わらないようでした。

失礼を承知で書きますが、共有メモリを使わないで、固定したファイルに
flag と data を書き込んで、プログラム A と プログラム B で
やりとりをするようなものは、お書きになられますか?
もしそれが可能なら、似たような手順で出来そうです。

# もしも、既にそんなことは可能であると言うのでしたら、
# 失礼お許しください。

ちなみに、私の場合には
「UNIX ネットワークプログラミング」という本を参考にしました。
トッパンからでている本です。ちょっと眺めた程度だと、
共有メモリの部分は結構丁寧に書いてあって、
サーバとクライアントのサンプルもありました。
ざっと見たかんじでは、分かりにくいと言う感じは無かったですね。

# これって、ここで紹介されている本の旧版なのでしょうか?
# 今は二分冊になっているのですね。私のには IPv6 のことは
# 書いてないです。

No. 1786 # rosegarden 2001/03/05 (月) 20:04:25
ちょっと、すごい初歩的な質問なのですが、
一般に top コマンドの出力でメモリの状況が出力されますよね。

last pid: 20294; load averages: 0.19, 0.11, 0.04 up 1+08:42:31 19:52:21
30 processes: 1 running, 29 sleeping
CPU states: % user, % nice, % system, % interrupt, % idle
Mem: 35M Active, 6528K Inact, 12M Wired, 3448K Cache, 14M Buf, 3228K Free
Swap: 128M Total, 6588K Used, 121M Free, 5% Inuse

上のような奴です。Mem のところの Active, Inact, Wired, Chache, Buf, Free
の合計ってだいたい搭載された物理メモリの量に近いものだと思っていたのですが、
これはあたっていますか? (ただし、10% 程度の増減は許容するものとします。)

実は、3 月 1 日前後に CVSup した current なのですが、
top の表示が次のようになっています。

last pid: 7969; load averages: 0.94, 0.74, 0.40 up 0+00:11:35 19:59:58
22 processes: 2 running, 20 sleeping
CPU states: % user, % nice, % system, % interrupt, % idle
Mem: 2927K Active, 12M Inact, 6285K Wired, 2K Cache, 35M Buf, 41M Free
Swap: 256M Total, 256M Free

最初の top コマンドの表示は別マシンなのですが、上のマシンは
搭載している物理メモリは 256 MB なのに上のようになっています。
大雑把に計算しても Mem の合計値は 150MB 行っていません。
何か、私は勘違いでもしているのでしょうか?

# というか make world 中に何度も kernel panic 起こすし。
# fsck は大活躍だし。さっきは自動修復が効かずに
# /dev/ad0s2f: UNEXPECTED SOFT UPDATE INCONSISTENCY; RUN fsck MANUALLY.
# なんていうメッセージもでました。
# こういうことがしょっちゅう起こると、もう笑いしかでませんね。

No. 1787 # 68user 2001/03/06 (火) 02:16:13
>>1784 rosegarden
>> 502 SITE command not implemented.
は、SITE コマンドは未実装だよ、という FTP サーバ側の
メッセージなので、chmod は無理です。

> ftp>literal SITE CHMOD 600
ほほー、literal というのがありますか。僕が知っていたのは
quote site chmod 600 です。

あと、前にここで書いたかもしれませんが、site index ちうのが
便利です。例えば ftp://ftp3.jp.FreeBSD.org にログインして、
    ftp> site index perl-5
などなど。

>>1785 rosegarden
> 「UNIX ネットワークプログラミング」という本を参考にしました。
> トッパンからでている本です。
> # これって、ここで紹介されている本の旧版なのでしょうか?
> # 今は二分冊になっているのですね。
確か三分冊になったのですが、トッパンはなくなったので、ピアソン
エデュケーションが版権を引き継ぎました。
    http://www.mmjp.or.jp/pearsoned/washo/network/wa_net28-j.html
    http://www.mmjp.or.jp/pearsoned/washo/network/wa_net27-j.html
洋書の Vol.3 が出ているのかどうかはわかりません。
作者が亡くなったので、永遠に出ないのかもしれません。

>>1786 rosegarden
> Mem のところの Active, Inact, Wired, Chache, Buf, Free の
> 合計ってだいたい搭載された物理メモリの量に近いものだと
> 思っていたのですが
僕もそのように認識しています。current ですからちょっと
様子を見てはどうでしょう。

# VM まわりなんてとても僕の手に負えないので、役に立たない
# 返事しかできないです。ごめんなさい。

No. 1788 # ミング [E-mail] 2001/03/06 (火) 14:13:40
今日は。

本来のLOGIN パスワードを忘れてしまった場合はOSからインストールし直すしかないのでしょうか?

No. 1789 # 68user 2001/03/06 (火) 15:40:07
>>1788 ミング
> 本来のLOGIN パスワードを忘れてしまった場合はOSから
> インストールし直すしかないのでしょうか?
root でログインして、passwd コマンドで該当ユーザの
パスワードを再設定します。root のパスワードも忘れて
しまったのなら、
    http://www.jp.FreeBSD.ORG/QandA/HTML/464.html
    http://www.jp.FreeBSD.ORG/QandA/HTML/1638.html
的なことをしますが、あなたの使っている OS が何なのか
全くわからないので、これ以上はなんとも。もし Windows
なら僕にはわかりません。

No. 1790 # rosegarden 2001/03/06 (火) 16:02:59
>>1787 68user
> > ftp>literal SITE CHMOD 600
> ほほー、literal というのがありますか。僕が知っていたのは
> quote site chmod 600 です。
良く分からないのですが、使ってみた感じだと telnet コマンドを
ftp クライアント代わりに使うような場合に打ち込むコマンド類が
これで打てるようになるみたいですね。
> あと、前にここで書いたかもしれませんが、site index ちうのが
> 便利です。例えば ftp://ftp3.jp.FreeBSD.org にログインして、
> ftp> site index perl-5
> などなど。
ああ、これ便利ですね。ls-lR でも検索しているのでしょうか?
> > # 今は二分冊になっているのですね。
> 確か三分冊になったのですが、トッパンはなくなったので、ピアソン
> エデュケーションが版権を引き継ぎました。
まさか三分冊というのまでは知りませんでした。
色々ありがとうございます。
> > Mem のところの Active, Inact, Wired, Chache, Buf, Free の
> > 合計ってだいたい搭載された物理メモリの量に近いものだと
> > 思っていたのですが
> 僕もそのように認識しています。current ですからちょっと
> 様子を見てはどうでしょう。
結局、アドバイス頂いてから、ソースを色々調べて見たら、
kernel ではなくて top コマンドの表示に問題があることが分かりました。
ページ数で取得したメモリの量を KB 単位に変換してないので
変な結果になるようです。
ちょっとまだ断定的なことは言えないのですが、
とりあえず、バグリポートしておきました。

Prev< No. 1774〜1790> Next  [最新発言に戻る] [過去ログ一覧]