やりたい事とか ・RAID ・LPIC-201 ・自転車を買う(買っちゃった~) ・サイト作成

2009年8月27日木曜日

キューのメールを削除する

消していいかちゃんと確認しおろ


postfix

postmaster -d ALL





sendmail

rm -f /var/spool/mqueue

You must add a global ddns-update-style statement to /etc/dhcpd.conf.

You must add a global ddns-update-style statement to /etc/dhcpd.conf.

そのまんまですが、

ddns-update-style

を追加しろよと。


これはDNSに向けてDynamic DNSの更新を要求するかどうかを決めるステートメント。

ddns-update-style interim; ← DNS更新を要求
ddns-update-style add-hoc; ← DNS更新を要求しない。
ddns-update-style none; ← DDNSを使用しない。

NFSの構築と実現

立ち上げておくサービス

クライアント
・portmap

サーバ
・portmap
・nfsd
・mountd ← nfsdを起動するときに一緒に立ちあがるっぽい。





設定
192.168.0.0/24にだけ/tmpをnfsで読み書き可能で公開する場合の設定。

vi /etc/exports
エクスポートするパス 公開するクライアント/ネットマスク(オプション)
/tmp 192.168.0.0/255.255.255.0(rw)


オプションに関しては下記の通り
・ro…読み込み専用
・rw…読み書き可能
・no_root_squash…rootでアクセス時、root権限で実行
・root_squash…rootでアクセス時、匿名アカウント権限で実行
・all_squash…すべてのアクセスを匿名アカウント権限で実行





/etc/exportsの設定を有効にする
exportfs -a

-a…すべてのディレクトリをエクスポートする
-au…全てのディレクトリをアンエクスポートする
-r…すべてのディレクトリを再エクスポートする
-v…詳細表示





エクスポートされているディレクトリを調べるにはshowmountコマンドを使用する
showmount

-a…ホスト名とエクスポートしているディレクトリを表示
-e…指定したホスト名でエクスポートしてるディレクトリを表示






マウントする
nfsmountはもう使えない。ので、

mount -t nfs 192.168.100.1:/tmp /tmp/nfs





mountオプション
bg…マウントに失敗してもバックグラウンドで試行し続ける
fg…フォアグラウンドで実行し続ける
soft…ソフトマウント
hard…ハードマウント
initr…ハードマウント時割り込み許可
retrans…ソフトマウント時再試行回数
nolock…ファイルロックしない
rsize…読み取りブロックサイズ
wsize…書き込みサイズ

2009年8月26日水曜日

-bash: smbmount: command not found

-bash: smbmount: command not found


smbmountが
sambaを入れても、smbclientを入れても無い…?




smbmountはなくなったそうです。
http://www.ivoryworks.com/blog/2009/05/cifsmountcifswindows.php




代わりは、mountで。

2009年8月25日火曜日

独自認証局を立てた時にエラー

Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ./demoCA/private/./cakey.pem:
I am unable to access the ../../demoCA/newcerts directory
../../demoCA/newcerts: No such file or directory


とか


Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ./demoCA/private/./cakey.pem:
I am unable to access the ../../CA/newcerts directory
../../CA/newcerts: No such file or directory



って言われたら、



/etc/pki/tls/openssl.conf

の45行目の




dir = ../../demoCA # Where everything is kept









dir = ./demoCA # Where everything is kept





に変更

2009年8月21日金曜日

UserDirの設定

UserDirで超はまった。

つぼに来たわけではないのだ。
わからなくて、罠から抜け出せなかったのだ。

二度とそうならないように、手順を残す。


環境:CentOS5.3。Apache2.2.3-22.el5
今回は「hoge」というユーザの場所(/home/hoge)でやるとします。
基本はrootユーザで作業をしていきます。



0.基本として、hogeユーザを追加しておくこと。パーミッションも変更。
useradd hoge
passwd hoge
chmod 711 /homge/hoge



1./home/hogeにpublic_htmlディレクトリを作成する。
su hoge
mkdir /home/hoge/public_html
exit






2./home/hoge/public_htmlに、index.htmlを作成
vi /home/hoge/public_html/index.html
#index.htmlの中は適当に。







3.httpd.confを編集
vi /etc/httpd/conf/httpd.conf
-------
<IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled              ←☆この部分をコメントアウト
UserDir enabled hoge             ←☆この部分を追加

#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disable" line above, and uncomment
# the following line instead:
#
UserDir public_html          ←☆この部分を追加

