Linux Gazette 2005年8月投稿記事
目次
南チロールのイタリア学校向けフリーソフトウエアのインストール
2005年の7月中、イタリアのボーゼン自治州の学校全部のコンピュータ・インフラストラクチャが、フリー・オペレーティングシステム FUSS Soledad GNU/Linuxを用いて更新された。このオペレーティングシステムは、有名なデスクトップ環境GNOME[2]のデビアンGNU/Linux [1]ディストリビューションの特別生産で、南チロルの学校のためのチームが作った。
この更新の変わっているところは、フリーライセンス [3] を使って、オペレーティングシステム とアプリケーション全部を再配布したことである。
ボーゼン自治州のイタリア教育管理部[4]、欧州社会資金[5]、及びイタリア語CTSにおける専門部隊"Luigi Einaudi" [6]が、公立私立の学校全部の参加を得て、賛助し資金を提供したこの主導権は、生徒、家族、教師、及び教育界からのオペレータに、学校と家庭の双方において、全く無料のオペレーティングシステムを容易に使用する機会を与える。
ディストリビューションに追加される多言語ソフトウエアの正確な選択の他に、約2万枚の生CDが、Alpikom [7]の協力で生徒と教師に配布される。生徒の家族全部に、無料で、学校のコンピュータ学級で使用されるのと同一のソフトウエア環境とアプリケーションが与えられる。
新しいオペレーティングシステムと無料ソフトウエアを一般的に数個の教育活動に導入するこの過程は、 2005/2006学校年度全体の間専門家チームが支援する。このチームが果たす主要な課題は、教育単位全体のため、技術、教育の両面にわたって研究課題を支援し育成することである。
新規オペレーティングシステムへの切換は、2005年9月から、幾つかのコースについて学校運営者と40近くの設置チームのため進行され、教育界で関与する人達全員がGNU/Linux のこの風変わりなバージョンを知ることになる。この機会に、誰もが自分のコンピュータシステムに FUSS Soledad オペレーティングシステムをインストールすることになる。
管理部がおこなった教育的研究活動のトップにあるこのプロジェクトは、学校に対し、知識の自由とフリーソフトウエア解決策の共有に向かう重要な選択と提供して、学習する生涯の権利を与え、すべてのユーザのためソフトウエアとオペレーティングシステムを全くの制約なしに自由に使用し、コピイし、再配布し変更することの自由を増加する。
この活動は、Truelite srl [8]のChristopher R. Gabriel 率いる優れた技術スタッフに支えられて、Paolo Zilotti と Antonio J. Russoが調整した。このスタッフは,23労働日で2460台のPCの展開を完了し、プロジェクトの解析段階で定義した高い品質基準を保証した。
イタリア教育に関する自治州議員ルイザ・ネッチと教育管理局ブルナ・ラウチ・ビザンチン教授にとって、このプロジェクトは、教育的な側面及び情報技術のダイナミックで分散する使用に向かう基本的選択について高い品質レベルを導入する。
フリーソフトウエアは、教育界から排斥することの出来ない文化的専門的な強化である。この選択は、局長バーバラ・レペット博士及び CTS "Luigi Einaudi" 理事長ジアンドメリコ・スボプ博士にも強力に支援した。
詳細は
http://www.fuss.bz.it
mailto:info@fuss.bz.it
[1] Debian Project: http://www.debian.org/
[2] Gnome Project: http://www.gnome.org
[3] The free software: http://www.gnu.org/philosophy/free-sw.html
[4] Intendenza Scolastica italiana: http://www.provincia.bz.it/intendenza-scolastica/
[5] Fondo Sociale Europeo: http://www.provincia.bz.it/europa/esf/index_i.asp
[6] CTS "Luigi Einaudi": http://www.cts-einaudi.it/
[7] Alpikom Spa: http://www.alpikom.it
[8] Truelite Srl: http://www.truelite.it
Oracle10g (10.2.0.1)をCentOS 4.1上にインストール
1.CentOS 4.1 をインストール
2.ルートとして走らせる
# groupadd dba # SYSDBAシステム優先権を与えられるユーザのグループ
# groupadd oinstall # ファイルのグループ・オーナー
# useradd -c "Oracle software owner" -g oinstall -G dba oracle
# passwd oracle
# mkdir -p /u01/app/oracle
# chown -R oracle.oinstall /u01
# mkdir -p /u02/oradata/wtfdata
# chown -R oracle.oinstall /u02
3.ルートとして走らせる
# rpm -Uvh oracleasm-2.6.9-11.ELsmp-2.0.0-1.i686.rpm \
oracleasmlib-2.0.0-1.i386.rpm \
oracleasm-support-2.0.0-1.i386.rpm
# /etc/init.d/oracleasm configure
# /etc/init.d/oracleasm enable
望み通りにボリュームを作る。次のコマンドを使用する:
# /etc/init.d/oracleasm createdisk VLM0X /dev/sdx
[1]で助言するように
/etc/sysctl.conf,/etc/security/limits.conf,/etc/pam.d/login, /etc/profileを同調
oracleとしてログインする:
$ cd /tmp/database
$./runInstaller
" Advanced option" を選択し、
$ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1を用い
ASM インスタンスを作る
このランの間にボリューム・グループを作る
インストーラを出る:
$ ./runInstaller
" Advanced option" を選択し
$ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_2 を用いて
新しい ASM-データベースうぃ既存ボリューム中に作る
~oracle/.bash_profile correspondentlyを変更
Relogin as oracleとしてログインし直す.
次に−::-
$ sqlplus /nolog
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218968 bytes
Variable Size 88082024 bytes
Database Buffers 188743680 bytes
Redo Buffers 7168000 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database MastDB flashback on;
Database altered.
SQL> alter database open;
Database altered.
企業マネージャコンソールを開く:.(Enterprise Manager 10g Database Control URL:
http://ServerCentOS41:1158/em)
フラッシュバック・リカバリ領域のため、新しいボリュームのグループを作り
EMのリカバリ設定ペイジ上の対応するボリュームを変更する
この場合のシステムスタートアップは次のようになる筈:
[oracle@ServerCentOS41 ~]$ ./lsnrstart
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 30-AUG-2005 17:57:41
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ServerCentOS41)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 30-AUG-2005 17:57:42
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ServerCentOS41)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 30-AUG-2005 17:57:42
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /u01/app/oracle/product/10.2.0/db_2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_2/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_2/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC2)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ServerCentOS41)(PORT=1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 30-AUG-2005 17:57:42
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/10.2.0/db_2/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/10.2.0/db_2/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC2)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ServerCentOS41)(PORT=1522)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@ServerCentOS41 ~]$ dbstart
Processing ASM instance "+ASM": log file /u01/app/oracle/product/10.2.0/db_1/startup.log
Processing Database instance "MastDB": log file /u01/app/oracle/product/10.2.0/db_2/startup.log
[oracle@ServerCentOS41 ~]$ emctl start dbconsole
TZ set to US/Eastern
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://ServerCentOS41:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control ........................ started.
------------------------------------------------------------------
Logs are generated in directory /u01/app/oracle/oracle/product/10.2.0/db_2/ServerCentOS41_MastDB/sysman/log
参考資料.
1.www.puschitz.com/InstallingOracle10g.shtml
アプリケーションの仕事をしていますが、それにはkernelのネットワークモジュールを変更することが必要です。使用すべきファイル全部と、それらがある場所を何方か教えて頂けませんか?良い参考書があったら教えて下さい
御返事を有り難う。大変役立ちました。書物を必ず読みんでkernelプログラミングを勉強します。
コンピュータ科学の学位論文でkernelプログラミングを勉強しました。kernelプログラミングの最も良い参考書は、Robert Loveの
Linux Kernel Development (2版)だと思います。2番目は、Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartmanの
Linux Device Drivers (3版)です。後者はオンラインで無料で利用することが出来ますが、私の意見では、使うとこの本を買いたくなります。
私のテーマは、仮想メモリマネージャを変更しただけなのでネットワークコードについてはお役に立ちません。しかし、ソケット・バッファ又はネットフィルタ・フレームワークをお使いならお役に立てると思います。
経験から、コードを変更しようとする前に文献を沢山読んで、そのネットワークコードが実際どんな働きをするか理解することが大切です。
Kernel Newbies ウェブサイトと、IRCチャンネルに役立つことがあると思います。最後に、行き詰まって誰の助けも得られないとき、
Linux Kernel Mailing List にメールを送ることが出来ますが、質問を送る前に良く勉強しておかないと、無視されるか又は、何人もからマニュアルを読めと言われるだけです。
最近決定を迫られている。作るのに一年を要したソフトウエアを、維持する時間が十分でなかったとの理由だけで死なせるのか、又はオープンソースにするのか何れかの決定だ。
オープンソースは、暫くは良い考えのようだが、問題が一つある。我々は、そのソフトウエアを自分達の管理下に置き、後で(十分な時間を掛けた後)それを売ってお金にしたい。正直に認めるが、我々が自分達のソフトウエアを独占したかったのが、いけないのだろうか?そのソフトウエアとドキュメントを書くのに一年を要した。フリーソフトウエアのことは分かるが、誰が無料で働くだろうか?フリーソフトウエアは、お金にする方法がなかったら、長い目では絶対に成功しない。
二重ライセンスとGPL (the virus):
そこで我々は言った:オイ、RedHatとMySQLはオープンソースだよ。それでも、銭儲けをしている。どんな風に?答は「二重ライセンス」と言う戦略にある。これは簡単な考え方だ。オープンソース会社は先ず、ソースコードの著作権を取る。次いで、公開で利用出来るようにする。そこで、会社はソースコードの著作権を持っているので、、二つの異なるライセンス、一つはオープンソース、もう一つはコマーシャル、で配布することが出来る。このような場合のオープンソースライセンスは、ほとんど常にGNU GPL (一般公開ライセンス)であって、常に誰かがソースコードを変更し、それを再配布して別のプロジェクトに組込む。しかし、一つの大問題(大きい面倒な問題)がある。GPLコードを使用する製品はいずれも、GPLライセンスの下でリリースしなければならないとの制約だ(GPLは、我々の考えでは、ウィルスのような働きをして、拡散し続ける)。このことは単純に(オープンソースで生きている人が何を言おうと)GPLのコード又はそれを組み込んだ何らかの製品を利益のため売ることは出来ないことを意味する。その目的では、商業ライセンスを提案しなければならない。
二重ライセンスの有名な会社の幾つかは:沢山の中でもRedHat 社、MySQL社.、及びSleepycatである。これらの会社は、オープンソース運動を動かしたいオープンソース社会と開発者を片手で引き付け、別の手では、二重ライセンスを用いて本格的な銭儲けを企んでいる。
この働きの例を見よう:一人の男が、何か金になると思う商用データベースアプリケーションを作成していた。彼は、無料だと思って、背景にMySQLデータベースを使用した。後になって、MySQLが使用するGPLライセンスに抵触していることを見出した。誰であっても、変更又は未変更のGPLを使用するアプリケーションを配布することは、全体プロジェクトがGPLの下でライセンスされていない限り、禁じられている。したがって、其の男には、MySQLの商業ライセンスを(コピイ当たりで)購入する以外の選択はない。
二重ライセンスは害悪か?
その通りだ:だがそれは間違ってはいない。製品収入がないならば、プロジェクトは死んでしまうか又は、極めて悪い形になるであろう(多数のオープンソース伝道者は、我々に反対して、オープンソースを宗教に比較するだろう。これは間違いだ)。言い換えると、あの男は、ひどいことにそれをサポートしていなかった理由で、プロジェクトから金儲けをしないことがある。このようなソフトウエアの一例はPuTTY(シモン・タサムにはお詫びするが)だ。これは非常に普及しているけれども、望まれることが沢山残っている。ユーザインターフェイスは貧弱で、文書作成の基準は低く、(カスタマ)サポートもない。非常に有名なソフトウエアには奇妙なことだ。
ここでもし、PuTTYが二重ライセンスでリリースされていると、今とは相当に異なっていた筈だ。PuTTY会社は大きくなって、新人を雇用しカスタマサポートを与えていたであろう。そんなことは起こらなくて、PuTTYは、カスタマサポートのあるコマーシャルソフトウエアと、何か具合が悪いとき文句のいえる誰かをを好む大会社には使用されなかった。例えば、Vandyke SecureCRT、Whitehorn Secure Terminal 又は Celestial Telnetは、有名なコマーシャルSSHクライアントの幾つかである。
では、オープンソースは悪いと言うのか?人々がオープンソースを続けるのは何故か?
そうではない。オープンソースの第一の利点は、開発時間を50%も短くすることだ。人々がオープンソースを続ける別の理由は、開発コミュニティの助けでプロジェクトが常に生きていることを確かめるためだ(多くのコマーシャルソフトウエアアプリケーションはリリースの最初の年に死んでしまう)。オープンソース開発に参加する人の中には名誉のための人もいる。
最低線は、二重ライセンスは多くの人が考える程悪くはないと言うことだ。これは、自分のオープンソースプロジェクトから、収入を得たいときの唯一の手段なのだ。この記事を終わるに当たり、悪名高いビル・ゲーツの「趣味に熱中する人への公開状」から引用したい「何が楽しいと言って、プログラマを雇って趣味市場に良いソフトウエアを氾濫させることが出来るより、楽しいことはない」
------------------
TCPのkernelレベル実施に入りたいのですが、kernelレベルでTCP接続を扱う方法に関する参考資料を教えて頂けませんか?特に、kernelにおける−TCP接続状態に興味があります。
あ!また、プログラムがセグメンテーション不具合を起こして、coreをダンプした。どうしよう。
これは頻繁に起こるが、こうして生じる「core」ファイルを徹底的に解析すれば、不具合の原因が完全に分かって、後でバグの発見に役立つことを知っているプログラマは少ない。
そこで、良くあるgdbデバッガを用いてcoreファイルを徹底的に解析する方法を解説する。
解り易くするため、coreダンプで終わる簡単なプログラム[下記]を中心に説明する。
/*File : Debugger.c
Author : B**l G***s */
/*
* 無効アドレスにアクセスするファンクション
*/
void defaulter ()
{
char *ptr;
char str[] = "Hello World";
ptr = 10000000;
printf("%c", *ptr); /* I will give segmentation fault */
}
void main()
{
defaulter();
}
上のコードをコンパイルする:
$ cc -g Debugger.c
第一に注意するのは、プログラムはデバッグフラグ[-g for gcc]を付けてコンパイルしなければならないことだ。これによりデバッガは、不具合の後作成されるcoreから最大の情報を引き出すことが出来る。
コンパイルすると「追加の引数なしで」cutと言う名のエクゼクタブルが作成される。このエクゼクタブルを走らせると、欲しかったメッセージが示されるす:
"Segmentation fault (core dumped)"(「セグメンテーション不具合(coreをダンプ)」)
これで、不具合の時の様子を示す巨大なcoreファイルが手に入った。これからの課題はこのcoreファイルの核心に入ることだ。gdbをスタートさせた後、最初にするのは:
(gdb) file a.out
Reading symbols from a.out...done.
'file' コマンドは、エクゼクタブルを純粋なメモリに関し記号とコンテンツについて読取る。それを終わったら、coreファイルの名(ここではcore)と一緒にコマンド 'core' をタイプする。
(gdb) core core
`a.out'.によりcoreが作成される
Program terminated with signal 11, Segmentation fault.
#0 0x2924 in defaulter () at Debugger.c:10
10 printf("%c", *ptr); /* I will give segmentation fault */
非常に簡単なプログラムの場合、調査は自分でここで終わる。このコマンドは、エクゼクタブル、ファンクション及び不具合を生じた行の名を確認するのに十分な情報を与えるからである。
もっと複雑なプログラムについての次のステップは 'backtrace' コマンドを走らせることである。これは、スタックフレーム全部のバックトレースをプリントする。 'backtrace' は呼出毎の間で渡された引数に関する情報をも、それぞれの値と共に示す。
(gdb) backtrace
#0 0x2924 in defaulter () at Debugger.c:10
#1 0x295c in main () at Debugger.c:17
最低数(常に0)を有するフレームは、問題の可能性のある場所に最も近い場所である。gdbは呼出スタックを横断するのに多数のコマンドを与える。
++特定のフレームを選択するためには、 'frame' に選択するフレーム番号を続ける:
(gdb) frame 0
#0 0x2924 in defaulter () at Debugger.c:10
10 printf("%c", *ptr); /* I will give segmentation fault */
++スタックを上下に移動するにはそれぞれコマンド 'up' と 'down' を用いる:
For moving up and down the stack use commands espectively.
(gdb) up
#1 0x295c in main () at Debugger.c:17
17 defaulter();
ここまでの調査は完全に皮相であると言える。不具合の原因をもっと厳密に理解するには、変数のレベルに突っ込んで最後にはレジスタのレベルに入らなければならない。
変数の調査:
それ程難しくはない。gdbが豊富なコマンドを用いて易しくして呉れる。ここでは、先ずフレーム0を選んでローカル変数を検査する:
(gdb) frame 0
#0 0x2944 in defaulter () at Debugger.c:11
11 printf("%c", *ptr); /* I will give segmentation fault */
(gdb) info locals
ptr = 0x989680 Address 0x989680 out of bounds
str = "Hello World"
これ丈ではなく、出力を多数の異なるフォーマット [hex, octal]に整えることが出来る:
(gdb) print /o str
$1 = {0110, 0145, 0154, 0154, 0157, 040, 0127, 0157, 0162, 0154, 0144, 0}
(gdb) print /x str
$2 = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x0}
時には、変数のアドレスと型及びその逆を知る必要がある。 'x' と 'whatis' がこの問題をある程度解決する。
(gdb) x /s str
0x68ff2e00: "Hello World"
(gdb) whatis str
type = char [12]
レジスタの検査:
レジスタの情報を入手するのも同じく容易だ。
(gdb) info registers
'info' には、実際に多数のオプションがあるので、情報全部を手に入れたいのであれば、習得しなければならない。
頻繁に使用されるオプションの幾つかをここに貼り付けた:
info all-registers -- レジスタ全部とその内容のリスト
info corruption -- 壊れていると思われる割当全部のメモリプロファイルレポート
info heap -- 割当全部に関するメモリプロファイルレポート
info leaks -- リーク全部に関するメモリリークレポート
info variables -- 広域変数及び静的変数全部の名称
視野を広げよう
上級の話題:
異なるマシン上に生成されるcoreの解析:実在の業務は、製作マシン上[実際に生成される場所]でcoreダンプを解析することではなく、別個の環境上[ここでも、通常はデバッガは生産マシン上のインストールさえされていない]でおこなうことである。これは、製作上のバイナリが解析を実行する環境と異なるとき、厳しい問題を課する。この問題は、下に示す2段階手順を踏むことにより解決される:
1]コマンド 'packcore core_file tar_dir' を走らせる。これは、不具合のとき使用されるエクゼクタブルと共有ライブラリ全部をcore.tarと言う名のタールボールにパックする。
2]coreの作られた環境からバイナリ全部を手に入れたので、次のステップは、これをアンタールして、環境変数GDB_SHLIB_PATH を設定し、これらのライブラリを置く場所を指定する。gdbはこの環境変数の値を読取って正しいバイナリを取り上げる。
その他のコマンド:詳細には入らないが、coreの解析と一般的なプログラムデバッグに、さらに役立つ追加のコマンドを、ザッと眺める:
set heap-check on
disassemble
add-symbol-file
この記事がお役に立って、ご興味があったらお知らせ下さい:
linux 9におけるdnsのコンフィギュレーションを必要としています。redhat linux 9をやっていますがlinuxでdnsを構成する方法が分かりません。試したけれど上手く行きません。linuxでdnsを構成するのに搭載すべきrpmと、rpmが正しく働いていることを確認する方法を教えて下さい。
linuxでは、クエリーしてパケージが.Do rpm -q namedでをインストールしているか否かを見ることが出来る。インストールしていなければ、任意のエディタを用いて、 /etc/named.confをコンフィギュアする。
投稿者
aroop :08/20/2005 - 11:57.
Bindのrpm、bind-develとbind-utilをインストールする必要があります。メインconf.ファイルは/etc/named.conf です
正にそれがrpmをチェックしたい方法です。dnsをコンフィギュアするのにどのrpmをインストールするか分かっていません。bindも良く知りません。dnsのためbindを幾つインストールしたら良いか教えて下さい。またこれらrpmの名称も教えて下さい。dnsの完全なコンフィギュレーションも必要です。chaching-namerserver rpmもインストールする必要がありますが、正しくインストールされていないようです。bind rpmと両 caching nameserver rpm及び、linuxにdinをインストールする手順全体が必要です。助けて下さい。
先ず、自分のマシンにbindのrpmがあるか否かをチェックします
あるときは、メインconfファイルは /etc/named.conf にあります
自分のドメイン用にzoneファイルを作って、named.のローカルnamed.キャッシュが自分のマシンの中にあるか否かを点検します 以上
linuxディレクトリのdnsファイルのある場所が判りません。linuxでDNSサーバをコンフィギュアする方法を教えて下さい
Magumaは、マグナ・ワークベンチMaguma、PHP及びPythoon用のIDE、のリリースを発表する。これは、大幅に簡略化されたライセンスシステムを伴い、それによりユーザは難なく容易に設定して走らせることが出来る。
この更新は、バージョン2.5で判明した問題の幾つかに取り組んでおり、バージョン2.5からの更新は無料である。
別に解決された問題は:
Crtl-ドラッグ コピイ行動の問題を解決(今は、正しくコピイして選ばれたコードを新しい領域に置く)
右クリック プログラム選択は、Explorer 故障から解決
別のテーマを選ぶ時のエラーメッセージを解決
プロジェクトのためCVSからのインポートを解決
プロファイラ表示を変更
テーマ変更の時のスライダ行動を解決
衝突行動を幾つか解決
アサートの不具合を解決
マグナ・ワークベンチは、PHP及びPythonのためには最良のIDEである。マグナ・ワークベンチは、信頼性の極めて高いアプリケーションを企業の要求通りに作成するための開発ツールの最も包括的なセットを含む。マグナ・ワークベンチのみが、ソフトウエア開発者に対し高性能のPHP及びPythonアプリケーションをプログラムする喜びを与える。
カー・タッチ・ソリューション、タッチモニタ、パネル取付モニタ
SkyTouch Technology Co., Ltd.
我が社は?
私共同様に若い会社で、成長力と創造精神に溢れています。
2005年6月に、ユーザからの統合タッチシステムに関する需要の増加と多様化に答えるべく創立しました。
大きくはありませんが、この産業の専門家です。従業員全員が、何年もタッチシステム産業に従事しており、沢山の経験とノウハウを蓄積しております。
顧客のニーズを把握しています。我が社の使命は、顧客がシステム全体の背景にある複雑な技術を殆どご存知なくとも、統合完全タッチ・ソリューションとタッチ・システムを顧客に提供することです。
各種個別の要求をお持ちの顧客にご満足頂くため、私共は融通性のある心の広い創作者になろうと心掛けています。通常のタッチ・ソリューションの他に、貴社固有の特注ソリューションを実施する強力な技術力を持っております。
していることは?
全タッチシステムの集積を供給しています。我が社の重要競争力がその点にあるからです。統合された即座に使用可能なタッチシステムを以下の産業のため提供しています。
1.カービデオシステム/GPS-
2.工業用制御システム/CNC
3.情報キオスクシステム
4.セルフサービスPOSシステム
5.ゲーム・システム
6. VOD システム
目標と社是
品質が唯一の生命線。殆どの近代企業はこれを承知していますが、私共はもっと良く承知しています。
品質が会社の全システムを意味する。これには、製品、サービス、操業組織、資金繰りなどが含まれる。
顧客について語るとき、顧客中心の原理に基づいて、製品品質とサービスレベルを重点にする。考えることは、顧客が我々の協力を通じて付加価値を達成するのに、我々が役立つ方法である。
我が社の共同出資者に配慮する。彼らの利益が我々の最大関心事である。共同出資者とは友好的で共存共栄の関係を築く。これは、市場動向と、需要に迅速に応答することを保証する。
不変の哲学:顧客中心のサービスを心掛ける。専門家の仕事をおこなう。
=================================
Mr. Jackie
海外営業部
Tel : +86 28 8556 3610
Fax : +86 28 8556 3910
電子メール宛先: jackie@touchpi.com
電子メール宛先: sales@touchpi.com
電子メール宛先: info@touchpi.com
MSN : touchmonitor@hotmail.com
MSN : service@touchpi.com
www.touchpi.com
Sky Touch Technology Co., Ltd.
Chengdu Hi-tech Zone、Chengdu City, Sichuan、610041, P.R. China
バッファ・オーバーフローに関する白書
緒言
バッファ・オーバーフローは、プログラム又はプロセスが一時データ記憶領域に、予定より多いデータを記憶しようとするとき生じる。バッファは有限のデータ量を収容するよう作られているので、余分な情報は、隣のバッファにオーバーフローして、そこに保持されているデータをを、壊したり上書きしたりすることがある。
バッファ・オーバーフローは、バグや悪意のある攻撃の原因でる。プログラムが、バッファの終点を過ぎて書込もうとするとき生じる。
バッファは、Cにおけるアレーやポインタなで、連続的に割当られる桃例の塊でする。C及びC++の限界は、例に示すように、ユーザが書込むことの出来るバッファの自動境界点検が無いことである。
注記:範例は全部、x86構成を有するLinuxプラットホームでコンパイルした。
int main ()
{
int buffer [10];
buffer[20]=10;
}
このプログラムを実行の後、エラーは起こらないが、プログラムはバッファのための割当メモリを超えて書込もうとするので、予期しない出力を生じる。
例:
void function (char *str)
{
char buffer[16];
strcpy(buffer,str);
}
int main()
{
char *str=”I am greater than 16 bytes”;
function(str);
}
このプログラムは、予期しない行動を確実に起こす。27バイトの文字列(str)を、16バイトしか割当てられていない位置 (buffer) にコピイするからだ。過剰のバイトは、バッファを超えて、FP、戻りアドレスなどに割当てられている空間を上書きする。これはプロセススタックを破壊する。文字列のコピイに用いたファンクションは、境界のチェックをしないで完了するstrcpyだが、strncpyを用いると、スタックの汚染が防がれる。
例:
int main()
{
char buff[15]={0};
printf(“Enter your name:”);
scanf(buff,”%s”);
}
この例において、プログラムは標準入力から文字列を読取るが、文字列長さはチェックしない。文字列が14文字以上であるときは、scanf()が残りの文字をバッファの端を超えて書込もうとするので、バッファオーバーフローを生じる。
注記:ヌル・ターミネータ用に、1文字は常に保留する。
結果は、プログラム故障を生じるセグメンテーション不具合になるだろう。一定の条件では、故障の後ユーザににシェルのプロンプトが示される。シェルが優先権を制限しているときであっても、それらは環境変数の値を試験して、現行ディレクトリファイルをリストにし、pigコマンドを用いてネットワーク検出する。
バッファオーバーフロー書込探査:
1.探査可能プログラムの例
次のようなファンクションを探査すると仮定する:
void lame (void)
{
char small[30];
gets (small);
printf("%s\n", small);
}
main()
{
lame ();
return 0;
}
これをコンパイルしてディスアセンブルする:
# cc -ggdbプログラム。c -o プログラム
/tmp/cca017401.o: ファンクション `lame' において:
/root/program.c:1:`gets' は、危険なので使用してはならない:
# gdb program
/* 短い説明:gdb、GNU デバッガ、を用いてバイナリファイルを読取り、
それをディアセンブルする(バイトをアセンブラコードに転換) */
(gdb) disas main
ファンクションmainに関するアセンブラコードをダンプする:
0x80484c8 : pushl %ebp
0x80484c9 : movl %esp,%ebp
0x80484cb : call 0x80484a0
0x80484d0 : leave
0x80484d1 : ret
(gdb) disas lame
ファンクションlameのためのアセンブラコードのダンプ:
/* retアドレスの直前にポインタをスタックにセーブ */
0x80484a0 : pushl %ebp
0x80484a1 : movl %esp,%ebp
/* スタックを0x20又は 32だけ拡大。我々のバッファは30 文字であるが、
メモリは4バイト宛割り当てる(プロセッサが32ビットワードを使用するので)
これはchar small[30] に等価; */
0x80484a3 : subl $0x20,%esp
/* ポインタをスタック上のsmall[30] (仮想アドレス 0xffffffe0(%ebp)
におかれるタック上のスペース) にロードして、
getsファンクション:,gets(small)を呼出す; */
0x80484a6 : leal 0xffffffe0(%ebp),%eax
0x80484a9 : pushl %eax
0x80484aa : call 0x80483ec
0x80484af : addl $0x4,%esp
/*small のアドレスと"%s\n" 文字列のアドレスをスタック上ににロードして、
print ファンクション: printf("%s\n", small)を呼出す: */
0x80484b2 : leal 0xffffffe0(%ebp),%eax
0x80484b5 : pushl %eax
0x80484b6 : pushl $0x804852c
0x80484bb : call 0x80483dc
0x80484c0 : addl $0x8,%esp
/* スタックからリターンアドレス, 0x80484d0, を獲得してそのアドレスを戻す。
CPUが 'ret' としておこなうので、ここでは明白には見えない */
0x80484c3 : leave
0x80484c4 : ret
アセンブラダンプ終了
101号で、Avinoam Levkovitchが、「ウィンドウズ・クライアント用ホームホルダーサービス」と言う記事を発表しています。他の方法がない限り、彼のスクリプトは私にとって良い対策だと思います。Windows 2003アクチブ・ディレクトリの登録からsendmailサーバ上のユーザを自動的に作ろうとしているからです。作者を知りりませんが、兎に角私はコード作成者ではありません。質問があるので、お聞きしたいのです。
先ず、Avinoamのスクリプト、
#!/bin/bash
# Home-Folders creator
# Avinoam Levkovich. March 2004
HOME_FOLDERS_PATH="/Home-Folders/"
# 自分のHome-Foldersディレクトリへのパスを構成
# パスの終わりにクリエータ "/" を入れるのが重要
(例. /home/).
SEPERATOR='+'
# これは、 smb.conf ファイルからのWinbindセパレータ
#
TEMP_USER="koko14"
# テンプレートユーザ( quotaテンプレートユーザ)quotaを割当たいときは
# 時は、この行と、edquota -p で始まる行をアンコメントする
TEMP_FILE="./TEMP.txt"
# 一時ファイル二つが必要、これはスクリプトの終わりで削除。
TEMP_FILE2="./TEMP2.txt"
getent passwd > $TEMP_FILE2
grep -n -e "$SEPERATOR" $TEMP_FILE2 > $TEMP_FILE
sed -e 's/:/ /g' $TEMP_FILE > $TEMP_FILE2
sed -e 's/+/ + /g' $TEMP_FILE2 > $TEMP_FILE
cp -f $TEMP_FILE $TEMP_FILE2
Count=$(grep --count "$SEPERATOR" $TEMP_FILE )
echo "----------------------------------------"
echo " Please Wait, Processing $Count Records "
echo "----------------------------------------"
NEW_FOLDERS=0
while [ $Count != 0 ]; do
C_Line=$(grep -m 1 "$SEPERATOR" $TEMP_FILE )
sed '1d' $TEMP_FILE > $TEMP_FILE2
cp -f $TEMP_FILE2 $TEMP_FILE
N=1
for X in $C_Line ; do
case $N in
2) DOMAIN=$X
;;
4) Folder_Name=$(echo $X |tr "[A-Z]" "[a-z]" )
if [ -d "$HOME_FOLDERS_PATH$Folder_Name" ]; then
echo -n "."
else
mkdir "$HOME_FOLDERS_PATH$Folder_Name"
chmod 770 -R "$HOME_FOLDERS_PATH$Folder_Name"
chown "$DOMAIN$SEPERATOR$Folder_Name:root" -R
"$HOME_FOLDERS_PATH$Folder_Name"
# edquota -p $TEMP_USER
$DOMAIN$SEPERATOR$Folder_Name
# quota を割当てたい時は、この行をアンコメント
let "NEW_FOLDERS +=1"
echo
echo " New Folder :
$HOME_FOLDERS_PATH$Folder_Name "
echo
fi
;;
esac
let "N+=1"
done
let "Count-=1"
done
if [ $NEW_FOLDERS -gt 0 ]; then
echo "============================================="
>> /var/log/messages
echo " $(date '+%B.%d %T') Finish Analyzing the home folder list,
$NEW_FOLDERS Folders were Added " >> /var/log/messages
fi
# フォルダ名を大文字から小文字に変換:
find $HOME_FOLDERS_PATH -maxdepth 1 -type d -print | perl -ne 'chomp; ($l=$_)
=~ s:[^/]+$:lc($&):e; if ($l ne $_ && ! -e $l) { rename($_,$l); }'
rm -f $TEMP_FILE
rm -f $TEMP_FILE2
echo
echo "-----------------------------"
echo " $NEW_FOLDERS New Folders"
echo "-----------------------------"
そこで、私の質問:
1.私のwindbind セパレータは "\" であるが、ホームホルダ名(つまり、"domainname\username"の中のdomainname)にしたくありません。ユーザ名だけにしたいのです。スクリプトはdomainnameで剥ぎ取るでしょうか、微調整が必要でしょうか?必要ならどうしたらよいでしょうか?
2.ホームディレクトリを作りたくないユーザがいます。システムアカウント全部を含むものと、$で終わるものです。それにはどうしたら良いでしょうか?