>>1770 68user commit しました。とか言ってみたり。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi |
>>1770 68userさん いいですねぇ。 これ頂きます。perl4でも動くし(^^; |
質問したいことがあります。それはあるプログラムでPIDを変数として 持っているときに、その変数のPIDのプロセスを殺す方法があれば教えて欲しいのですが。 よろしくお願いします |
>>1773 purine 必ず OS 名や使用している言語を書いてください。 kill コマンドか、システムコール kill を使います。 http://X68000.startshop.co.jp/~68user/unix/pickup?keyword=kill&target=command&partial=on |
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 コマンド呼ぶだけのスクリプト見てもおもしろくないでしょ)、例えば ドメイン名検索とかならもっと便利なサイトがあるので、この掲示板で誰からも 反応がなければ近日中に消すつもりです。 |
>>1775 68user > open(IN, "-|") or exec($httptalker, '-get', $url); > と修正しました。この場合は perl が直接 fopen(3) を呼ぶため 訂正。perl が直接 pipe(2)、fork(2)、exec(2) するため、でした。 |
CGIの小部屋は消さないで欲しいです. メンテ終了ページは倉庫ディレクトリなどに 移設するのみにしていただけると嬉しいです. 簡単な内容のものでも,知らない人に説明するとき サンプル的に便利に利用させていただいております. |
>>1777 Netboy > CGIの小部屋は消さないで欲しいです. 了解いたしました。と決まれば、見られても恥ずかしくない 程度に brush up せねば。 |
いつも質問ばかりですいませんのふくしです。 Perl で use strict 'vars'; とすると、変数を使うときは パッケージを明示するか、my 宣言しないと怒られますが、 $a、$b という変数は怒られないで、%main:: シンボルテーブルに 追加されますね。$aa だとダメ。$c もダメ。なぜでしょう? 恐れ入りますがご存知の方はご教示ください。 |
>>1779 ふくし 想像でモノを言いますが、sort でセットされるのが $a と $b だから特別扱いされているんじゃないでしょうか。 # Ex. sort { $a cmp $b } |
ああ〜そかそかそかそか。使いますねえ sort で $a と $b。 すっきりしました。いつもありがとうございます!(^^) |
はじめまして。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の知識がない為なのか、書籍の選びかたが悪い為なのか、難しくて具体的な記述方法がわからないためにこちらにきてみました。 どうかご指導願います。よろしくおねがいします。 |
UNIXでパーミッションを変更しようとしたのですが 以下のメッセージで変更できません。どうしてですか? 502 SITE command not implemented. |
>>1783 ゆう > 以下のメッセージで変更できません。どうしてですか? > 502 SITE command not implemented. サーバ側でサポートしていないからでしょう。 SITE コマンドと言うのは標準的でないコマンドのことです。 だから、理屈の上では ftp>SITE SHUTDOWN NOW なんて出来ても別に不思議ではないと思います。 それでは身も蓋もないので、ためしに、 ftp>SITE CHMOD 600 とか win98 の ftp.exe だと ftp>literal SITE CHMOD 600 (だったかな?) とかしてみて駄目だったら、駄目なんだと思います。 どっちにしても、管理者に聞いてみないと、はっきりしたことは 分からないと思います。 |
>>1782 Tel 書き込み拝見しましたが、どうも共有メモリ云々でつまずいて おられるのではなく、単純に C 言語で目的を 達成するプログラムを書く方法について悩まれているように思えます。 # もしも違いましたら、ごめんなさい。 # 何をどうされたいのかが、不明で推測で書いていますので、 # 御理解ください。 shared memory を使ったプログラミングは経験が無いんですが、 ちょっと本を見たら、初期化やセットアップは別として メモリへのアクセスは普通に配列や malloc したバッファへの アクセスと変わらないようでした。 失礼を承知で書きますが、共有メモリを使わないで、固定したファイルに flag と data を書き込んで、プログラム A と プログラム B で やりとりをするようなものは、お書きになられますか? もしそれが可能なら、似たような手順で出来そうです。 # もしも、既にそんなことは可能であると言うのでしたら、 # 失礼お許しください。 ちなみに、私の場合には 「UNIX ネットワークプログラミング」という本を参考にしました。 トッパンからでている本です。ちょっと眺めた程度だと、 共有メモリの部分は結構丁寧に書いてあって、 サーバとクライアントのサンプルもありました。 ざっと見たかんじでは、分かりにくいと言う感じは無かったですね。 # これって、ここで紹介されている本の旧版なのでしょうか? # 今は二分冊になっているのですね。私のには IPv6 のことは # 書いてないです。 |
ちょっと、すごい初歩的な質問なのですが、 一般に 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. # なんていうメッセージもでました。 # こういうことがしょっちゅう起こると、もう笑いしかでませんね。 |
>>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 まわりなんてとても僕の手に負えないので、役に立たない # 返事しかできないです。ごめんなさい。 |
今日は。 本来のLOGIN パスワードを忘れてしまった場合はOSからインストールし直すしかないのでしょうか? |
>>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 なら僕にはわかりません。 |
>>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 単位に変換してないので 変な結果になるようです。 ちょっとまだ断定的なことは言えないのですが、 とりあえず、バグリポートしておきました。 |
68Userさん 回答ありがとうございます。 OSはSolaris7です。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー root でログインして、passwd コマンドで該当ユーザの パスワードを再設定します。root のパスワードも忘れて しまったのなら、 http://www.jp.FreeBSD.ORG/QandA/HTML/464.html http://www.jp.FreeBSD.ORG/QandA/HTML/1638.html 的なことをしますが、あなたの使っている OS が何なのか 全くわからないので、これ以上はなんとも。もし Windows なら僕にはわかりません。 本来のLOGIN パスワードを忘れてしまった場合はOSからインストールし直すしかないのでしょうか? |
>>1791 ミング >OSはSolaris7です。 Solaris 7 なら シングルユーザモードで起動してから、/etc/shadow を 編集して OK です。 インストール CD からでも出来ますが、 シングルユーザモードでの起動の方が簡単ですね。 忘れたけど、恐らく、そのままでファイルの書き換えが 出来たと思います。 FreeBSD だと mount -u / しないと書き込めませんが。 #vi は使えますよね? |
>>1792 rosegarden あ、 Solaris はシングルユーザモードで起動する時でも パスワードを聞いて来ることを思い出しました。 やっぱりインストール CD から起動して、ファイルシステムを マウントして書き換えるより無いですね。 |
>あ、 >Solaris はシングルユーザモードで起動する時でも >パスワードを聞いて来ることを思い出しました。 >やっぱりインストール CD から起動して、ファイルシステムを >マウントして書き換えるより無いですね ありがとうございます。 ところでもう一つ質問があります。 directoryでls −alすると6行目に各ファイルやdirectoryの容量が表示されますが、そこによく512という数字が出てきます。そのdirectory下のファイルの容量が512以上なので512は容量ではないのかなと思ったのですが、なにか特別な意味があるのでしょうか? よろしくお願いします。 |
>>1794 ミング > そのdirectory下のファイルの容量が512以上な > ので512は容量ではないのかなと思ったのですが、 ディレクトリもファイルですから、ディレクトリ自体のサイズです。 ディレクトリに書いてあるのは大雑把に言って、ファイル名と i ノード番号です。うーん、他にも書いてあるかも知れない。 要するにファイルのリストです。最初はだいたい 512 バイトで ファイルが沢山になった場合には適当に 512 バイト単位で大きくなって 行きます。手元の FreeBSD だとエディタでディレクトリを見ることも できて、次のような感じです。 % ls IPv6 d200006c.html daytime6.pl ipv6_1.html d6.c ipv6.html ipv6_2.html % cat IPv6 | hexdump -C 00000000 84 5e 00 00 0c 00 04 01 2e 00 00 00 80 26 03 00 |.^...........&..| 00000010 0c 00 04 02 2e 2e 00 00 97 27 03 00 14 00 08 09 |.........'......| 00000020 69 70 76 36 2e 68 74 6d 6c 00 1e c0 a0 27 03 00 |ipv6.html....'..| 00000030 14 00 08 0b 69 70 76 36 5f 31 2e 68 74 6d 6c 00 |....ipv6_1.html.| 00000040 a1 27 03 00 14 00 08 0b 69 70 76 36 5f 32 2e 68 |。'......ipv6_2.h|、&......|そのディレクトリにあるファイルの名前だけ保持できれば いいので、ファイルの数が少なければ、512 バイトということが ありえます。 |
>>1795 rosegarden hexdump のところが表示が変になってしまいましたね。 ソースの方を見てもらえれば分かりやすいかも。 |
>>1795 rosegarden > ディレクトリに書いてあるのは大雑把に言って、ファイル名と > i ノード番号です。うーん、他にも書いてあるかも知れない。 ちょっと不正確なので、正しい説明をします。 FreeBSD な人は /usr/src/sys/ufs/ufs/{ufs_vnops.c,ufs_lookup.c,dir.h} あたりを見ると分かります。 ディレクトリは可変長レコードのデータベースみたいになっていて、 *BSD の ufs の場合一つのデータは (1) i node 番号 (4bytes) (2) レコード自体の長さ (2bytes) (3) ファイルのタイプ (1bytes) (4) ファイル名の長さ (1bytes) (5) ファイル名(ただし 4 bytes 単位で切り上げ) となっています。これは dir.h の direct 構造体で定義されています。 struct direct { u_int32_t d_ino; /* inode number of entry */ u_int16_t d_reclen; /* length of this record */ u_int8_t d_type; /* file type, see below */ u_int8_t d_namlen; /* length of string in d_name */ char d_name[MAXNAMLEN + 1];/* name with length <= MAXNAMLEN */ }; さっきの例で見ると >>1795 rosegarden 00000000 84 5e 00 00 0c 00 04 01 2e 00 00 00 というのがありますが、 84 5e 00 00 : i node 番号 0x5e84 なので 24196 0c 00 : レコードの長さ 12 バイト 04: ファイルのタイプ 04 なのでディレクトリ 01: ファイル名の長さ 1 バイト 2e 00 00 00 : 2e がファイル名 "." あとはつめもの つまり、これは % ls -ai IPv6 24196 ./ 206736 d6.c 206752 ipv6_1.html 206464 ../ 206478 daytime6.pl 206753 ipv6_2.html 206500 d200006c.html 206743 ipv6.html としたときの "." のデータです。 little endian なので例によってバイトオーダがひっくりかえります。 ファイルのタイプは /usr/src/sys/ufs/ufs/dinode.h にあって /* File types. */ #define IFMT 0170000 /* Mask of file type. */ #define IFIFO 0010000 /* Named pipe (fifo). */ #define IFCHR 0020000 /* Character device. */ #define IFDIR 0040000 /* Directory file. */ #define IFBLK 0060000 /* Block device. */ #define IFREG 0100000 /* Regular file. */ #define IFLNK 0120000 /* Symbolic link. */ #define IFSOCK 0140000 /* UNIX domain socket. */ #define IFWHT 0160000 /* Whiteout. */ となっています。これを見るとディレクトリは 0x04 です。 桁数があわないのは、パーミッションも一緒に保持させるためで、 下四桁はパーミッション用です。ファイルのパーミッションは ディレクトリではなく別のところに保持されています。 |
はじめあして。 この掲示板スクリプト、すばらしいです。いつも参考にしてます。 いきなりなんですけど、 2ちゃんねるみたいにレス式にするつもりないですか。 今のままだと、レスが分散してみにくいし、 それゆえ1つの話題に(2chみたいに)何百とレスつけるのは無理だし。 とゆーことで。 |
2ちゃんねるみたいに 「あげ」だの「さげ」だの「逝け」だの「氏ね」だのという書き込みは 見たくないです。 2ちゃんねるの何百というレスの半数は、そういった 「意味不明の書き込み」のように思えます。 そのようなレスを数多く書き込むよりも、今までのように 要点を的確に書いて頂いた方が、情報を得る側としてはありがたいです。 ここには検索機能もありますから、自分に必要な情報は 検索して探し出せば良いことですし、それで見つからなかった場合は 質問をすれば良いと考えています。 今のままでかまわないと思うのですが、常連の皆様方はどうですか? |
>>1797 rosegarden rosegardenさんには自明のことかもしれませんが。 ls -lで見えるサイズが、各ファイル(ディレクトリもファイル) に対応するi-node内のサイズ情報を見ているのは、 rosegardenさんの説明のとおりです。 ディスク上の割り当てが(効率の為に)ブロック単位で行われるのも rosegardenさんの言うとおりです。 普通ファイルの場合、i-node内のサイズ情報はファイルの末尾への書き込みの オフセットで決まります。 8192バイトseekして1バイト書き込むとサイズは8193バイトです。 seek部分がカラだとブロックは割り当てられません。 俗に穴のあるファイルと呼ばれます。 ディレクトリの場合、i-node内のサイズ情報は割り当てられたブロックサイズ そのものです。 理由は単に、本当のサイズ(が定義できたとしても)たいして意味がないからでしょう。 |
白状してしまうと、スレッド表示が欲しい、と前から思ってました。 >>1799 通行人ですが、一言。 2chのような書き込みがされることと、掲示板のユーザインターフェースは 全く別だと思います。 書き込みの内容や質は、場の雰囲気で決まるだけだと思います。 |
たけし怪獣記を、霊能力者から、もらいました。怖いよー。 |
>>1800 gixs > 普通ファイルの場合、i-node内のサイズ情報はファイルの末尾への書き込みの > オフセットで決まります。 > 8192バイトseekして1バイト書き込むとサイズは8193バイトです。 > seek部分がカラだとブロックは割り当てられません。 > 俗に穴のあるファイルと呼ばれます。 穴のあるファイルという言葉ははじめて伺いました。 実はかなり無知な方なので、こうやって教えて頂くと助かります。 参考になる書き込みどうもありがとうございました。 |
>>1803 rosegarden > 穴のあるファイルという言葉ははじめて伺いました。 では、ついでに。 穴あきファイルの作り方。 % perl -e 'open(OUT,">tmp");seek(OUT,1000000,0);print OUT "a"' 穴あき部分のデータは HDD には存在しません。ですから、 % ls -s tmp で使用ブロック数を見ると、16 となっています。 しかし、穴あき部分を read(2) すると、最初から 0x00 が 入っているかのように扱われます。ですから、 % cp tmp tmp2 % ls -s tmp tmp2 16 tmp 992 tmp2 と、ファイルをコピーしただけで一気にファイルサイズが膨らみ、 file system full になってしまう可能性がありますので、注意が必要です。 |
>>1798 筋肉。 >>1799 通行人ですが、一言。 >>1801 gixs ここが 2ch 的な場になるのと、2ch 的システムを取り入れるのは、 gixs さんの言われる通り別問題でしょう。2ch 的システムは結構 使いやすいと思います。 で、これまでスレッドタイプは特に検討していなかったのですが、 ツリー型 http://www.so-net.ne.jp/ClubHouse/room/pc_scramble/pc_scramble.html と 非ツリー型 http://www.wakusei.ne.jp/twn/lng/green/wwwlng.cgi http://cocoa.2ch.net/unix/index2.html がありますね (とほほラウンジも 2ch も、データ構造としては 同じでしょうから、両方の形式で表示できるようにしてもいいし)。 どちらがよいですか。また、その理由があれば教えて下さい。 ちなみに、なぜ現在のようなウナギの寝床式掲示板にしたかと いうと、管理者が楽だからです。「新しい話題だから新しいスレッドを 立てろ」だの「クソスレ立てんなゴルア」とか「1の主治医です」とか 書かなくて済むし ;-) でも、情報が混ざって探しづらいということならば検討はしてみます。 # それを補うつもりで >>数字 形式のリンクを導入してみました。 # 将来的にはその情報からツリー形式を抽出できないかな、と。 あと、できればご自分が使いにくいと思う理由を分析していただ けるととってもありがたいです (それが一番難しいんですけれども)。 使いやすい掲示板というのは永遠の課題ですので、今回のような 大規模な改変や、こまかなユーザインタフェースまわりまで、提案 していただけるのはありがたいことです。 しかし、最近これまでにも増して忙しくなってしまったので、 あまり期待はしないで下さいね。 |