</IfModule>
<Directory /home/*/public_html>         ←☆ここから
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>                    ←☆ここまで新規に追加








4.httpdをrestart
service httpd restart







5.ブラウザから確認。下記のアドレスをブラウザに打ち込めば、あなたが用意した/home/hoge/public_html/index.htmlが表示されるはず。
http://サーバのIP/~hoge/








6.アクセスできなければ、/var/log/httpd/error_logを確認


・File does not exist /var/www/html/hoge が出ていたら、そもそも根本的になにか間違っている
・(13)Permission denied: access to /~negishi hoge の場合、7以降を行ってみる必要がある。










7./home/hoge/パーミッションの確認する。
その他のユーザに
ディレクトリだと、実行権限、
index.htmlだと読み取り権限が必要。

#要はこんな感じなんだわ。
/home          ←drwxr-xr-x
/home/hoge         ←drwx--x--x
/home/hoge/httpd      ←drwx--x--x
/home/hoge/httpd/error_log ←drwxr--r--


問題なさそうなら、ブラウザで確認。





7.それでも表示されない場合。SELinuxの停止
system-config-securitylevel-tui
SELinux:Enforceing
    Permissive
    無効       ←選択


それでもう一回ブラウザで確認してみて。




7.それでも表示されない場合。下記の秘密の呪文を唱える。(SELinux関連のコマンド)
fixfiles restore



もう一回確認してみて。




それでもダメなら、私にはわからん。

2009年8月14日金曜日

わかんなかったとこLPIC2勉強

テンションが低いです。
なんでですかね?金曜?
隣の亀が暴れています。。。



hdparm
 →-i…詳細情報表示
 →-t…バッファキャッシュを使わず読み込み書き込みテスト
 →-T…読み込み書き込みテスト
 →-c…32ビットI/Oサポート
 →-d…DMAモード


/proc/partitions
 ・ファイルシステムの割り当てを確認



/proc/bus/usb/devices
 ・usbデバイス情報を表示

vgchange
 ・-a…アクティブを非アクティブにする

arp
 ・-a…すべて表示 
 ・-s…arpテーブルに設定
 ・-d…delete
 ・-i…interface

allow-transefar
 ・スレーブサーバのIP

2009年8月13日木曜日

LPIC2に向けて。ファイルパス系

・設定ファイル名はフルパスで覚えること。(ファイル名のみ答えればいいという問題はほとんどありませんでした)



では、それを参考に、だらだら長文の始まりです。




cat /proc/version
 ・カーネルバージョン確認

head -4 /usr/src/linux-`uname -r`/Makefile
 ・カーネルバージョン確認
 ・/usr/src/kernel/`uname -r`/Makefile
 ・/usr/src/linux-headers-`uname -r`/Makefile

/boot/vmlinuz
 ・カーネルイメージ

/lib/modules/`uname -r`/
 ・モジュールのあるディレクトリ

/proc/modules
 ・ロードされているモジュール

/lib/modules/`uname -r`/modules.dep
 ・モジュールの依存関係ファイル


/usr/src/linux-`uname -r`/System.map
 ・?

/etc/modprobe.conf
 ・前処理・後処理が必要な場合、ロードする際にパラメータを指定する場合の設定ファイル
 ・alias…別名指定
 ・options…オプションを指定
 ・install…指定されたシェルコマンドを実行
 ・remove…modprobe -r された時の処理

/usr/src/linux-`uname -r`/arch
 ・アーキテクチャに依存したコード

/usr/src/linux-`uname -r`/configs
 ・目的別の.config

/usr/src/linux-`uname -r`/cyypto
 ・暗号処理関数

/usr/src/linux-`uname -r`/drivers
 ・各種ドライバ

/usr/src/linux-`uname -r`/fs
 ・仮想ファイルシステムと各種ファイルシステム

/usr/src/linux-`uname -r`/include
 ・C言語のインクルードファイル

/usr/src/linux-`uname -r`/init
 ・初期化コード

/usr/src/linux-`uname -r`/ipc
 ・SystemV互換性プロセス間通信

/usr/src/linux-`uname -r`/kernel
 ・主要なカーネル機能

/usr/src/linux-`uname -r`/lib
 ・各種モジュールファイル

/usr/src/linux-`uname -r`/mm
 ・メモリ管理関連

/usr/src/linux-`uname -r`/net
 ・各種ネットワークプロトコル関連

/usr/src/linux-`uname -r`/scripts
 ・カーネル作成支援スクリプト

/usr/src/linux-`uname -r`/Documentation
 ・各種ドキュメント

/usr/src/linux-`unmae -r`/.config
 ・カーネルコンフィギュレーションファイル

/usr/src/linux-`uname -r`/arch/アーキテクチャ/boot/
 ・作成されたカーネルのある場所

/boot/grub/menu.lst
 ・ブートローダ。
 ・timeout…メニューを表示している時間
 ・default…デフォルトで起動するエントリの番号。
 ・splashimage…メニュー表示時の背景画像
 ・title…メニューに表示されるタイトル名
 ・root…カーネル、OSが格納されているパーティション
 ・kernel…カーネルとカーネルオプション
 ・initrd…初期RAMディスクファイルを作成
 ・makeactive…ルートパーティションのアクティブ化。?
 ・chainloader…指定されたセクタの読み込みと実行。
 ・hiddenmenu…起動時の選択メニューを表示しない

/proc/sys/net/ipv4/ip_forward
 ・ネットワークインターフェイス間でのパケット転送の無視するかどうか

/proc/sys/kernel/modprobe
 ・modprobeのコマンド

/etc/sysctl.conf
 ・再起動後も有効にしておきたいカーネルパラメータの設定

/etc/rc.local
 ・システム起動時の最後に読まれるファイル

/sbin/init
 ・initプログラム

/bin/dmesg
 ・メッセージ

/etc/inittab
 ・boot…システム起動時に実行され、async
 ・bootwait…システム起動時に実行されsync
 ・ctrlaltdel…同時押しの処理
 ・initdefault…デフォルトのランレベルを指定
 ・respawn…指定したプロセスが終了すれば再起動させる
 ・sysinit…システム起動時にboot*より早く実行される
 ・once…指定したランレベルになった時一度だけ実行され、async。
 ・wait…指定したランレベルになった時一度だけ実行され、sync。

LPIC2に向けて。コマンド系

・主要コマンドのオプションは全て覚えること。(これは使わないだろうというようなオプションでも平気で出題されます)
・現在使われていない技術や新しい技術が導入された背景などを調べてみること。

では、それを参考に、だらだら長文の始まりです。




uname…システム情報を表示
 →-m(--machine)…ハードウェアタイプを表示
 →-n(--nodename)…ネットワークノードのホスト名を表示。hostnameコマンドと同じ。
 →-r(--release)…リリースバージョンを表示
 →-s(--sysname)…OS名称を表示。unameと素で打ったときと同じ
 →-v…カーネルのコンパイル時刻を表示。manpageにはOSバージョンって書いてあるけど何かの間違いだな。
 →-a(--all)…すべてを表示する


lsmod…ロードされているモジュールを表示
 →/proc/modulesを整形して表示するだけ。
 →数字は参照回数。その後のはモジュールを利用しているモジュール名


modinfo…モジュールの情報を表示
 →-F(filed)…フィールド値を1行づつ表示する。auther・description・license・param・depends・alias
 →-0(--null)…数字の0ね。改行をヌル文字を表示
 →-a…作者表示
 →-d…説明表示
 →-l…ライセンス表示
 →-n…ファイル名を表示
 →-p…?


insmod…カーネルにモジュールを登録する


rmmod…カーネルからモジュールを削除する
 →-f(--force)…強制削除(使用禁止)
 →-w(--wait)…使用中のモジュールを隔離し、使用されなくなるまで待つ
 →-s(--syslog)…エラーを標準出力ではなくsyslogに送る


modprobe・・・モジュール管理を行う
 →-C(--config)…/etc/modprobe.confや/etc/modeprobe.d/を無視する
 →-c(--showconfig)…設定ファイルの内容を表示し、終了する
 →-n(--dry-run)…モジュールの登録・削除以外の処理を行う。なにも操作しない。
 →-i(--ignore-install・--ignore-remove)…設定ファイルに書かれたinstall・removeを無視する
 →-q(--quiet)…存在しないモジュールが指定されても、エラーメッセージを表示しない
 →-f(--force)…強制ってことで良いと思う。
 →--force-vermagic…"version magic" が一致しないと文句を言う場合、"version magic" を無視する
 →--force-modversion…カーネルがインタフェースのバージョンの一致しないものがあると文句を言う場合、無視する
 →-l(list)…指定したワイルドカードに一致するモジュールの一覧を表示
 →-a(--all)…すべてのモジュールをロード
 →-t(--type)…-tで指定したディレクトリ名を含むモジュールだけを表示
 →-s(--syslog)…すべてのエラーメッセージをsyslogに送る
 →--set-version…カーネルバージョンを指定
 →--show-depends…依存関係を列挙する
 →-o(--name)…モジュール名の変更


depmod…modules.depとマップファイルを作成する
 →-b(--basedir)…モジュールが、/lib/modules以外の場所にあるとき、その場所を指定する。ただ、/lib/modulesの下にいずれ持ってこないとめんめ。
 →-e(--errsyms)…各モジュールの解決されていないシンボルを全て表示する
 →-f(--filesystems)…別のカーネルのmodules.depを作成したい場合、-fオプションでSystem.mapで指定する
 →-n(--dry-run)…modules.depに書き出さず、標準出力に出す。
 →-A(--quick)…処理を行う前に、モジュールが新しければ何もしない。更新されていれば処理を行う



kmod…必要なモジュールを自動でロードするデーモン



patch…オリジナルファイルに差分ファイルを適用する
 →-b(--backup)…バックアップファイルを作成
 →--backup-if-mismatch…差分ファイルがぴったり一致しない場合でバックアップ指定がない場合、バックアップファイルを作成する
 →--no-backup-if-mismatch…差分ファイルがぴったり一致しない場合でバックアップ指定がない場合、バックアップを作成しない
 →-B XX(--prefix=XX)…ファイル名にXXというプレフィックスがつけられる
 →-c(--context)…パッチファイルを通常のコンテキストdiffとして解釈する
 →-d dir(--directory=dir)…まずディレクトリに移動
 →-D define(--ifdef=define)…よく分からん
 →-dry-run…パッチを適用した結果を表示するが、実際には適用しない
 →-e(-ed)…edスクリプトとして解釈する
 →-E(--remove--empty-files)…パッチを当てた後の空ファイルを削除する
 →-f(--force)…強制適用
 →-F num(--fuzz=num)…曖昧度を指定する。defは2。
 →-i patchfile(--input patchfile)…パッチファイルを指定
 →-l(--ignore-whitespase)…空白関連の不一致をゆるく見る。行末空白も。その他の文字は完璧でないといけない。
 →-n(--normal)…パッチファイルをノーマルdiffとして解釈する
 →-N(--forwaod)…反転していると思われるパッチや、既に適用済みと思われるパッチを無視する
 →-o outfile(--outfile outfile)…ファイルにパッチを適用して置き換えるのではなく、出力をoutfileに送る
 →-pnum(--strip=num)…num分だけ、パッチファイルの中にあるパスを取り除いていく。
  ・-p0の場合:/usr/src/linux-2.6/hoge.c → /usr/src/linux-2.6/hoge.c
  ・-p1の場合:/usr/src/linux-2.6/hoge.c → usr/src/linux-2.6/hoge.c
  ・-p3の場合:/usr/src/linux-2.6/hoge.c → linux-2.6/hoge.c
  ・指定なしの場合:/usr/src/linux-2.6/hoge.c → hoge.c
 →-r rejectfile(--reject-file rejectfile)…却下された塊を、.rejではなく、指定したrejecfileに書き込む
 →-R(--reverse)…パッチファイルが、新旧が反転しているとみなす
 →-s(--silent|--quiet)…静かに動作する
 →-t…-fとは異なる無視をする
 →-T(--set-time)…パッチ適用後のファイル変更時刻とアクセス時刻を、コンテキストdiffヘッダのタイムスタンプに設定する
 →-V method(--version-control=method)…バックアップファイルを作成するのに、methodを使用する
  ・有効なmethod一覧
  ・exiting or nil…番号つきのバックアップがある場合、番号つきを。ない場合は簡易バックアップ
  ・numbered or t…バックアップに番号をつける。
  ・sample or never…簡易バックアップを作成する
 →--verbose…詳細出力
 →等。心が折れる。




make config…CUIで対話的に設定していく



make menuconfig…CUI上でメニュー形式でオプション項目を選択して設定できる



make xconfig…X上で設定できる



make gconfig…GNOME上で設定できる。



make modules_install…カーネルモジュールを適切なディレクトリにインストールする



make
 ・clean…不要なファイルを削除する
 ・mrproper….configやバックアップアップも含めて削除する
 ・distclean…mrproper + patchが作成したファイルも削除する
 ・defconfig….configを作成する
 ・all…すべてのビルドを実施する
 ・modules…動的なモジュールをビルドする
 ・rpm…カーネルビルド後にrpmパッケージを作成する
 ・rpm-pkg…ソースRPMパッケージを作成する
 ・bind-rpm…ビルド済みカーネルとモジュールのRPMを作成する
 ・deb-rpm…ビルド済みカーネルとモジュールのDebiaパッケージを作成する



sysctl…カーネルパラメータの変更・表示
 ・-a…利用できる値を表示(もう利用すんなだって。)
 ・-n…値だけ表示
 ・-N…名前だけ表示
 ・-e…不明なキーについてエラーを出さない
 ・-q…値のセットを標準出力を表示しない
 ・-w…設定を変更
 ・-p…指定したファイルから読み込んだ内容を、sysctl設定にロード



mkinitrd…ファイルシステムを圧縮した初期RAMディスク
 ・mkinitrd RAMディスクイメージファイル カーネルバージョン



mkinitramfs…cpioをアーカイブを圧縮した初期RAMディスク
 ・mkinitramfs -o RAMディスクイメージファイル カーネルバージョン


chkconfig
 ・--add…サービスの追加
 ・--level レベル サービス名 [on|off]…ランレベルを指定する
 ・--list…表示
 ・--del…サービスから削除



ntsysv…対話的にサービス起動設定をする



grub-install…ブートローダにGRUBをインストールする



sync…メモリバッファとディスクの同期



swapon…スワップを有効にする
 ・-s…現在のスワップを表示



mke2fs…ファイルシステム作成
 ・-b…バイト単位でサイズ指定
 ・-c…不良ブロックの調査
 ・-i…iノード数のバイト数を指定
 ・-j…ext3ファイルシステムを作成
 ・-m 領域(%)…rootユーザの領域を%で指定。



mkfs…ファイルシステム作成
 ・-t…ファイルシステムタイプ指定
 ・-c…不良ブロックをチェック



mkisofs…CD/DVDへ書き込みするファイルの作成
 ・-o…ISO9660/UDFイメージファイルを指定
 ・-J…Jolietフォーマット指定(MS系)
 ・-R-r…Rockidgeフォーマット
 ・-T…TRANS.TBLファイルを作成
 ・-udf…UDFイメージを作成する




dumpe2fs…ext2/ext3ファイルシステムの情報をダンプする
 ・-b…不良ブロックとして扱われるブロックを表示する
 ・-h…スーパブロックの情報だけを表示。
 


fsck…ファイルシステムのチェック
 ・-r…動作を逐次的(次々に)する
 ・-t…ファイルシステムを指定する
 ・-A…/etc/fstabに列記されているファイルシステムをチェックする
 ・-N…実際には処理せず、何が行われたかだけ表示する
 ・-R…-Aを指定しているときに、rootパーティションをチェックしない用にする。
 ・-T…起動時にタイトルを表示する
 ・-a…質問なしで自動的にファイルシステムを修復する
 ・-n…問題点を修復せず、問題点を書き出す。
 ・-r…対話的にファイルシステムを修復する
 ・

2009年8月12日水曜日

復習:覚えてなかったところを重点的に

swapの内容を確認する
 ・swapon -s
 ・cat /proc/swaps

次回起動時にファイルシステムチェックを行う
 ・shutdown -F

不良ブロックを検出
 ・badblocks

ログイン中のユーザにメッセージを表示するには
 ・wall ""
 ・shudown -k now ""

gunzipはパイプ不要
gzipはパイプが必要

iSTADYの復習

RIADの状態を表示する
 ・cat /proc/mdstat


予約ブロックの確認方法(あってるかどうかは不明)
 ・tune2fs -l /dev/hda1 | grep "Reserved block count"
 ・dumpe2fs /dev/hda1 | grep "Reserved block count"
 ・mke2fs -n /dev/hda1


再帰的な問い合わせを受け付けるホストを指定するオプション
 ・allow-recursion


現在マウントされているファイルシステムとマウントオプションを知る
 ・/etc/mtab
 ・/proc/mounts


カーネルのバージョンを調べるには
 ・/proc/version
 

初期RAMディスクを作成
 ・mkinitrd
 ・mkinitramfs

ストレージ管理コマンド

pvcreate…デバイスを物理ボリュームとして初期化する
pvdisplay…物理ボリュームの詳細な情報表示
pvmove…物理ボリュームに移動させることができる
pvremove…物理ボリュームを削除させることができる
pvscan…物理ボリュームの状態を簡潔に表示
pvs…物理ボリューム情報を出力する

vgcreate…ボリュームグループを作成する
 ・書式:vgcreate ボリュームグループ名 物理デバイスボリューム
 ・オプション:-s…エクステントのサイズを指定
vgchange…ボリュームグループの属性変更
vgdisplay…ボリュームグループの詳細な情報表示
vgextend…ボリュームグループを拡張
vgreduse…ボリュームグループ縮小
vgremove…ボリュームグループ削除
vgimport…ボリュームグループをインポートする
vgexport…ボリュームグループをエクスポート
vgmerge…2つのボリュームグループを削除する
vgrename…ボリュームグループの名前変更
vgscan…ボリュームグループを削除
vgs…ボリュームグループの情報を表示


lvcreate…論理ボリュームを作成する
 ・オプション:-L…サイズを指定
 ・オプション:-n…論理ボリューム名を指定
lvdisplay…論理ボリュームの詳細な表示
lvextend…論理ボリューム拡張
lvreduse…論理ボリューム縮小
lvremove…論理ボリューム削除
lvrename…論理ボリュームの名前変更
lvscan…論理ボリュームの状態を簡潔に表示・検索
lvs…論理ボリュームの情報を表示

rndc

namedを操作する

・stop…namedを指定
・refesh…ゾーンデータベースをリフレッシュ
・stats…統計情報を、/var/named/named.statsに書き出す
・status…namedのステータスを表示
・dumpdb…キャッシュの内容を出力する
・reload ドメイン名…指定したゾーンファイルを再度取得する

udevによるデバイス管理

デバイスファイル
 →デバイスを抽象化したファイル。大きく分けて2種類。
  →ブロックデバイス
   →バッファを持ち、ランダムアクセスが可能。
   →ls -l /dev したときにファイルタイプがdになる
  →キャラクタデバイス
   →バッファはなし。ランダムアクセスが可能。マウスとかキーボードとか。
   →ls -l /dev したときにファイルタイプがcになる


カーネルが認識しているデバイスを表示
 →/proc/devices


udev
 →ユーザ空間で動作するプロセス。ユーザ空間とカーネル空間は分離されているので
  カーネルに情報を聞きにいくことは出来ない。その為、sysfsを使用する。
  sysfsはカーネル内部情報をファイルシステムに投影する仕組みなので、
  udevもユーザ空間で動作しつつ、カーネルの情報を取得することができる。

 →udevdはsysfsの情報を元に、デバイスファイルを作成する
  →その際、参照される設定ファイル
  →/etc/udev/rules.d/
  →ファイル名の数字は、udevが若い方から適用する
  →ファイル内の内容
   →KERNEL…デバイス名の指定
   →GROUP…所有グループ
   →MODE…パーミッション
   →OPTION="last_rule"…他の条件にマッチしても、そのルールは適用しない
  →KERNELというデバイス名を認識した時、所有グループでパーミッションはMODEのデバイスファイルを作成せよ



sysfsがどのようにデバイスを扱っているかの情報を取得する
 →udevinfo
  →-a…指定したデバイスの上位デバイスについても表示する
  →-p…sysfs上のデバイスを指定する
  →-n…/dev以下のデバイスファイルをしてする
  →-q…表示する情報の種類を指定する
   →name・symlink・path・env・all
  

ファイルシステム系のコマンド等

ext2/ext3のファイルシステムを作成するには
 →mke2fs
 ・-b…バイト。
 ・-c…チェック。不良ブロックのチェックを行う
 ・-i…iノードのバイト数を指定
 ・-j…ジャーナリング。ext3を作成する
 ・-m…スーパユーザの予約領域。通常5㌫


ReiserFSを作成するには
 ・その前に特徴
  ・ジャーナリングFS・ディスク効率高・ファイル検索高速・ext3/ext2との互換性無し
  ・カーネルが対応している必要あり。
   ・確認方法
   ・modprobe reiserfs
   ・grep reiserfs /proc/filessystemsでreiserfsがあるかどうか
 →mkreiserfs デバイス名
 ・-l…ラベルを指定
 ・-j…ジャーナルを保存するファイルを指定
 ・-s…ジャーナルサイズをブロック数で指定。





mkfsによるファイルシステム作成
 ・いろんなファイルシステムを作成
  ・mkfs.ext2
  ・mkfs.ext3
  ・mkfs.xfs
  ・mkfs.reiserfs
  ・mkfs.vfat
  ・mkfs.minix
 ・-t タイプ…ファイルシステムを指定
 ・-c…不良ブロックを指定
 ・-V…詳細情報を出力
 ・




CD/DVDに書き込めるファイルシステムイメージを作成(これではCD/DVDは作成できないよ。)
 ・mkisofs
  ・-o ファイル名…ISO9660/UDFイメージファイルを指定する
  ・-J…Jolietフォーマット
  ・-R,-r…RockRidgeフォーマット
   ・パーミッションなどの属性を保持できる
  ・-udf…UDFイメージ



ファイルシステムのチェック
 ・fsck
  ・-r…対話的に修復
  ・-t タイプ…ファイルシステムの種類を選択
  ・-A…/etc/fstabに記述されたすべてをチェックする
  ・-N…見せ掛けだけやる



ext2ファイルシステムのチェック
 ・ext2
  ・-b ブロック…指定したスーパーブロックを使って復元
  ・-c…不良ブロックをチェック
  ・-f…ファイルシステムが状態がcleanでもチェックする
  ・-p…すべての不良ブロックを自動的に修復
  



ext2/ext3のファイルシステム管理
 ・tune2fs
  ・-c 回数…指定したマウント回数を超えたらファイルシステムのチェックを行う
  ・-C 回数…現在のマウント数を指定
  ・-i 間隔…ファイルシステムの間隔数を指定
  ・-j…ext2→ext3に変更
  ・-m 領域(%)…スーパユーザの領域のサイズを変更
  ・-L…ラベル名を変更





不良ブロックの検索
 ・badblocks
  ・-b…ブロックサイズを指定
  ・-o…結果を出力
  ・-w…書き込みモードでテスト(ファイルシステムが破壊されます。えっ?!)





ファイルシステムのデバッグを対話的に行うには
 ・debugfs
  ・-w…読み書き可能モードで開く
  ・-s ブロック番号…指定したブロックをスーパーブロックとして利用する
  ・cat ファイル名…指定したファイルのiノードを表示
  ・cd ディレクトリ…別ディレクトリに移動
  ・chroot ディレクトリ…ルートディレクトリを変更
  ・close…ファイルシステムを閉じる
  ・dump A B…Aのファイルの内容をBとして保存
  ・freei…ファイルのiノードを削除する
  ・ls…ファイルの一覧を表示
  ・open デバイス…ファイルシステム開く
  ・pwd…カレントディレクトリを表示
  ・rm ファイル名…ファイルを削除する
  ・rmdir ディレクトリ名…ディレクトリを削除する
  ・stat ファイル名…iノードの内容を表示
  ・quit…終了



ReiserFSファイルシステムの管理
 ・reiserfstune
  ・-l…ラベルの設定



ReiserfsFSの修復
 ・debugureiserfs
 

xfsのパラメータ変更
 ・xfs_admin
  ・-u…UUIDを表示する
  ・-l…ラベルを表示
  ・-L…ラベルを設定
  ・-U UUID…UUIDの設定
 

xfsのファイルシステム情報を表示
 ・xfs_info


オートマウント
 ・サービスをスタート
  ・service autofs start
 ・/etc/auto.master
  ・書式
  ・マウントベース マップファイル オプション(必須でない)
  ・例
  ・/mnt/auto /etc/auto.cdrom --timeout=60
   ・/mnt/autoの下にマウントポイントが作成される
   ・/etc/auto.cdromは自分で作る
   ・--timeout=60は、60秒アクセスがない場合、アンマウントする。
  ・設定を反映させるには、autofsを再起動
   ・service autofs restart
 ・マップファイル
  ・ファイル名は自由
  ・書式
  ・作成するディレクトリ マウントオプション(必須でない) デバイスファイル名
  ・例
  ・cdrom -fstype=iso9660,ro :/dev/cdrom
   ・デバイスファイル名の前の:は必要。
  ・サービス再起動は不要
 





badblocks

2009年8月11日火曜日

LPIC201

復習

・allow-recursion
 →指定したホスト・IPからの再帰的問い合わせを許可する

・初期RAM作成
 →mkinitrd 初期ディスクファイル カーネルバージョン
  →ファイルシステムを圧縮した形
 →mkinitramfs -o 初期ディスクファイル カーネルバージョン
  →cpio形式で初期RAMディスクを作成している

・バイナリ実行禁止マウント
 →noexec
  →-oオプションをつけて
 →ループバックマウント
  →loop

・新しいバージョンで追加された機能だけを設定するには
 →make oldconfig

・物理ボリュームグループを作成するには
 →pvcreate

・論理ボリュームを作成するには
 →lvcreate

・patchファイルの適用方法
 →patch オプション < パッチファイル
 →patch オプション パッチファイル
 ・例
 →patch -p1 < patch-2.6
 →bzip2 -dc patch-2.6.bz2 | patch -p1
 →gzip -dc patch-2.6.gz | patch -p1
 →cat patch-2.6 | patch -p1

・initの変わりに、/bin/shで起動するには
 →boot:カーネルイメージ名 init=/bin/sh

hdparm

・hdparm
 ・ハードディスクの詳細を表示
 ・一般的な使い方
  ・hdparm デバイスパス
 ・詳細情報を表示
  ・hdparm -i デバイスパス
 ・32ビットI/Oを有効にする
  ・hdparm -c数字 デバイスパス
 ・読み込み速度を計測する
  ・hdparm -tT デバイスパス

LVM

LinuxのLVM
LVM…論理ボリューム管理

LVMのポイントから
 参考図:http://h50146.www5.hp.com/products/software/oe/hpux/developer/column/beg_integrity_10/

・1台のハードディスク、1つのパーティションを物理ボリュームと呼ぶ
 ・ボリューム…管理上の単位

・物理ボリュームは、一定のサイズの物理エクステントから構成される
 ・エクステント…論理的に連続した記憶領域

・1つ以上の物理ボリュームから、ボリュームグループが構成される。

・ボリュームグループ内で、物理エクステントから論理ボリュームが構成される

・論理ボリュームは、従来のパーティションと同様に、ブロックデバイスとして扱うことができる

・論理ボリュームは、複数のディスクにまたがって作成できる

・ボリュームグループも後からサイズを変更することが出来る

LINUXでRAID

LINUXでRAID。


・LINUXでRAIDをするには、パーティションタイプをRAIDにしておく必要がある

・RAIDの状態を確認するには、/proc/mdstat

・RAIDの状態を表示するには mdadm --query デバイスパス

・RAIDの状態をより詳しく表示するには mdadm --detail /dev/md0

・RAIDで障害が発生した場合、デバイスに不良マークをつける
 mdadm --manage RAIDデバイスパス -f 不良なデバイスパス
 ・自動で、予備デバイスに切り替わる

・構成デバイスをRAIDから削除するには
 mdadm --manage RAIDデバイスパス -f 削除するデバイス

・予備デバイスを追加
 mdadm --manage RAIDデバイスパス -a 追加するデバイスパス

・RAIDを自動認識させる
 echo "DEVICE partitions" >> /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

雑多すぎる事

/proc/cmdline
…起動時のカーネルオプションが見れる

1:3:initdefault

tar tf /dev/なんとか

namedコマンド

namedコマンド

-p…ポート
-b|-c…設定ファイル指定。defでは/etc/named/named.confってmanには書いてある。
-r…ネームサーバの再帰的な問い合わせを行わない
-u…ユーザ指定
-g…グループ指定
-t…chrootするディレクトリ
-w…ワーキングディレクトリ

/etc/mtab

http://itpro.nikkeibp.co.jp/article/Keyword/20070615/274888/

mtab


マウントしている情報が書かれている。
ファイルの場所は/etc/mtab


これが存在している理由は、
fstabだど手動でマウントされたデバイスはわかんないから。


umountはこのファイルを参照して
アンマウントしている。

TCPWrapper host.allow

書式

ワイルドカード
ALL…全てのホスト・IPアドレス
A EXCEPT B…B以外のA
LOCAL…「.」を含まないクライアントリスト
UNKNOWN…不明なユーザ、IPアドレスが不明なホスト、不明なホスト
KNOWN …ホスト名とIPアドレスが分かっているホスト名
EXCEPT "A EXCEPT B"の形で記述する事によって、"A"の例外条件"B"を設定する事ができる。

DNSの認証キー関連

ゾーンデータを認証する為の鍵作成コマンド
・dnssec-keygen


ゾーンファイルに署名する
・dnsnec-signzone


確認方法
・dig + dnsec

LILOをなめるだけ、なめておく。

/etc/lilo.conf設定ファイルのパラメータの一覧
グローバル
・boot=デバイス … ブートセクタを含むデバイス
・message=ファイル … ブートプロンプト前に表示するメッセージが格納されているファイル
・timeout=時間 … プロンプト時の入力待ち時間
・prompt … ブート時にプロンプトを表示して入力を要求
・defaluts=ラベル … デフォルトで起動するカーネルラベル
・map=マップファイル … マップファイル?
イメージごとのオプション
・image=パス … カーネルのイメージ
・append=パラメータ … 起動時にカーネルに渡すパラメータ
・password=パスワード … イメージをロードする際のパスワード
・label=ラベル … ブートイメージのラベル
・initrd…パス … 初期RAMディスクのパス
・root=デバイス … ルートファイルシステムのデバイス名
・read-olny … 読み込み専用





liloコマンド
-C … 設定ファイル指定(デフォルトで/etc/lilo.conf)
-R パラメータ … 次回起動時に適用れるパラメータを指定
-m … マップファイルを指定する
-q … 現在のマップファイルの内容を表示する
-t … テストのみ実行する
-u … MBRからLILOを削除する

ルートネームサーバの一覧を最新にする

dig @m.rootservers.net. ns > named.hints

inittabの設定をすぐに反映させる

telinit q



そのたの行動。


telinit (0|1|2|3|4|5|6)
指定したランレベルに変更



telinit s
シングルユーザモードに変更

リソースレコード

SOAレコード
・ゾーンの基本情報を記述
・@は「.」に置き換える


NSレコード
・DNSサーバを指定


MXレコード
・メールサーバの指定
・プリファレンス値なるものがある。優先度を表す。小さいほど優先度が高い
・正引きファイルにしかない


Aレコード
・ホスト名に対するIPアドレスの指定
・正引きファイルにしかない


CNAMEレコード
・ホスト名の別名を記述
・正引きファイルにしかない


PTRレコード
・IPアドレスに対するホスト名の指定
・逆引きファイルにしかない

カーネルパラメータの確認方法

sysctl -w カーネルパラメータ=設定値





もしくは…






echo 設定値 > /proc/sys/カーネルパラメータ







実際にやってみる。#影響がない範囲で。




つつくのは、kernel.panicという値。
やばそうな値ですが、kernelpanicになったとき、値が0以上の数値であれば、その秒数後に
再起動するというもの。
通常のPCであれば、特に問題ないでしょう。#元に戻しますので。




では。現在の値を調べて見ます。
sysctl -a | grep panic
kernel.panic = 0


defでは0になっています。
では、sysctlで変更してみます。






sysctl -w kernel.panic=60





確認
sysctl -a | grep panic
kernel.panic = 60




変わりました。



では、echoの方法で書き戻してみます。






echo 0 > /proc/sys/kernel/panic




確認
kernel.panic = 0


元に戻った。

umount

umount


-f…強制アンマウント。forceの頭文字の気がする
-v…詳細モード
-n…/etc/mtabに書き込まない
-r…アンマウントに失敗した際、リードオンリーでリマウント。
-a…/etc/mtabに書かれているもの全てをアンマウント
-t…ファイルシステム指定でアンマウント

2009年8月10日月曜日

DNS設定ファイル戦記

これは、BINDをインストールしてから、
DNSで名前解決を行えるまでの、長い戦記である。。。

環境
OS:WindowsXp
出番:milk.cow.localの名前解決を実行する端末

環境
OS:?
出番:以前からあったDNS。なので、これから作成するDNSの上位にあたる。
IPアドレス:192.168.100.1

環境
OS:CentOS5
出番:これから作成するDNSサーバ
IPアドレス:192.168.94.128
ホスト名:cheese.cow.local

環境
OS:CentOS5
出番:名前解決されるPC
IPアドレス:192.168.100.51
ホスト名:milk.cow.local
 ※"cow.local"等のドメインをつける必要あり!!!
 ※Windowからnslookupをする際、ドメインがないと、Windowsが勝手に自分のドメインをつける。
 ※これで2時間ぐらいはまった。// はまりすぎ…


全て同じネットワークに居ます。
BINDはインストールして、起動している事と仮定して話を進める。




1./etc/named.cofを(無ければ)作成
-------------中身----------------------
options {
directory "/var/named"; ← ここがワーキングディレクトリ
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; localnets; }; ←自分か、同じネットワークの人以外受け付けない
query-source port 53;
forwarders{
192.168.100.1; ← 自機DNSで対応できない場合の転送先DNSのIPアドレス。
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver { ← キャッシュサーバの際の設定。見て回った感じ、なくても良い。でもみんな書いているけど、なぜ書いてあるかは触れてない。そこ重要じゃない?
match-clients { localnets; };
match-destinations { localnets; };
recursion yes;
include "named.rfc1912.zones";
include "named.milk.zone";
};
view "internal" { ← "internal"は適当な文字列でよい。
match-clients { localnets; };
match-destinations { localnets; };
recursion yes;           ←ここはyesでないと、自機DNSで名前解決できない場合、他のDNSに聞きにいけない。
include "named.rfc1912.zones";
include "named.milk.zone";
};

※named.caching-nameserver.confはnamed.confがあれば不要。






2.ファイルの移動。
mv /etc/named.rfc1912.zones /var/named/named.rfc1912.zones





3.ファイルの作成
# vi named.milk.zone

zone "milk.cow.local" {
type master;
file "milk.cow.local.db";
};
zone "100.168.192.in-addr.arpa" {
type master;
file "100.168.192.in-addr.arpa.db";
};





4.ファイルを作成
# vi milk.cow.local.db

$TTL 86400
@ IN SOA cheese.cow.local root.cheese.cow.local(
2009051101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS cheese.cow.local
milk.cow.local. IN A 192.168.100.51





5.ファイルの作成
# vi 100.168.192.in-addr.arpa.db


$TTL 86400
@ IN SOA cheese.cow.local root.cheese.cow.local (
2009051101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ; Minimum
)

IN NS cheese.cow.local.
51 IN PTR milk.cow.local.





6.ファイルのグループを変更
chgrp named /var/named/named.rfc1912.zones
chgrp named /var/named/named.milk.zone
chgrp named /var/named/milk.cow.local.db
chgrp named /var/named/100.168.192.in-addr.arpa.db










7.DNS再起動
service named restart







8.Windowsから確認
コマンドプロンプトを立ち上げ。


C:>nslookup
*** Can't find server name for address 192.168.94.128: Non-existent domain
*** Default servers are not available
Default Server: UnKnown
Address: 192.168.94.128

> milk.cow.local
Server: UnKnown
Address: 192.168.94.128

Name: milk.cow.local
Address: 192.168.100.51

> 192.168.100.51
Server: UnKnown
Address: 192.168.94.128

Name: milk.cow.local
Address: 192.168.100.51







こんな感じ

うそんこの記録

/etc/caching-nameserver.conf の内部について知る。
#勉強しても頭から抜けていく。
#うそんこかもしれないから、参考にしないように



//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options { ← 詳細設定
listen-on port 53 { 127.0.0.1; }; ←全てのインターフェイスで53番待ちうけ
listen-on-v6 port 53 { ::1; }; ←IPv6使用時も53番
directory "/var/named"; ←ゾーンファイルを格納するディレクトリ
dump-file "/var/named/data/cache_dump.db"; ←namedがCTRL+C(SIGINTシグナル)を受け取った時、データベースのデータ記録をファイルにするんだけど、
そのときのファイルのパス
statistics-file "/var/named/data/named_stats.txt"; ←不正命令のシグナル(SIGILL)を受け取った際、統計を追加書き込みするファイル。統計ってなんの統計?
memstatistics-file "/var/named/data/named_mem_stats.txt"; ←deallocate-on-exit が yes になっている場合に、サーバが終了時にメモリ使用統計を書き出すファイルへのパス名

// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;

allow-query { localhost; }; ←アクセス制御。今は自分だけ。
};
logging { ← サーバに何のログを残すのか、ログメッセージを送るのか指定
channel default_debug { ←channelは出力情報やフォーマット等を結びつける。default_debugはデフォルトのログの出力設定
file "data/named.run"; ←出力ファイル
severity dynamic; ←サーバの現在のログレベルでログに書く
};
};
view localhost_resolver { ←キャッシュサーバ専用の設定
match-clients { localhost; }; ←問い合わせに答えるホスト
match-destinations { localhost; }; ←適用されるデスティネーションアドレスを指定。適用される行き先?よく分からん。
recursion yes; ←再起処理をする。
include "/etc/named.rfc1912.zones"; ←指定したファイルを挿入。
};

2009年8月7日金曜日

iStadyの結果は散々

復習復習。。。

make mrproper … カーネルソースツリーを初期化(コンフィギュレーションファイルも削除)
make oldconfig … 現在のカーネルコンフィギュレーションに新しい操作を反映できる
make dep … ソースファイルとヘッダファイルの依存関係を確認するコマンド



ルートユーザの予約確保領域を変更 … この辺弱い。
tune2fs -m 0 /dev/sda5



ロードされているモジュールを確認
lsmod
cat /proc/mouduls




tar コマンド
f … デバイス指定(file)
t … アーカイブ内から一覧を表示(list)




mount コマンド :リマウントするには?
mount -o remount /dev/ 
 →ユーザマウントとかの取り決めも変えられる?




pvcreate コマンド:デバイスを物理ディスクを作成する
pvcreate /dev/sdb1




パケット転送を有効にする
echo 1 > /proc/sys/net/ipv4/ip_forward




ディスクバッファしてあるデータをディスクに書き込む
sync




スワップを確認
swapon -s
cat /proc/swaps





スワップ作成
mkswap





カーネルモジュールを適切に配置するには
make modules_install





サービスの自動起動
chkconfig(RH)
update-rc.d(Debian)
insserv(suse)





モジュールの依存関係の更新
depmod




ボリュームグループを作成するには
vgcreate -s 32m ボリューム名 物理ボリュームドライブ … これはやっとかないと




/etc/hosts.allowの調査




無線Lanのインターフェイス表示
iwconfig




ランレベルのディレクトリ
/etc/rc.d/rc[0-5].d




GRUBシェル?





カーネルにパッチ適用する
パッチの適用方法






モジュールの依存関係情報
modules.dep
sは居る





論理ボリューム作成








udevの設定
/etc/udev/udev.conf
/etc/udev/rules.d







カーネルコンフィギュレーションファイル名
.config






CD-Rに書き込むコマンド
mkisofs





ファイルシステム作成
mke2fs -b サイズ -r ルートのサイズ(%)









複数のパッチを適用するには
patch_kernel

/usr.src/linuxの下

arch…アーキテクチャに依存したコード
config…目的別.config
cryto…暗号化処理関数
dirvers…各種デバイスドライバ
fs…仮想ファイルシステムと各種ファイルシステム
include…C言語のインクルードファイル
init…初期化コード
ipc…SystemV互換性プロセス間通信関連(共有メモリ,セマフォ)
kernel…主要なカーネル機能
lib…各種モジュール機能
mm…メモリ管理機能
net…各種ネットワークプロトコル関連
scripts…カーネル作成支援スクリプト
Documentation…各種ドキュメント

dig

dig
より詳細な情報をDNSサーバから取得できるコマンド

# dig www.google.com

; <<>> DiG 9.3.4-P1 <<>> www.google.com
;; global options: printcmd 
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57548
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 6, ADDITIONAL: 6

;; QUESTION SECTION:
;www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 5 IN CNAME www.l.google.com.
www.l.google.com. 5 IN A 66.249.89.99
www.l.google.com. 5 IN A 66.249.89.104
www.l.google.com. 5 IN A 66.249.89.147

;; AUTHORITY SECTION:
l.google.com. 5 IN NS a.l.google.com.
l.google.com. 5 IN NS e.l.google.com.
l.google.com. 5 IN NS b.l.google.com.
l.google.com. 5 IN NS d.l.google.com.
l.google.com. 5 IN NS g.l.google.com.
l.google.com. 5 IN NS f.l.google.com.

;; ADDITIONAL SECTION:
a.l.google.com. 5 IN A 74.125.53.9
b.l.google.com. 5 IN A 74.125.45.9
d.l.google.com. 5 IN A 74.125.77.9
e.l.google.com. 5 IN A 209.85.137.9
f.l.google.com. 5 IN A 72.14.203.9
g.l.google.com. 5 IN A 74.125.95.9

;; Query time: 9 msec
;; SERVER: 192.168.94.2#53(192.168.94.2)
;; WHEN: Wed Aug 5 06:19:39 2009
;; MSG SIZE rcvd: 292




status: NOERROR
 →正常な応答
 →正常でない場合の応答
  →status: SERVFAIL
  →service fail?
 →問い合わせたドメインが存在しない
  →status: NXDOMAIN


flags: qr rd ra;
 →応答がどういう意味を持つのかを記すフラグ
 →qr…問い合わせに対する回答
 →aa…権威ある回答
 →rd…再起検索が可能
 →ra…再起検索を希望


QUESTION SECTION
 →問い合わせ内容

ANSWER SECTION
 →問い合わせに対する回答

AUTHORITY SECTION
 →問い合わせ先に権威がある場合表示される

ADDITIONAL SECTION
 →回答したホストIP等の付属的な情報

;; Query time: 9 msec
 →検索に要した時間

;; SERVER: 192.168.94.2#53(192.168.94.2)
 →回答したホストIP

;; WHEN: Wed Aug 5 06:19:39 2009
 →問い合わせ日時

;; MSG SIZE rcvd: 292
 →メッセージサイズ

host

DNSサーバを使ってホスト名やドメイン名に関する情報を表示する。



defで
host ホスト名 → IPアドレスを表示(正引き)
host IPアドレス → ホスト名表示(逆引き)





-tを付けると、DNSのレコードを表示できる。

例:
host -t レコード ホスト名

参考:http://www.atmarkit.co.jp/fnetwork/rensai/dns01/dns-record.html

レコードの種類

SOA…ゾーン(ドメイン)情報を記載する。

・ドメインのDNSサーバ名
・ドメイン管理者のメール・アドレス
・シリアル番号―ゾーン転送時に情報が更新されているかどうか判断に用いられる(本連載の第3回参照)。数値が大きくなっていれば更新済みという意味だ。番号は任意だが、管理しやすいように通常は「年月日+連番」などの書式が多く用いられている
・更新間隔(refresh)―このゾーン情報のゾーン転送間隔時間を秒で指定する
・転送再試行時間(retry)―ゾーン転送に失敗した場合の再試行までの猶予時間を秒で指定する
・レコード有効時間(expire)―ゾーン情報を最新と確認できない場合の有効時間を秒で指定する
・キャッシュ有効時間(TTL)―このゾーン情報をキャッシュする場合の有効時間を秒で指定する 
NS … ドメインのDNSサーバ名を指定する
A … ホストのIPアドレス
PTR … IPアドレスに対するホスト名
CNAME … ホスト名の別名
MX … ドメインのメール・サーバ名
HINFO … ホストの追加情報。ホストのハードウェア・ソフトウェア(OS)情報を記述する
WKS … ホストで実行されているサービス情報(Well Known Services)
TXT … ホストへのテキスト情報

nslookup

nslookup
名前解決を行う。


# nslookup www.google.com
Server: 192.168.1.2    ←DNSのホスト名(ホスト名がない場合IPアドレス)
Address: 192.168.1.2#53   ←DNSのIPアドレス#53ポート

Non-authoritative answer:  ←権威のない回答:キャッシュサーバの回答
www.google.com canonical name = www.l.google.com.  ←canonical name:正確な名前
Name: www.l.google.com
Address: 66.249.89.104
Name: www.l.google.com
Address: 66.249.89.147
Name: www.l.google.com
Address: 66.249.89.99

DNSの基本

www.example.com

ホスト名:www.
ドメイン名:example.com
完全修飾ドメイン:www.example.com


自分の管轄する範囲について、他のDNSサーバに返答するDNSサーバ…ゾーンサーバ
名前解決をする為に、ゾーンサーバに問い合わせたり、名前解決のキャッシュを保持するDNSサーバ…キャッシュサーバ



ゾーン
DNSサーバが管理するドメインの範囲。
ゾーンを管理できる権限を持っていることを、権威を持つという。
下位のDNSサーバに対してゾーン管理を移す事を委譲という。




ゾーン転送
マスターDNSサーバから、スレーブDNSサーバにゾーン情報をコピーする事。





DNSに関するコマンド
nslookup,host,dig

初期RAMディスク

初期RAMディスクのお仕事。

・まず、用意しておいた初期RAMディスクをメモリに展開(これが暫定的なルートファイルシステムとなる)
・初期RAMディスク上でカーネル起動
・ルートファイルシステムをマウントできる


という流れ。
よく出来てますねぇ。すばらすぃ。




初期RAMディスクは2種類あります。
・inited
・initramfs(最近)


初期RAMディスクの作成方法
mkinitrd RAMディスクイメージファイル カーネルバージョン
mkinitramfs -o RAMディスクイメージファイル カーネルバージョン




作って展開。
#cetosはinitrdが入っていたのでそちらで挑戦。
#kernelのバージョンは2.6.30

#初期RAMディスクの作成
mkinitrd initrd-2.6.30.img 2.6.30


#展開
#適当にディレクトリを作って、その中でやること。
gunzip initrd-2.6.30.img
cat initrd-2.6.30.img | cpio -id

#確認
ls

wc

Word Count コマンド


# wc boot.log yum.log
14 126 1190 boot.log
11 77 592 yum.log
25 203 1782 合計
#

バイト数,空白で区切られた単語数,行数 ファイル名

2009年8月6日木曜日

/sbin/ntsysv

CUI環境だと

サービスの起動の設定はchkconfigだと思っていたが

ntsysvコマンドでもCUI環境でGUIっぽい表示されるので
非常に操作性があがるのではないだろうか。



すばらしい

やりたい事とか・kernelのコンパイルとか

とかとか十勝。

カーネルのコンパイル・インストールに挑戦。



1.カーネルソースをダウンロード
 →ここから:http://www.kernel.org/pub/linux/kernel/
 →今回はlinux-2.6.30.4.tar.gzを落としてきました。
 →落としてきたtarを/usr/srcに移動
  →補足:/homeに適当なディレクトリを作成してやるべき。今回はたまたま/usr/srcが空いていた
 →解凍:tar zxf linux-2.6.30.4.tar.gz
 →展開したディレクトリに入る


2.カーネルコンフィギュレーションを設定
 →展開したディレクトリに入った状態でスタート。
 →エラー
make menuconfig
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] エラー 1
make: *** [menuconfig] エラー 2
 →yum install ncurses-devel
 →make menuconfig
  →内容はの精査はまた今度ということで。
  →今回はそのままexitして、.configを作ってもらいました。ヤター!!

 
3.カーネル・カーネルモジュールのコンパイル
 →make


4.カーネル・カーネルモジュールのインストール
 →make modules_install

5.再起動

6.起動画面で、新しいカーネルのバージョンを選択

7.uname -rでバージョンを確認




あっさり出来た。
嬉しい反面。

rsyncコマンド

同期をするのに便利なコマンド。
サーバの冗長化に使える!!!!



標準的な使い方
例:/hogeディレクトリの中身を/piyoディレクトリに同期する。
rsync -aul --delete /hoge/ /piyo

a…属性を保ったままコピー
u…変更追加があったファイルのみコピー(差分なので早い!!)
l…シンボリックリンクのそのままコピー。





ネットワーク越しのサーバに同期
例:/hogeディレクトリの中身を192.168.1.10の/piyoに同期する
rsync -auz -e ssh /hoge/ 192.168.1.10:/piyo

z…圧縮。ネットワークを使用するので、データ量は圧縮
-e ssh…sshを使用してネットワーク同期する。










同期元でファイルが削除された時、同期先にコピーされていたファイルを削除するには?
--deleteオプションをつける。

→ファイルは消されちゃうので、注意して使用してください。

ddコマンド

ハードディスク毎のバックアップなら、オマカセアレィ!!!




例:/dev/sdaを丸ごと、/dev/sdbにコピー
dd if=/dev/sda of=/dev/sdb

if=入力ファイル。if文じゃないよ。input fileだと思うよ
of=出力ファイル。of。outputだと思うよ。






バックアップから戻すには





逆にするだけでよいかと。

cpio

ファイルだけのバックアップなら、こいつにおまかせあれぃ。



ls | cpio -o > /tmp/hoge.cpio




展開するには…




cpio -it < /tmp/hoge.cpio

バックアップ(Linux)

・バックアップの種類と特徴
バックアップの種類は完全バックアップ・差分バックアップ・増分バックアップがある

用意しなければならないバックアップメディアの容量(容量多>容量少)
完全バックアップ > 差分バックアップ > 増分バックアップ

速度 (速>遅)
増分バックアップ > 差分バックアップ > 完全バックアップ

復元方法
完全バックアップ…1つのバックアップファイルでよい
差分バックアップ…1つのフルバックアップと最新バックアップが1つ
増分バックアップ…全部の増分バックアップ


実現方法
ファイル毎→cpio
ディレクトリ毎→tar
ファイルシステム毎→dump
ディスク毎→dd

tarコマンド

tarコマンドは非常に優秀



~.gz(もしくはtgz)がついているファイルを展開する場合は、引数にzをつける

例:hogehoge.tar.gzを展開する
tar zxf hogehoge.tar.gz





~.bz2がついているファイルを展開する場合は、引数にjをつける

例:hogehoge.tar.bz2を展開する
tar jxf hogehoge.tar.gz






圧縮方法 #いつもすぐにわすれちゃうんだよなぁ…

例:workディレクトリを丸ごと圧縮
tar zcf 作成するファイル名 圧縮するフォルダ

wallコマンド

ログイン中のユーザにメッセージを流す事ができる



wall "hogehoge"



大きなビープー音と共にメッセージが表示されます。





shutdown -k now "hogehoge" でも同様にできます。





大きなビープー音と共に…

tracepath

trancepath
 …traces path to a network host discovering MTU along this path
  →経路上からMTUを調べるのに使用するのかしら。




# tracepath google.com
1: 192.168.1.10 (192.168.1.10) 3.058ms pmtu 1500
1: 192.168.1.1 (192.168.1.1) 1.911ms
2: yx-in-f100.google.com (74.125.45.100) asymm 1 8.021ms reached
Resume: pmtu 1500 hops 2 back 1
#


一行目が自分のIPアドレスです(もちろん書き換えてます。)
3.058msは応答速度
pmtuは経路上で見つかったMTUか?

二行目はゲートウェイ
応答速度は、1.911ms
asymmは異なる経路から帰ってきたことを示す
reachedは接続が完了したとかそういう意味みたい。

三行目は目的のサーバ

ネットワークの疎通が!!!!!!!!!!!!!

(((((((( ;゚Д゚))))))))ガクガクブルブルガタガタブルブル



1.落ち着きます



2.LANケーブルが正常に接続されているか確認します。
 →あ…、抜けてた…
  →よくあります。



3.pingで疎通確認を行う
 →IPアドレス
 →必要があればホスト名
   →DNSが原因であるかも知れないから
  →応答が無ければ、DNS稼動確認
  →DNS稼動していれば、/etc/resolv.conf
 →LAN内は可能であっても、インターネットに接続できない場合
  →GWのIPアドレスの確認
  →ルータに問題はないか確認



4.routeコマンドで経路の確認
 →GWは間違っていないか
 →間違ったルートを設定していないか



5.traceroute・trancepathで経路を確認

Linuxのネットワークファイル

/etc/hostname
 →ホスト名を記述

/etc/hosts
 →ホスト名とIPアドレスとの対応が記述

/etc/networks
 →ネットワーク名とネットワークアドレスの対応が記述

/etc/nsswitch.conf
 →名前解決の順番を記述
 →files…/etc/hostsファイルを使用
 →ldap…ldapサーバに問い合わせる
 →dns…dnsサーバに問い合わせる

/etc/resolv.conf
 →問い合わせ先のDNSサーバやドメイン名を記述
 →searchはドメイン名が省略されている時に、補完するドメイン名を記述する
 →domainは自分の端末が属するドメイン名を記述する。
  →search行かdomain行をいづれか指定する
  →両方指定した場合、下に書いたほうが優先させる
 → nameserverはDNSのIPアドレスを記述する



/etc/sysconfig/network
 →ネットワーク機能の使用・ホスト名・GWアドレスを記述



/etc/sysconfig/network-scripts/ifcfg-eth0
 →インターフェイスの設定情報
 →インターフェイス毎にある

無線ネットワーク (Linuxだよ)

無線ネットワーク。
#Linuxで無線なんて使ったことがない…。



無線の規格
  IEEE802.11a…伝送速度 54Mbps
旧 IEEE802.11b…伝送速度 11Mbps
↓ IEEE802.11g…伝送速度 54Mbps
新 IEEE802.11n…伝送速度 126/130Mbps



無線のセキュリティ
WEP…標準だが、脆弱性がある
WPA…新しいセキュリティ規格
 WPA-TKIP < セキュリティ強度 < WPA-AES


アクセスポイント識別子
32文字からなるSSIDをアクセスポイントと端末に設定し、
マッチしないと通信を行わない仕組み。
でも、どこのアクセスポイントでも接続できるanyがあるのでセキュリティが低い。

ESSIDは複数のアクセスポイントがあっても接続できるように
SSIDを拡張したもの。



無線LANインターフェイス
wlanN
(N>=0)



無線LANインターフェイス
iwconfig



ESSIDの設定方法
iwconfig wlan0 essid "kokko"



WEPキーの設定方法
iwconfig wlan0 key s:kokko
nc…ポートスキャンだったり、通信状態を確認できる

v … 詳細な。
z … ポートスキャンをする
u … UDPポートも(できなかったんだけどなぁ・・・?)

# nc -vz 192.168.1.10 1-1000
nc: connect to 192.168.1.10 port 1 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 2 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 3 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 4 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 5 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 6 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 7 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 8 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 9 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 10 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 11 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 12 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 13 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 14 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 15 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 16 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 17 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 18 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 19 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 21 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 22 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 24 (tcp) failed: Connection refused
Connection to 192.168.1.10 25 port [tcp/smtp] succeeded!
nc: connect to 192.168.1.10 port 26 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 27 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 28 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 29 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 30 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 31 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 32 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 33 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 34 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 35 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 36 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 37 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 38 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 39 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 40 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 41 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 42 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 43 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 44 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 45 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 46 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 47 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 48 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 49 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 50 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 51 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 52 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 53 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 54 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 55 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 56 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 57 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 58 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 59 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 60 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 61 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 62 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 63 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 64 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 65 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 66 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 67 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 68 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 69 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 70 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 71 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 72 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 73 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 74 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 75 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 76 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 77 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 78 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 79 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 80 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 81 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 82 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 83 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 84 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 85 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 86 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 87 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 88 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 89 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 90 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 91 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 92 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 93 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 94 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 95 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 96 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 97 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 98 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 99 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 100 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 101 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 102 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 103 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 104 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 105 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 106 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 107 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 108 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 109 (tcp) failed: Connection refused
Connection to 192.168.1.10 110 port [tcp/pop3] succeeded!
nc: connect to 192.168.1.10 port 111 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 112 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 113 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 114 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 115 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 116 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 117 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 118 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 119 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 120 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 121 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 122 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 123 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 124 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 125 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 126 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 127 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 128 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 129 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 130 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 131 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 132 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 133 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 134 (tcp) failed: Connection refused
Connection to 192.168.1.10 135 port [tcp/epmap] succeeded!
nc: connect to 192.168.1.10 port 136 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 137 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 138 (tcp) failed: Connection refused
Connection to 192.168.1.10 139 port [tcp/netbios-ssn] succeeded!
nc: connect to 192.168.1.10 port 140 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 141 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 142 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 143 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 144 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 145 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 146 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 147 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 148 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 149 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 150 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 151 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 152 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 153 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 154 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 155 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 156 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 157 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 158 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 159 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 160 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 161 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 162 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 163 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 164 (tcp) failed: Connection refused
nc: connect to 192.168.1.10 port 165 (tcp) failed: Connection refused


おほほおぉ…
他のパソコンの空いてているポートまるわかりですかぁ…

netstat

netstat -l
 →接続待ち状態のソケットを表示

# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost.localdomain:ipp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
udp 0 0 *:bootpc *:*
udp 0 0 *:ipp *:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 4150 /var/run/cups/cups.sock


tcp 0 0 localhost.localdomain:ipp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
ここから、印刷とSSHサーバが稼動していることが分かる。
 →ippはcupsが開いている。





netstat -i# netstat -i
 →インターフェイス毎の情報を表示する

Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 63719 0 0 0 34413 0 0 0 BMRU
lo 16436 0 0 0 0 0 0 0 0 0 LRU

Iface … インターフェイス名
MTU … インターフェイスのMTU値。MTU…一回に送信できる最大値
Met … メトリック数。メトリック…経路制御の基準となるネットワークコスト。
RX-OK … 正常パケット数(受信)
RX-ERR … エラーパケット数(受信)
RX-DRP … 破棄パケット数(受信)
RX-OVR … オーバーロードパケット数(受信)
TX-OK … 正常パケット数(送信)
TX-ERR … エラーパケット数(送信)
TX-DRP … 破棄パケット数(送信)
TX-OVR … オーバーロードパケット数(送信)
Flg … フラグ
 →B…ブロードキャスト
 →L…ループバックデバイス
 →R…動作中
→U…使用可能






netstat -r
ルーティングテーブルの表示(routeコマンドと同じ表示)

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

Destination … 宛て先IPアドレス
Gateway … GWIPアドレス
Genmask … GWのネットマスク
Flags … フラグ
 →U…ルートがup状態 
 →G…ゲートウェイのルート
 →H…完全ホスト指定アドレス
Metric … メトリック(説明は上で) 
Ref … 有効なユーザ数
Use … 送信パケット量
Iface … インターフェイス

traceroute

パケットの伝送経路を調べる

参考:http://www.soi.wide.ad.jp/class/20050022/slides/04/51.html


コマンドを打つ。
# traceroute www.google.com
traceroute to www.google.com (72.14.203.104), 30 hops max, 40 byte packets
1 XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 7.031 ms 6.042 ms 5.062 ms
2 tx-in-f104.google.com (72.14.203.104) 29.941 ms 34.969 ms 35.057 ms



traceroute to www.google.com (72.14.203.104),
www.google.comまで伝送経路を表示するよ。


30 hops max,
30ホップ、つまり、ゲートウェイを30回までしか通過しないよ。
これは、ネットワーク網がループするようになっている場合、無限に回り続け
ネットワークに負荷をかけないようにするため。

40 byte packets
よく分からん。


1 XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 7.031 ms 6.042 ms 5.062 ms
2 tx-in-f104.google.com (72.14.203.104) 29.941 ms 34.969 ms 35.057 ms
ホスト名(IPアドレス) まで三つのパケットを送り、それぞれの往復時間が
7.031 ms 6.042 ms 5.062 msをいうように表示されている

1つのNICに複数のIPアドレス

ifconfigの出力結果はこんな感じ。

# ifconfig
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.1.128 Bcast:192.168.1.255 Mask:255.255.255.0
(中略)

eth0:0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.1.244 Bcast:192.168.1.255 Mask:255.255.255.0
(以下略)




やり方は2パターンある。
・ifconfigコマンドで設定
・/etc/sysconfig/network-scripts/の下にファイルを作成する



・ifconfigコマンドで設定から
利点としては簡易に出来る。
欠点は、ネットワークを再起動すると設定が消える

方法
ifconfig eth0:0 192.168.1.20 netmask 255.255.255.0 up

eth0:0は、eth0:【任意の文字】でよい。※複数文字でも出来るみたい。




・/etc/sysconfig/network-scripts/の下にファイルを作成する
利点としては、ネットワークの再起動をしても有効(設定ファイルを書くから)
欠点としては、設定ファイル作成後、ネットワークの再起動をしないと有効にならない。



方法
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

eth0:0は、eth0:【任意の文字】でよい。※複数文字でも出来るみたい。

内部に書くのは下記の内容
---DHCPの場合---
DEVICE=eth0:0
BOOTPROTO=dhcp
ONBOOT=yes
----------------

---固定IPの場合---
DEVICE=eth0:0
BOOTPROTO=static
BROADCAST=192.168.1.255 ← 環境によって違うよ
IPADDR=192.168.1.202 ← 環境によって違うよ
NETMASK=255.255.255.0 ← 環境によって違うよ
NETWORK=192.168.1.0 ← 環境によって違うよ
ONBOOT=yes
----------------

保存したら、ネットワーク再起動
service network restart

2009年8月5日水曜日

ファイルシステムのチェック

・コマンド
 →fsckコマンド
 →e2fsckコマンド

・読み取り専用かアンマウントしてから行う事。

・e2fsckはfsckをラップしているという見方で良いみたい。
 →e2がついているだけあって、ext2のファイルシステムチェック専用となっている

・fsck -r … 対話的に行う(rはなんのrなんででょうかねぇ。)

・fsck -t … ファイルシステムを指定

・e2fsck -p … 自動修復

・e2fsck -y … 全部yes

・shutdown -F -r … 再起動時にfsckを行う

・e2fsck -b XXXX /dev/なんとか … バックアップからスーパーブロックを復元する

ext2ファイルシステムの仕組み

・データはブロック管理で管理されている
 →ブロックの中には? 
  →データブロック…実際のデータ
  →iノードブロック…何のデータか・ファイルタイプ・アクセス権・所有者・所有グループ・ファイルサイズ・作成日等
  →スーパーブロック…データブロックサイズ・マウント回数・iノードやデータブロックの数
 →データブロックサイズは1M,2M,4Mから選択できる
  →指定がない場合、自動的に最適な値が選択される
 →スーパブロックはバックアップされる
  →バックアップ場所はファイルシステム作成時に作成される
 →dumpe2fsコマンドで、スーパーブロックの内容を確認できる
  →dump2fs
----
Inode count: 1964160 ←iノード数
Block count: 1963938 ←ブロック数
Reserved block count: 98196  ←予約ブロック数
Free blocks: 1642763 ←空きブロック
Free inodes: 1929295 ←空きノード数
First block: 0    ←最初のブロック番号
Block size: 4096  ←ブロックサイズ

Group 1: (Blocks 32768-65535)
Backup superblock at 32768, Group descriptors at 32769-32769 ←32768番ブロックが一つ目のバックアップ
Reserved GDT blocks at 32770-33248 
----

スワップ領域をファイルで

専用のパーティションでも良いが、
ファイルでもスワップは作成できるよう。。。

// 空ファイル/tmp/swapfile(サイズ50M)を作成
#dd if=/dev/zero of=/tmp/swapfile bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 1.76887 seconds, 29.6 MB/s

// /tmp/swapfileをswap領域にする
# mkswap /tmp/swapfile
Setting up swapspace version 1, size = 52424 kB

// /tmp/swapfileをswapとして有効にする
# swapon /tmp/swapfile

// 現在のswapを表示する
# swapon -s
Filename Type Size Used Priority
/dev/hda2 partition 522104 60 -1
/tmp/swapfile file 51192 0 -2

syscコマンド

ディスクバッファに溜め込んであるデータをディスクに書き込む




コンピュータって結構

PC< 書き込みました!!!


ていっておきながら、
暇なときに、こそこそ書き込んできるもの。



syscコマンドを実行すると、


おい、後回しせずに、今すぐ書けやこら


PC< さーせん。書きます書きます。

#こんなやり取りではないが
という具合に、書き込んでなかった物を書き込ませるように指示できる。

mountコマンド

-a 全てマウント
-f /etc/mtabの情報を更新
-o オプション指定
-r 読み取り専用でマウント
-t ファイルシステムの種類を選択する
-w 読み書き可能でマウント

眠い~

ねむい亜

/etc/fstab

LABEL=/ / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda2 swap swap defaults 0 0

1番目…デバイスファイル名・ラベル
2番目…マウント先
3番目…ファイルシステムの種類
4番目…マウントオプション。別下記載
5番目…dumpコマンドの対象、ext2・ext3は1を(1だと対象にできる)。
6番目…fsckコマンドでファイルシステムを起動時にチェックする順番を指定。(0だとやらない)


マウントオプション
 →async…入出力を非同期で行う
 →sync…入出力を同期で行う
 →atime…ファイルにアクセスする度に、inodeのアクセス時刻を更新する
 →notime…アクセス日付を
、更新しない
 →auto…maount -a の処理を実行した時にマウントする
 →noauto…maount -a の処理を実行した時にマウントしない
 →defaults…async・auto・dev・exec・nouser・rw・suid
 →dev…ファイルシステム上のファイルシステムが使用できる
 →group…ユーザのグループがデバイスファイル所有者であればマウントする
 →exec…バイナリ実行を許可する
 →noexec…バイナリ実行を拒否する
 →suid…SUID・SGIDを有効にする
 →nosuid…SUID・SGIDを無効にする
 →ro…読み込み専用
 →rw…読み書き許可
 →uid=UID…全てのファイルの所有者を指定したUIDのユーザにする(FAT)
 →gid=GID…全てのファイルの所有者を指定したGIDのユーザにする(FAT)
 →user…一般ユーザのマウント許可。マウントしたユーザのみのアカウント
 →nouser…一般ユーザのマウントを禁止
 →owner…デバイスファイルの所有者の許可

ファイルシステム(眠い)

今眠いのです。


・ファイルシステムとは、記憶装置にファイルを保存し管理する仕組み

・VFS(Virtual File System)。Linuxで取り入れられている仕組み。さまざまなファイルシステムがあるが、システムコールでファイルシステムを意識しなくても良いように、VFSを挟んでファイルシステムを動かしている

・ファイルシステムの種類
 →サポートしているファイルシステムを調べるには?
  →cat /proc/filesystems

 →ext2…extを拡張したもの
 →ext3…ext2にジャーナリングファイルシステムを追加したもの
 →reiserfs…Linux用ファイルシステム
 →jfs…IBMが開発したファイルシステム
 →xfs…SGIが開発したファイルシステム
 →iso9660…CD-ROMのファイルシステム
 →udf…DVDのファイルシステム
 →msdos…FAT(win系)
 →vfat…vfat(win系)
 →ntfs…ntfs(win系)
 →hpfs…OS/2のファイルシステム
 →hfs…Mac系
 →nfs…ネットワークファイルシステム
 →smbfs…ネットワークファイル共有を扱うファイルシステム(win系)
 →cifs…ネットワークファイル共有を扱うファイルシステム(win系)
 →procfs…プロセス情報を扱う仮想ファイル → /procで使われているやつだな。
 →sysfs…プロセス情報を扱う仮想ファイル → こっちに流れていくぞ。
 →tmpfs…仮想メモリベースのファイルシステム
 →devpfs…擬似端末を制御するためのファイルシステム
 →usbfs…USBデバイス監視ファイルシステム
 →cramfs…組み込みで使われてきた圧縮ファイルシステム


・現在のマウントの設定を調べるには?
 →cat /proc/mounts
 →cat /etc/mtab
 →編集しないで


GRUB

・GRUBは各ファイルシステム毎に用意してある


・GRUBをインストールするには、grub-install


・GRUBの設定ファイルは/boot/grub/menus.list
 →default…デフォルトで起動するエントリ番号
 →timeout…メニュー表示時間
  →起動途中の起動選択画面の秒数指定
  →60とかに変更して起動してみると分かりやすいかも。
 →splashimage…メニュー表示時の背景画像
 →title…メニューに表示するタイトル
 →root…カーネルイメージもしくは、OSが格納されているパーティションの指定
 →kernel…カーネルイメージと、カーネルオプションの指定
  →カーネルオプション下記に記述
 →intird…初期RAMディスクファイルの設定
 →makeactive…ルートパーティションのアクティブ化?
  →好きな場所にルートパーティションを持ってくることができるみたい
 →chainloder…指定されたセクタを読み込みの実行
 →hiddenmenu…起動時選択メニューを表示しない


・GRUBのパーティション指定方法
 →/dev/sda1…(hd0,0)
 →/dev/sda2…(hd0,1)


・カーネルオプション(一部)
 →mem=nM…物理メモリをnMに指定
 →maxcpus=n…CPUの数を指定
 →root=デバイス…ルートファイルシステムを指定
 →read-only…読み込み専用でマウントする
 →single…シングルユーザモード
 →数値…起動するランレベルを指定。
 
 →roってのは、マウントオプションでいいのかな?

 →カーネルオプションを起動してから確認するには
  →cat /proc/cmdline

起動スクリプトのコマンド

cd /etc/init.d/hogehoge_service

./hogehoge_service start
 →サービス起動
./hogehoge_service stop
 →サービス停止
./hogehoge_service restart
 →サービス再起動
./hogehoge_service condrestart
 →サービスが起動していなければ起動
./hogehoge_service status
 →ステータスを表示


使えるのがあったり、なかったり。

/etc/inittab

2:2345:respawn:/sbin/migtty tty1

2…ID

2345…ランレベル
  →0…シャットダウン
  →1…シングルユーザーモード(rootのみ)
  →2…ネットワークなしのマルチユーザーモード
  →3…通常のマルチユーザーモード(テキストログイン)
  →4…空き
  →5…グラフィカルログインによるマルチユーザーモード
  →6…システム再起動

respawn…アクション指示子
  →boot…システム起動時に実行。プログラムの終了を待たない
  →bootwait…システム起動時に実行。プログラムの終了を待つ
  →ctrlaltdel… 「Ctrl キー」 + 「Alt キー」 + 「Delete キー」を同時押しされる等して、SIGINTがinitに送られた時の処理
  →initdefault…デフォルトのラベル
  →oenc…指定したランレベルになったときだけ実行。プロセスの終了処理を待たない
  →wait…指定したランレベルになったときだけ実行。プロセスの終了処理を待つ。
  →respawn…指定したプロセスが終了したら再起動させる
  →sysinit…システム起動時に、bootやbootwaithより先に実行させる
I
/sbin/migtty tty1…処理

Linux起動

・電源ボタン


・BIOS
 →メモリのチェック
 →ハードウェアの設定読み込み
 →起動デバイスのチェック
 →起動デバイスのMBR内のブートローダを実行する


・MBR
 →マスターブートレコード
 →起動デバイス(HDDやSSD)の先頭にある
 →OSを起動させるためのブートローダの一部と、基本パーティション情報を収めたパーティションテーブルがある


・ブートローダ(LinuxでいうGRUB)
 →2つブートローダは存在する
  →1つ目はMBRの中。最初はこちらが叩かれる
  →2つ目は1つ目から叩かれるブートローダ
   →MBRの中に入れられるサイズに収まらないため、2つに分けている
 →ブートローダは、カーネルをロードし、カーネルに制御を渡す

・カーネル
 →ハードウェアの検出
 →メモリの初期化
 →システムクロックの設定
 →IRQの設定
  →割り込み処理の設定
 →ルートパーティションのマウント
 →initプログラムの実行
  →起動メッセージはdmesgで読めるよ
 →initプロセスを起動
  →PIDは1
  →全てのプロセスはinitプロセスの子/孫
  →kill -9 1 とかやっちゃいけないわけだわぁ。
  →/etc/inittabに基づいて作業開始

patchでカーネルアップデート

引数
-R…パッチ適用を取り消す
-C…適用せずにテストをする
-p…パッチファイルにかかれたパスを修正する。#つけろとさ。

実行

patch -p1 < patchファイル
 →普通に適用

bzip2 -d patchファイルの塊.bz2 | patch -p1
 →展開と同時に適用
 →p1を指定すると、パス名が最適になるそうなんだ~。実際やってみないとわかんね。

patch -Rp1 < patchファイル
 →パッチ適用を取り消す




失敗したとき
 →.rejファイルが作成されるそうだ。


複数のパッチを当てる必要があるとき
 →patch-kernelを使用する
 →/usr/src/linux/scriptにあるらしい。

/etc/modprobe.conf

・モジュールのロードやアンロードの際に前処理・後処理が必要な場合
・モジュールをロードする際にパラメータを指定する場合


このファイルに書けば一発OK。


alias eth0 hoge
alias eth1 huga

とすると
デバイス毎に異なるモジュールが使用できるだとさ。

modprobe

モジュールのロード・アンロードを行う、いわば管理コマンド。

insmod・rmmodは依存関係に注意する必要があるが、
こっちは自動でロードをしてくれる。
#(・∀・)イイ!! これを使わない手はないですな。


基本
modprobe hoge
 →ロード

modprobe -r hoge
 →アンロード

modprobe --show-depends
 →依存関係を調べる
 →/lib/modules/カーネルバージョン/modprobe.depに記述してある
  →depmodでmodprobe.depを作成(更新)

rmmod

rmmod -a …未使用のモジュールをアンロードする

何か使い道がありそうな匂い。

modinfo

modinfo -a … author … 作者
modinfo -d … discriptipn … 説明
modinfo -l …license …ライセンス
modinfo -n … filename … ファイル名。nからファイル名は想像しにくいなぁ…
 →f(filenameのf)はformat
 →p(pathのp)はparameters


modinfoで表示される英単語
depend…依存関係
 →dependは~に左右されるとかそういう意味
vermagic…カーネル・コンパイルバージョン
 →magicにはどんな意味?魔術的に生み出した~等の意味でいいのかしら?

lsmod

・モジュール名
・サイズ
・参照回数
・そのモジュールが使用しているモジュール→これが依存関係ってやつですね!!!

ローダブルモジュールについて

関連コマンド
lsmod…ロードされているモジュールを表示
insmod…モジュールのロード
rmmod…モジュールのアンロード
modprobe…モジュールの管理コマンド
depmod…モジュールの依存関係を更新
modinfo…モジュール情報を表示

関連デーモン
kmod…自動でモジュールのロード・アンロード


カーネルモジュールの場所
/lib/modules/カーネルバージョン/kernel
 →この中にある「.ko」とついているファイルがモジュールファイル
 →コマンドで打つ際は、.koはいらない(モジュール関連のコマンドでは)

ローダブルモジュールの歴史?

昔々、

UNIX系OSはデバイスドライバーをカーネルに組み込むしくみじゃったそうな。
そうすると、「ヤマニシバカリニイッタ」ドライバを組み込むには、カーネルを再構築する必要があったそうな。

おじいさん「ばあさんや~・・・それは・・・めんどくさいのぅ。」
ばあさん「そうじゃのぅ。・・・ なんとかならんかのう・・・」

そこで、デバイスドライバは、別々のファイルにし、
必要に応じて、ロード・アンロードできるようにした。



関連コマンド
insmod
rmmod
modprobe

関連デーモン
kmod・・・必要に応じてロード・アンロード

メモ書き

カーネルイメージを圧縮するには
make bzImage …大きいサイズのカーネルイメージにも対応
make zImage …メモリ制限があるため、サイズが大きくなると無理

カーネルイメージ

カーネルイメージについて

ファイル名
vmlinux-カーネルバージョン


場所
/boot


一度は作ってみないと。

カーネルバージョンの調べ方:centos

uname -a …全ての情報表示
uname -r …カーネルのバージョン表示
#uname -m …自分はi386なのかi686なのかを調べるのに便利


cat /proc/version


head -4 /usr/src/linux/Makefile

2009年8月4日火曜日

C# ディレクトリ一覧取得 ファイル一覧取得

string[] fs = System.IO.Directory.GetFiles(folder, searchPattern);
string[] ds = System.IO.Directory.GetDirectories(folder);

2009年8月3日月曜日

文字列の先頭比較・後方比較 C#

前方比較
string hoge = "kokko_kokko_poppo_poppo";

if(hoge.StartsWith("kokko"))
console.writeline("true");
else
console.writeline("fales");

// true


後方比較
string hoge = "kokko_kokko_poppo_poppo";

if(hoge.EndsWith("poppo"))
console.writeline("true");
else
console.writeline("fales");

// true

キャラクタのタブ

\t

2009年7月31日金曜日

Ubuntu * CentOS 二回戦め

二回戦目。。。
一回戦目の記事はありませんが、インストールに失敗しました。


今回はめげずに挑戦姿態と思います。

環境:CentOS5.2
参考URL:http://tach.arege.net/trac/wiki/TracInstall

簡素にいきましょう。簡素に。


1.tracを入手
ー>http://www.i-act.co.jp/project/products/products.html
ここのお尻から。



2.必要なものをインストール
・Python, バージョン 2.3 以上。
 →yum install python.i386
  →ver:2.4.3-24.el5_3.6

・ClearSilver, バージョン 0.9.3 以上。
 →http://www.clearsilver.net/downloads/
 →ここからDL。
  →ver:0.10.5
 →tar xf clearsilver-0.10.5.tar.gz
 →cd clearsilver-0.10.5
 →./configure --with-python=/usr/bin/python
  →gccが必要:configure: error: no acceptable C compiler found in $PATH
 →make
  →pyhton-develが必要:neo_cgi.c:12:20: error: Python.h: そのようなファイルやディレクトリはありません
  →zlib-develが必要:/usr/bin/ld: cannot find -lz
 →make install

・PostgreSQL
 → yum install postgresql
 → yum install postgresql-server

・pyPgSQL
 → postgresqlをいれた人はこれが必要
 → http://sourceforge.net/projects/pypgsql/files/
 → ここからDL
  → ver:2.5.1
 → tar xf pyPgSQL-2.5.1.tar.gz
 → cd pyPgSQL-2.5.1
 → python setup.py build
  →python-develが必要:libpqmodule.c:78:20: error: Python.h: そのようなファイルやディレクトリはありません
   →python-develがすでにいれてある場合
    →vi setup.py
    →include_dirs = [os.popen("pg_config --includedir").read().strip()]
    →下記に変更
    →include_dirs = [os.popen("pg_config --includedir").read().strip(),"Pyhton.hのdirパスを書く"]
    →例:include_dirs = [os.popen("pg_config --includedir").read().strip(), "/usr/include/python2.4"]
  →postgresql-develが必要:libpqmodule.h:29:22: error: libpq-fe.h: そのようなファイルやディレクトリはありません
 →python setup.py install
 
・Subversion, バージョン 1.0 以降(1.2.3 もしくは 1.3.1以降推奨) と 対応する Python bindings
 →yum install subversion

・Apache と mod_python 3.1.3+ (see TracModPython)
 →yum install httpd.
 →yum install mod_python

---ここまで問題なし--

3.PostgresSQLの設定
 →useradd postgres 
 →passwd postgres
 →service postgres start
 →su postgres
 →createuser trac
 →createdb postgres -O trac -E UTF-8 trac_demo
 →exit
 

4.svnの作成
 → ※mkdir -p /home/projects/demo2/trac
 → mkdir -p /home/projects/demo/repository
 → svnadmin create /home/projects/demo/repository/svn
 → chown -R apache:apache /home/projects/demo2/repository
 →

4.Tracをインストール
 →unzip Trac-0.11.5.ja1.zip
 →cd Trac-0.11.5.ja1
 →python setup.py install
  →下記の処理が必要:ImportError: No module named setuptools
   →wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c9-py2.4.egg
   →sh setuptools-0.6c9-py2.4.egg


5.プロジェクト環境を作成
 →mkdir /home/projects #プロジェクトに関するファイルを格納する場所を作成
 →trac-admin /home/projects initenv
  →Project Name [My Project]> demo #プロジェクト名
  →Database connection string [sqlite:db/trac.db]> postgres://trac:password@/trac_ve
  →Repository type [svn]> svn
  →Path to repository [/path/to/repos]> /home/projects/demo/repository/svn/


6.httpdの設定

6.仕上げ
 →/sbin/chkconfig httpd on
 →/sbin/service httpd start
 →

 

2009年7月30日木曜日

Trac * Ubuntu

そうだ・・・
君しかいない・・・


環境:Ubuntu8.10

$ sudo apt-get install trac-ja-resource
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。

単純な操作を行っただけなので、このパッケージは単にインストールできない
可能性が高いです。そのため、このパッケージへのバグレポートを送ってくだ
さい。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
trac-ja-resource: 依存: trac (< 0.10.5) しかし、0.11-2 はインストールされようとしています
E: 壊れたパッケージ


バグ・・・

2009年7月29日水曜日

C言語を開始

C言語開始。



環境:CentOS5.3







1.gccをインストール
※書いたプログラムを元に、動くものを作成してくれるもの。
yum install gcc #rootユーザで。







2.プログラムをかく。
vi hoge.c


中身はこんな感じ。
ーーーー
#include

int main(int argc, char **argv)
{
printf("kokko\n");
return 0;
}

ーーーー

保存して終了。








3.動くものを作ってもらう。
gcc hoge.c








4.できたa.outを実行してみる


kokko


がでてきた?

tcpdump

ソフトウェア業界
未来はどうなるのでしょうか。
最近、linuxさんと(一方的に)お友達になれた気がするので、
そういう関連で生きていきたいと。



それはさておき、今回はtcpdumpの使いかたをマスターしたいと思います。
#毎度の事ながら簡単に。
環境:CentOS5.3 tcpdump version 3.9.4
参考サイト:http://www.unix-vm.com/command3_46.html
参考サイト:http://thinkit.jp/article/730/1/




IPアドレス指定
tcpdump dst IPアドレスに向かって送られたパケットのみ表示
tcpdump src IPアドレスから送られたパケットのみ表示
tcpdump host IPアドレスに向かって送られた、またはIPアドレスから送られたパケットを表示
例:tcpdump dst 192.168.1.1
192.168.1.1に向かって送られたパケットを表示


MACアドレス指定
tcpdump ether dst MACアドレスに向かって送られたパケットのみ表示
tcpdump ether src MACアドレスから送られたパケットのみ表示
tcpdump ether host MACアドレスに向かって送られた、またはMACアドレスから送られたパケットを表示
例:tcpdump ether dst "FF:FF:FF:FF:FF:FF"
"FF:FF:FF:FF:FF:FF"に向かって送られたパケットを表示



ポートを指定
tcpdump port <ポート番号> ポート番号を出入りするパケットを表示
tcpdump dst port <ポート番号> ポート番号に入ってくるパケットを表示
tcpdump src port <ポート番号> ポート番号から出ていくパケットを表示




インターフェイスを指定
tcpdump -i eth0



アドレスを文字列に変換しない
tcpdump -n
例:
-nなし
hogehoge.hoge.jp

-nあり(Xは数字)
XX.XX.XX.XX

-nありの方が早く表示される
#名前解決を行っていないからだと推測している。





パケットの内容も表示する(16進数)
tcpdump -x
※通常表示されているのはヘッダの情報だけ。
-x等、パケットの内容を表示させる引数を付けることで、初めて中身が表示される





パケットの内容を表示する(ASCII文字と16進数)
tcpdump -X
※完璧には表示されない







一定の数のパケットをキャプチャしたら終了する
tcpdump -c 数






tcpdump -v(vv) -n
vの多さに応じた詳細な情報が出力される

lsのソースを読もう

lsのソースを読む
何か得れればそれでヨシ!!!!。



・noop…なにも意味しない


・initialize_main (&argc, &argv);

→いったい何者なんだい?君は?
→system.hにはこう書かれている

→Redirection and wildcarding when done by the utility itself. Generally a noop, but used in particular for native VMS

→日本語訳:リダイレクションとユーティリティそのものでされるときワイルドカード化する
こと。通常であれば無視されるが、特定のVMS上でネイティブに使用される

→つるつる脳的理解:VMS上の場合、何か意味を持つ動作を行うが、通常であればなにもしないよ。VMS環境でも、通常環境でも、この関数を使うことで同じ動作をするよ。という意味が近そう。賢人!!! 正解ですか!!?


・static int const sig[] = { SIGHUP, SIGINT, SIGPIPE,
SIGQUIT, SIGTERM, SIGTSTP };
enum { nsigs = sizeof sig / sizeof sig[0] };
→c言語で配列の要素数を取得できる



・setlocale (LC_ALL, "");
→国や地域の文化によって異なる言語や単位、表記などを設定する。
→たとえば日付表示やお金の単位、メッセージ等を決めたりだとか。


・atexit (close_stdout);
→プログラムが正常終了した時に呼び出す関数を登録する

・getopt_long
→コマンドラインを解釈する

・途中

Linuxコマンドのソースファイルの入手の仕方。

Linuxコマンドのソースファイルの入手の仕方。
以前は素晴らしいソースコードダウンロードサービスを利用していましたが、
HDDはふっ飛んで使えなくなってしまったので、

どのようにして、Linuxコマンドのソースファイルを入手するかの手順を調べてみました。
簡素にいきましょう。

環境:CentOS5.3・・・とにかくrpmコマンドが使用できる環境であることが前提なんだな。

今回はlsコマンドのソースを入手してみたいと思います。





1.まず、コマンドのパスを取得します。
$ which ls
alias ls='ls --color=tty'
/bin/ls

ここからlsのパスは「/bin/ls」であることがわかります。




2.rpmコマンドで、どのrpmにそのコマンドのソースが含まれているのかを検索します。
$ rpm -qf /bin/ls
coreutils-5.97-19.el5

coreutils-5.97-19.el5.rpmにlsのソースが含まれていることがわかりました。






3.CentOSのサイトから、rpmをダウンロードします。
http://centos.org/

Downloads

CentOS-5 ISOs

Mirror List

適当箇所のHTTPを選択

5.3を選択

osを選択

SRPMSを選択     ←要はここに行きたい。http://linux.mirrors.es.net/centos/5.3/os/SRPMS/

coreutils-5.97-19.el5.src.rpmを選択・保存





4.適当なディレクトリを用意し、その中にrpmを移動させる
$ mkdir coreutils_src
$ mv coreutils-5.97-19.el5.src.rpm ./coreutils_src







5.作成したディレクトリに入り、rpmを展開する
$ cd coreutils_src
$ rpm2cpio coreutils-5.97-19.el5.src.rpm | cpio -id








6.展開して出てきた coreutils-5.97.tar.bz2 を解凍する
$ tar jxf coreutils-5.97.tar.bz2








7.解凍してできたディレクトリに入り、ソースのあるディレクトリまで移動。
$ cd coreutils-5.97
$ ls
ABOUT-NLS COPYING GNUmakefile Makefile.am Makefile.in NEWS THANKS THANKStt.in aclocal.m4 build-aux configure doc m4 old src
AUTHORS ChangeLog INSTALL Makefile.cfg Makefile.maint README THANKS-to-translators TODO announce-gen config.hin configure.ac lib man po tests
$ cd src/
$ ls
Makefile.am chown.c csplit.c dirname.c fmt.c join.c ls.c nl.c ptx.c sha1sum.c sync.c true.c wc.c
Makefile.in chroot.c cut.c du.c fold.c kill.c ls.h nohup.c pwd.c shred.c system.h tsort.c wheel-gen.pl
basename.c cksum.c date.c echo.c fs.h lbracket.c md5.c od.c readlink.c sleep.c tac-pipe.c tty.c wheel-size.h
cat.c comm.c dcgen env.c groups.sh link.c md5sum.c paste.c remove.c sort.c tac.c uname.c wheel.h
checksum.h copy.c dd.c expand.c head.c ln.c mkdir.c pathchk.c remove.h split.c tail.c unexpand.c who.c
chgrp.c copy.h df.c expr.c hostid.c logname.c mkfifo.c pinky.c rm.c stat.c tee.c uniq.c whoami.c
chmod.c cp-hash.c dircolors.c extract-magic hostname.c ls-dir.c mknod.c pr.c rmdir.c stty.c test.c unlink.c yes.c
chown-core.c cp-hash.h dircolors.h factor.c id.c ls-ls.c mv.c printenv.c seq.c su.c touch.c uptime.c
chown-core.h cp.c dircolors.hin false.c install.c ls-vdir.c nice.c printf.c setuidgid.c sum.c tr.c users.c









8.お目当てのlsのソースファイルはls.cなのでどうぞご自由に。







感想:
思ったより手順を踏んだ。残念。
Win環境だけでできたら、利便性があがるかなぁ。。。






追記:
rpmを落としてきたら、これで解凍
http://claybird.sakura.ne.jp/garage/lhaforge/
あとは、Lhaplusでも解凍できると。

2009年7月28日火曜日

そのポートをあけているのは誰だ。Linux編

今回も簡素に。

環境:CentOS5.3


スーパユーザになって、

netstat -pan


pはプログラム
aはall
nは名前解決をせずに表示でよかったはず。

そのポートをあけているのは誰だ。Windows編

今回はWindowsでポートをあけているプロセスを調べる方法を勉強します。
いつもの環境と参考URLから。

環境:WindowsXP Pro SP3
参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/236portcheck/portcheck.html


#だらだら書いていたら分かりにくくなったので、今回は簡素に。




コマンドプロンプトで下記を入力

netstat -ano

「0.0.0.0:ポート」 のstatusが「LISTENING」になっているPIDを記録。






そして、
コマンドプロンプトで

tasklist

と打つと、PIDが表示されるので、何exeがポートをあけているか一目瞭然。









ただ、最近のウイルスもかしこいので、
常時ポートなんか開けてないんだって。


そりゃそうだわな。

slax cannot open dev/console

slaxでエラー発生。
linuxrc: line 285: cannot open dev/console:


同じ現象になっている人がいた。
http://www.slax.org/forum.php?action=view&parentID=39991


解決策は
slaxを走らせる画面の時に

「Slax Always Fresh」

を選択するといいよ。



確かに解決。
近年まれにみるスピード。


原因はファイルシステムのエラーが原因で、ファイルシステムを書き込み・読み込みマウントするときに、マウントが拒否されたため、カッとなり読み込み専用でマウントした事みたい。

FW ファイアウォール 2

第二かいです。
FW。

今回は得点力について〜略


さて、
今回の環境: CentOS5.3 iptables v1.3.5 CUI環境 rootユーザ ネットワーク越しの操作はしないように。
参考URL:http://penguin.nakayosi.jp/linux/iptables.html







さて現在の設定ですが
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#






こんな感じなっております。


さて、なにをしましょうか。
指定したアドレス以外は通信できなくします。




別端末から、pingを送信してみます。
#別端末がないかたごめんなさい。
#たとえば、windowsならアクセサリからコマンドプロンプトを実行して
#ping この端末ってやるとできるよ。

ping cc.cc.cc.cc


しーん。



ではcc.cc.cc.ccからのpingを受け付けてみます。
[root@localhost etc]# iptables -A INPUT -s cc.cc.cc.cc -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT all -- cc.cc.cc.cc anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#




では、別端末からpingを打ってみましょう。








おいお前
なに?





ちゃんと疎通ができてます。






ではせっかくここまでやったんですから、
saveしておきましょう。




[root@localhost etc]# iptables-save
# Generated by iptables-save v1.3.5 on Mon Jul 27 18:08:03 2009
*filter
:INPUT DROP [600:168598]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6471:1012073]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -s 10.156.0.10 -p tcp -j ACCEPT
-A INPUT -s 10.156.0.10 -j ACCEPT
COMMIT
# Completed on Mon Jul 27 18:08:03 2009
[root@localhost etc]#











あら簡単だこと。

2009年7月27日月曜日

FW ファイアウォール

耐火壁を作ります。

環境:煉瓦・ナマコン
参考人:ガソリンスタンドの施行技術者


スルーして

ファイアウォールの設定をお勉強。

環境:CentOS5.3 iptables v1.3.5 CUI環境 rootユーザ ネットワーク越しの操作はしないように。

今回の参考URL:http://penguin.nakayosi.jp/linux/iptables.html

手短に習得したい人はこのページを見ることをお薦めしません。

では現在のテーブルの状態を確認
[root@localhost etc]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt sou



おもな見方。
[root@localhost etc]# iptables -L  <ー -L・・・全てのルールを表示
Chain INPUT (policy ACCEPT) <- PCに入ってくるパケットのルール。policyはACCEPTになっているので、基本は許可しますという意味。
target prot opt source destination
ここの行にルールが表示される

Chain FORWARD (policy ACCEPT) <-PCが転送するパケットのルール。全ての転送を許可する
target prot opt source destination

Chain OUTPUT (policy ACCEPT) <-PCから出ていくパケットのルール。全て許可する
target prot opt sou







この設定では皆々welcomeです。
人としては、世渡り上手かもしれませんが、PC的には問題ありです。
ともあれ、操作を学ばないと何も始まりませんので少しずつ学んでいきます。



まず、今のiptablesの設定では全てを許可しまくりんぐなので、テストをしてみます。

ping localhost
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=1.47 ms

自分自身にpingを打ってみると、返事が帰ってきました。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。


まさにこんな感じ。
そんなことはどうでもいいので。

では、入ってくるパケットをDROPしてみましょう。
iptables -P INPUT DROP

-P -> ターゲットの設定。設定するで問題ないかと。
DROP -> 落とす。破棄。


では、iptables -Lで変更を確認
[root@localhost etc]# iptables -P INPUT DROP
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


では確認できたので、もっかいpingで疎通を確認。
[root@localhost etc]# ping localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.


オレ返事しろ。
オレ宛になんかパケット来たけど無視無視。



このくらいいろんなことを無視できたら、きっと世の中楽に生きれるのかもしれません。
そんなことはどうでもいいです。


pingの応答がありません。
入ってくるパケットが破棄されているので、ping対して応答しないようになりました。


でもこれでは、何もできません。
孤立してしまいます。
無視しても孤立してくだけです。そんなさみしい生き方はしたくありません。
そんなことはどうだっていいわけありませんが、先にいきましょう。


元に戻すには、
iptabes -P INPUT ACCEPT
で戻せます。



これでは、元通りです。
利便性とセキュリティを両立するのは難しいです。




では、とりあえず、PINGのパケットだけINUPUTを許可みましょう。
手始めに、INPUTパケットを全てDROPします。
[root@localhost etc]# iptables -P INPUT DROP
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


次に、pingだけ許可してみます。



[root@localhost etc]# iptables -A INPUT -p icmp -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


iptables -A INPUT -p icmp -j ACCEPT
-A->append。ルールの追加
-p->protcol。プロトコルの種類。指定できるのはtcp udp icmp all
ーj->jump。パターンにマッチした時の処理。今回は許可する


ではではpingを打ってみます。



[root@localhost etc]# ping localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=3.63 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=2.70 ms

--- localhost.localdomain ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 2.705/3.168/3.631/0.463 ms
[root@localhost etc]#




バッチリですな。おほほほほ。




では、こんなめんどくさいルールなんて消えてしまえ!!!!って方は。





iptabels -F
-F->flush。ルールの内容を全削除。


[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]# iptables -F //消えてしまえ!!!!!!!!!
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


ルールは消えましたが、ベースの設定、
つまりINPUTのDROPはなんの変更もありません。注意が必要です。






ではでは、
次はポート指定で空けてみましょう。
なにをしましょうか。webでもいきますか。



現在の設定は
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#




これではネットが見れません。
ネットが見れるように、80番ポートを開けましょう。
[root@localhost etc]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-p->プロトコル指定。
--dport->-pと併せて使用しなければならない上、ーp tcp と ーp -udp でしか指定できない
これでポートを指定する。これは受け取るポートを指定しています。つまり、80番ポートに対して通信していきたものを指定していることになります。






ではwebを見てみる。






見れない。






名前解決をしているっぽい。
DNSとの通信用のポートも開けましょう。
[root@localhost etc]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT udp -- anywhere anywhere udp dpt:domain

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#






もっかい挑戦。














しーん・・・・・・・・・・・・・・・・・・・・
しくしく・・・・・・・・・・・・・・・・・・・









なんででしょうね。
ってところでネットをかけづりまわると、
どうやら、送信されたポートのルールも必要見たい。




つまるところ、
DNSのプロトコルが送信されたポートと
HTTPのプロトコルが送信されたポートのルールが必要

もっかい設定。


[root@localhost etc]# iptables -A INPUT -p tcp --sport 80 -j ACCEPT
[root@localhost etc]# iptables -A INPUT -p udp --sport 53 -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

[root@localhost etc]#



--sport->送信元ポートの指定。





さて、もっかいwebを見てみましょう。
どうです?
快適に接続できましたか?



今回はとりあえずこのくらいに



フォロワー

ブログ アーカイブ