kyontra日記 -2ページ目

LPIC level2 リベンジ!! 第6日 『Sambaサーバの設定(1)』

今回からSambaサーバの設定について更新します。


SambaはSMB/CIFSを扱うことで、Windowsシステムとの間でファイル共有を実現するソフトウェアです。

Sambaはファイル共有の他に以下のような機能を提供します。

・プリントサーバ
・WINSサーバ
・ActiveDirectoryメンバーサーバ
・Windows NTドメインのドメインコントローラ、メンバーサーバ

さらに開発中のSamba 4.0ではActiveDirectoryのドメインコントローラ機能も提供される予定です。


◇Sambaの導入◇

CentOS環境へのSambaのインストールは
# yum install samba

インストール後は、
# chkconfig smb on
# /etc/init.d/smb start
SMB サービスを起動中: [ OK ]
NMB サービスを起動中: [ OK ]

なお以下のデーモンがサービスsmbにより起動されます。
# ps aux
~省略~
root 1926 0.0 0.9 15472 2328 ? Ss 21:51 0:00 smbd -D
root 1929 0.0 0.5 10340 1312 ? Ss 21:51 0:00 nmbd -D
root 1931 0.0 0.4 15472 1192 ? S 21:52 0:00 smbd -D
~省略~

Sambaのデーモンはsmbdnmbdです。

◇smbd
ファイル共有と印刷サービスをWindowsクライアントへ対して提供するデーモンです。
その他、ユーザ認証、リソースのロックなどを行います。SMB通信で使用するサーバ上のリッスンポートはTCPの139と445です。

◇nmbd
NetBIOSネームサービス要求に応答します。またブラウジングプロトコルにより、Windowsクライアントのマイネットワークなどに表示されるようになります。NMB通信で使用するポートはUDPの137です。

Sambaをインストールすると同時にWindowsとの認証統合を行うためのWinbindというサービスもインストールされます。
Winbindを自動起動するためには以下のコマンドを実行しておきます。
# chkconfig winbind on
# /etc/init.d/winbind start


◇Sambaの設定ファイル◇

Sambaの設定は/etc/samba/smb.confで行います。

Sambaの設定ファイルの記載はセクションごとに行います。
globalセクション、homesセクション、printersセクションは予約されたセクションで特別な記述を行います。
それ以外のセクションについては、任意の名前をつけることができます。

◇globalセクション
[global]で定義されます。
Sambaサーバ全体の設定を行います。
globalセクションの変更時にはSambaサービスの再起動が必要になります。

◇homesセクション
[homes]で定義されます。
UNIXユーザの各ホームディレクトリを一括して共有するためのセクションです。
例えばUNIXユーザkyonでSambaサーバへログインすると、UNIXユーザのkyonのホームディレクトリが共有ディレクトリとして公開されます。

◇printersセクション
[printers]で定義されます。
共有プリンタに関する設定を行います。複数のプリンタについての設定をまとめて行います。

◇その他のセクション
[任意のセクション名]
一般の共有設定を行う際に使用します。
セクション名が共有名になります。

CentOS5環境のsmb.conf初期設定(コメントアウト行を除く)
# cat /etc/samba/smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes


次回は各セッションの代表的なパラメータについて解説します。


<今回の教科書(…といってもいつも同じ)>

◇基本はあずき本で確認⇒Linux教科書 LPICレベル2 第3版 (CD-ROM付)

◇応用は黒本で特訓⇒徹底攻略LPI 問題集Level2/Release2 対応 (ITプロ/ITエンジニアのための徹底攻略)

LPIC level2 リベンジ!! 第5日 『NFSサーバの設定(2)』

こんばんは、NFSサーバの設定の続きです。

今回はNFSクライアント側の設定についてです。


◇NFSリソースのマウント◇

NFSクライアントがリモートのNFSサーバのリソースをマウントするためのコマンドは、内蔵ディスクや光学ディスクのマウントでも使用するmountコマンドを使用します。

-tオプションのファイルシステムの指定にはnfsを指定します。

<書式>
# mount -t nfs -o マウントオプション NFSサーバのホスト名orIPアドレス:公開ディレクトリパス マウントポイント

前回の例で、サーバ192.168.19.219のディレクトリ/share1を/mnt1へマウントするためには
# mount -t nfs 192.168.19.219:/share1 /mnt1
とコマンドを入力します。


◇マウントオプション◇

NFSサーバのマウントにはハードマウントソフトマウントの2種類があります。

ハードマウントの利点はNFSサーバがダウン等で応答しなくなった場合にもNFSクライアントは接続をキープすることです。NFSサーバが正常に戻ると、NFSクライアントからは何ごともなかったかのように接続が再開されます。ただし、NFSダウン時に状態をキープすることで、なにも操作を受け付けなくなってしまいます(Ctrl+Cなどでも中断できなくなる)。これを回避するために、ハードマウント時にはintrオプションの使用が推奨されています。(interオプションにより中断が可能となります。)

ソフトマウントは接続失敗時にそのファイルアクセスを要求したプログラムに対してエラーを返します。ただし、このエラーに対応しているソフトウェアはあまり多くはなく、接続失敗によりデータが失われる可能性もあります。

以下URL先の情報によると、ソフトマウントはあまり推奨されていないようです。
http://www.linux.or.jp/JF/JFdocs/NFS-HOWTO/client.html


マウントの種類の他に、NFS接続はネットワーク経由で行われるため、読み取り・書き取りのブロックサイズを指定するオプションなどがあります。
Linuxのカーネルパラメータと合わせて、性能チューニングを行う際には重要なパラメータとなります。

NFSマウント時に使用する主なマウントオプションを掲載しておきます。
オプション説明
softソフトマウントを行う
timeo=時間ソフトマウント時のタイムアウト時間
hardハードマウントを行う
intrハードマウント時に割り込みを許可する
rsize=バッファサイズ読み取りバッファサイズの設定
wsize=バッファサイズ書き込みバッファサイズの設定
nolockファイルのロック動作を行わない(lockdを起動しない)



◇NFSの練習問題◇

LPIC 202試験対策のオリジナル問題集です。

<問1>
NFSサーバの設定ファイルをフルパスで記述しなさい。


<問2>
NFSクライアントからrootユーザで接続があった場合に、ファイル操作を匿名アカウント権限で実行するためのオプションを記述しなさい。


<問3>
/shareディレクトリを192.168.10.0/255.255.255.0のNFSクライアントに対して読み込み専用でエクスポートしたい。ただしすべてのアクセスは匿名アカウント権限で行われようにする場合、/etc/exportsに記載する内容として適しているものを選びなさい。
A./share 192.168.10.0/255.255.255.0 (rw,nosquash)
B./share 192.168.10.0/255.255.255.0 (ro,nosquash)
C./share 192.168.10.0/255.255.255.0 (nosquash)
D./share 192.168.10.0/255.255.255.0 (ro,no_root_squash)
E./share 192.168.10.0/255.255.255.0 (rw)


<問4>
NFSリソースをハードマウントでマウントする場合のオプションは何か、空欄に適切なオプションを記述しなさい。
mount -t -o [      ] 192.168.100.23:/share /mnt



<今回の教科書(…といってもいつも同じ)>

◇基本はあずき本で確認⇒Linux教科書 LPICレベル2 第3版 (CD-ROM付)

◇応用は黒本で特訓⇒徹底攻略LPI 問題集Level2/Release2 対応 (ITプロ/ITエンジニアのための徹底攻略)


次回は「Samba」の予定です。ただのファイルサーバと思いきや、最新のSambaはActive DirectoryのDCにもなれるそう。。

LIAR-GAME

いまさらながらLIAR-GAMEにはまっています。
つい昨日からあせる

原作も読んだことなく、ドラマもシーズン2の第8話(最終回の一つ前)しか観ていないんだけど、はまってしまい、ドラマの最終回を楽しみにしていたのに、オンエアが火曜日だってこと知らなくて見逃して、考えれば考えるほど内容が気になり…

ついに昨日近所の本屋さんで漫画を買ってしまいました汗

昨日は1~3巻、今日は4,5巻。あっという間に読破!!

かなり面白いですひらめき電球

昔からアガサクリスティーとか金田一とかコナンとか好きだったのですが、こういうトリックって面白いビックリマーク
だまし合いなので特に死者がでるわけでもないので安心して観れます(笑)


あらすじは、Wikiとかにいくらでも載っているので、簡単にまとめると


ある日、主人公の神埼直(ドラマで戸田さんの役)のもとに現金1億円とライアーゲームと言う名のゲームへの参加状が送られてきます。

ライアーゲームと相手の資金を奪いとりゲーム終了時に一番資金を持っていた者が勝者となるゲーム。
ゲーム終了時には初めの資金の1億円は回収され、つまり1億まるごと相手に取られてしまうと、1億円の借金をすることになるという。

1回戦の相手は、学生時代に慕っていた恩師。
ゲームを降りたい主人公の直は、自分も教え子をだますつもりはないという恩師の言葉にだまされ、まんまと1億円を奪われてしまいます。

困り果てた直が助けを求めたのは、その昔、たった一人で巨大マルチを壊滅させた天才詐欺師の秋山深一(ドラマの松田さん役)。

バカ正直の直と天才詐欺師秋山の手に汗握る頭脳戦。果たして2人の運命は?そしてこのゲームの真の目的とは!?


LIAR GAME (1) (ヤングジャンプ・コミックス)



さて、ただいまLPIC勉強中。
今週もあと一日、がんばろうグー

LPIC level2 リベンジ!! 第4日 『NFSサーバの設定』

ちょっと日にちが空いてしまいました。すいません。

本日から「主題209:ファイルとサービスの共有」対策をお送りします。
今回を入れて多分4回くらい(NFSサーバ2回、Sambaサーバ2回)になると思います。

まず今回は「NFSサーバの設定」についてです。


NFS(Network File System)はネットワーク越しにファイルのマウントを実現する仕組みです。
NFSクライアント(NFSサーバを利用する側)はNFSサーバ上のディスクリソースを、あたかもローカルシステムかのように扱うことができます。

NFSはもともとサン・マイクロシステムズが開発した技術であり、性能の安定性という点ではSolarisが優位な気がしますが、LinuxのNFSサーバも十分利用できると思います。


◇NFSサーバの導入◇

CentOSでNFSサーバを利用する場合はyumコマンドでnfs-utilsをインストールします。
# yum install nfs-utils

インストールが完了したらサービスを開始します。同時にchkconfigから自動起動もONにしておくと、次回からOS起動と同時にサービスが立ち上がってくれます。また、NFSサーバを立ち上げるためにはportmapサービスが起動している必要があるようですので、合わせて起動しておきます。
# chkconfig portmap on
# chkconfig nfs on
# /etc/init.d/portmap start
portmap を起動中: [ OK ]
# /etc/init.d/nfs start
NFS サービスを起動中: [ OK ]
NFS クォータを起動中: [ OK ]
NFS デーモンを起動中: [ OK ]
NFS mountd を起動中: [ OK ]


◇NFSサーバの設定◇

NFSサーバの設定ファイルは/etc/exportsです。
/etc/exportsには公開するディレクトリ名公開するクライアント、(オプション)の順で記述します。
以下は今回作成した設定ファイルの内容です。
/etc/exports
/share1   192.168.19.0/255.255.255.0(rw)
/share2 192.168.19.0/255.255.255.0(rw)
/share3 192.168.19.0/255.255.255.0(rw)
どの行も192.168.19.0のネットワークにあるクライアントからの接続に対して読み書きの許可を与える設定です。/etc/exportsを修正したらexportfsコマンドを実行して、設定を反映させます。
# exportfs -ar

またエクスポートさせるディレクトリの権限・所有者は以下のようになっています。
# ls -Ald /share*
drwxr-xr-x 2 root root 4096 1月 18 21:50 /share1
drwxr-xr-x 2 kyontora kyontora 4096 1月 18 21:50 /share2
drwxrwxrwx 2 root root 4096 1月 18 21:51 /share3

さて、この状態でNFSクライアントからの接続を行ってみます。(今回はNFSサーバとNFSクライアントを同一マシンとして作業を行いました。)
NFSサーバがどのディレクトリをエクスポートしているかは、showmountコマンドを使用して確認することができます。
# showmount -e 192.168.19.219
Export list for 192.168.19.219:
/share3 192.168.19.0/255.255.255.0
/share2 192.168.19.0/255.255.255.0
/share1 192.168.19.0/255.255.255.0

NFSリソースのマウントは通常のマウントと同様にmountコマンドで行います。オプションは「-t nfs」とします。(/etc/fstabに記述すれば、OS起動時に自動でマウントしてくれます)
# mount -t nfs 192.168.19.219:/share1 /mnt1
# mount -t nfs 192.168.19.219:/share2 /mnt2
# mount -t nfs 192.168.19.219:/share3 /mnt3

コマンド実行後、dfコマンドでマウントしていることを確認します。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/hda1 7609680 2052896 5164000 29% /
tmpfs 127720 0 127720 0% /dev/shm
192.168.19.219:/share1
7609696 2052896 5164000 29% /mnt1
192.168.19.219:/share2
7609696 2052896 5164000 29% /mnt2
192.168.19.219:/share3
7609696 2052896 5164000 29% /mnt3

マウントが完了したので、実際にマウントしたディレクトリに読み書きの操作を行ってみます。
都合上、ユーザをkyontoraに切り替えておきます。
# su - kyontorar
$

さて、ここで問題です。ユーザkyontoraで/mnt1、/mnt2、/mnt3へファイル作成操作を行った場合に失敗するディレクトリが一つあります。それはどれでしょうか?

正解は/mnt1です。解説をする前にまずはコマンドの結果を載せておきます。
$ touch /mnt1/test1.txt
touch: cannot touch `/mnt1/test1.txt': 許可がありません
$ touch /mnt2/test2.txt
$ touch /mnt3/test3.txt

エラー内容からわかるように、失敗の原因は権限です。では、権限のどこに問題があるかを見てみましょう。
作成に成功したものについて、作成されたファイルの権限はつぎのようになっています。
-rw-rw-r-- 1 kyontora kyontora 0  1月 18 22:18 /mnt2/test2.txt
-rw-rw-r-- 1 kyontora kyontora 0 1月 18 22:18 /mnt3/test3.txt

今回、NFSサーバとNFSクライアントが同じホスト上であったのでわかりずらいかも知れませんが、NFSクライアント上のユーザkyontoraがファイルを作成したのはNFSサーバ上のディレクトリです。にもかかわらず、作成されたファイルのオーナーはNFSクライアントのユーザです。
次回以降で紹介するSambaは作成されたファイルのオーナーはSambaサーバ上のユーザになりますが、NFSではNFSクライアントのユーザ(UID)で作成されることに注意してください。つまり、NFSサーバでリソースをエクスポートする場合、エクスポートするディレクトリにはNFSクライアントが使用するユーザ(UID)に対して権限をつけてやる必要があります。
今回の例では/mnt3はディレクトリの権限を777にしてあるのですべてのユーザ(UID)に対して書き込み権限があり、/mnt2は権限は755ですが、ディレクトリのオーナーをkyontora(NFSクライアントのユーザと同じUID)にしていたので書き込みが可能でした。

さて、ではNFSクライアントがrootユーザで接続してきた場合にはNFSサーバ上でもrootユーザとしてファイル操作が行われるのでしょうか?
NFSクライアントのユーザをrootとして、再度マウントしたディレクトリに書き込みテストをしてみます。
# touch /mnt1/test1_2.txt
touch: cannot touch `/mnt1/test1_2.txt': 許可がありません
# touch /mnt2/test2_2.txt
touch: cannot touch `/mnt2/test2_2.txt': 許可がありません
# touch /mnt3/test3_2.txt

なんと、/mnt3しか書き込みに成功しませんでした。/mnt1も/mnt2もrootユーザに対して書き込み権限があるのですが、なぜ失敗したのでしょうか?
作成に成功したファイルの属性を確認すると、実はrootユーザとして作成していなかったことがわかります。
-rw-r--r-- 1 nfsnobody nfsnobody 0  1月 18 22:46 /mnt3/test3_2.txt

実はNFSクライアントがrootユーザとしてNFSサーバへアクセスした場合、root権限を許可することはセキュリティ上危険であるという考えの下、匿名ユーザ権限として操作を行っていたのです。(これはNFSサーバのオプションの規定値であり、オプションによってはroot権限のまま操作を行うことも可能です。)

/etc/exportsのオプションの一部を紹介しておきます。
オプション説明
ro読み込み専用でエクスポートします。(規定値設定)
rw読み書き許可を与えエクスポートします。
root_squashNFSクライアントからrootでアクセスされた場合に匿名ユーザとしてファイル操作を行います。(規定値設定)
no_root_squashNFSクライアントからrootでアクセスされた場合にrootとしてファイル操作を行います。
all_squashすべてのユーザでのアクセスを匿名ユーザとしてファイル操作を行います。
no_all_squashすべてのユーザのアクセスをそのままのユーザ(UID)としてファイル操作を行います。
anonuid=nnすべてのユーザのアクセスをUID=nnとしてファイル操作を行います。
anongid=nnすべてのユーザのアクセスをGID=nnとしてファイル操作を行います。

/etc/exportsのオプションは複数設定することができます。また、ひとつの公開ディレクトリに対して異なるクライアントに対して別々のオプションを設定することも可能です。
/share1   192.168.19.0/255.255.255.0(rw)
/share2 192.168.19.0/255.255.255.0(rw)
/share3 192.168.19.0/255.255.255.0(rw)
/share4 192.168.20.1(rw) 192.168.20.2(rw, no_root_squash)



次回はNFSクライアントのマウントオプションについてちょこっと紹介してから、LPICオリジナル練習問題を掲載します。


それから、やっぱり試験日を延期しました。。
1月は都合がつかなそうなので2月予定です。

木下部長とボク

テレビつけてたら始まったドラマ。

面白い!

木曜の夜にオススメです(笑)


木下部長とボク
http://www.ytv.co.jp/kinoboku/

LPIC level2 リベンジ!! 第3日 『LDAPクライアントの利用』

『主題210:ネットワーククライアントの管理』の最後はLDAPクライアントについてです。

LDAPの詳しい設定などはLPIC Level3 coreの範囲なのでLevel2での出題はコマンドの使い方くらいです。
が、LDAPクライアントのコマンドを実際に使うためにはLDAPサーバがいないとダメなので、ちょこっとLDAPサーバの設定についてもまとめます。


◇LDAPサーバの構築◇

きょんとらぼる太の環境(CentOS 5.4)での構築についてまとめておきます。

まず、LDAPサーバとLDAPクライアントのパッケージをインストールします。インストールはyumで行いました。
# yum install openldap-servers
# yum install openldap-clients

インストールが完了したらLDAPサーバのコンフィグファイルを作成します。
コンフィグファイルには管理者パスワードを記載しますが、平文で記載するのはセキュリティ上良くありません。そこでslappasswdコマンドでSSHA暗号化形式のパスワードを取得します。
# slappasswd
New password:
Re-enter new password:
{SSHA}CSNr88e7/9qBEPsyXb3khkzFEgHX63RR

LDAPサーバのコンフィグファイルは/etc/openldap/slapd.confです。viで編集します。以下の行を編集します。rootpwはslappasswdコマンドで取得した文字列を指定します。
# vi /etc/openldap/slapd.conf
~途中省略~
suffix "dc=kyon,dc=tora"
rootdn "cn=Tiger,dc=kyon,dc=tora"
rootpw {SSHA}CSNr88e7/9qBEPsyXb3khkzFEgHX63RR
~途中省略~

/etc/openldapディレクトリのDB_CONFIG.exampleを/var/lib/ldapディレクトリにコピーします。ファイル名はDB_CONFIGにします。
# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

/var/lib/ldapディレクトリ内のファイルの所有者をldap:ldapに変更します。
# chown ldap:ldap /var/lib/*
# ls -Al /var/lib/ldap
合計 68684
-rw-r----- 1 ldap ldap 921 1月 11 22:35 DB_CONFIG
-rw------- 1 ldap ldap 24576 1月 11 22:42 __db.001
-rw------- 1 ldap ldap 80019456 1月 11 22:42 __db.002
-rw------- 1 ldap ldap 335552512 1月 11 22:45 __db.003
-rw------- 1 ldap ldap 2359296 1月 11 22:45 __db.004
-rw------- 1 ldap ldap 352256 1月 11 22:45 __db.005
-rw------- 1 ldap ldap 24576 1月 11 22:45 __db.006
-rw-r--r-- 1 ldap ldap 4096 1月 11 22:42 alock
-rw------- 1 ldap ldap 8192 1月 11 22:48 cn.bdb
-rw------- 1 ldap ldap 8192 1月 11 21:24 dn2id.bdb
-rw------- 1 ldap ldap 32768 1月 11 21:24 id2entry.bdb
-rw------- 1 ldap ldap 10485760 1月 11 22:48 log.0000000001
-rw------- 1 ldap ldap 8192 1月 11 22:48 mail.bdb
-rw------- 1 ldap ldap 8192 1月 11 22:48 objectClass.bdb
-rw-r--r-- 1 ldap ldap 37 1月 11 18:42 openldap-severs-update.log
-rw------- 1 ldap ldap 8192 1月 11 22:48 ou.bdb
-rw------- 1 ldap ldap 8192 1月 11 22:48 sn.bdb

LDAPサービスを開始します。
# /etc/init.d/ldap start


◇LDAPクライアントのコマンド◇

LDAPクライアントの主なコマンドには以下のものがあります。
コマンド説明
ldapaddデータを追加する
ldapsearchデータを検索する
ldapdeleteデータを削除する
ldapmodifyデータを変更する
ldappasswdパスワードを変更する

◇データの追加◇
LDAPサーバにデータの追加を行うためにLDIF(LDAP Data Interchange Format)ファイルを作成します。空行を入れることで複数のエントリを記述することができます。
test.ldif
dn: dc=kyon,dc=tora
objectclass: dcobject
objectclass: organization
o: local
dc: kyon

dn: ou=People,dc=kyon,dc=tora
objectclass: organizationalUnit
ou: People

dn: ou=Group,dc=kyon,dc=tora
objectclass: organizationalUnit
ou: Group

dn: cn=Ponko,ou=People,dc=kyon,dc=tora
objectclass: inetorgPerson
sn: Pon
cn: Ponko
mail: Ponko@kyon.tora

dn: cn=Sutao,ou=People,dc=kyon,dc=tora
objectclass: inetorgPerson
sn: Hamu
cn: Sutao
mail: Sutao@kyon.tora

作成したLDIFファイルをldapaddコマンドで追加します。
<書式>
ldapadd [オプション]

ldapaddコマンドで使用できるオプションは次のものがあります。
オプション説明
-h ホストLDAPサーバを指定します。省略するとローカルホストに接続します。
-xSASLを使用せず簡易認証を用います。
-D バインドDN認証に利用するDNを指定します。
-W認証時のパスワードを対話的に入力します。
-w パスワード認証時のパスワードをコマンド内で指定します。
-f ファイル名LDIFファイルを指定します。

先ほど作成したtest.ldifファイルを以下のコマンドで追加します。
# ldapadd -x -D "cn=Tiger,dc=kyon,dc=tora" -W -f test.ldap
Enter LDAP Password:
adding new entry "dc=kyon,dc=tora"

adding new entry "ou=People,dc=kyon,dc=tora"

adding new entry "ou=Group,dc=kyon,dc=tora"

adding new entry "cn=Ponko,ou=People,dc=kyon,dc=tora"

adding new entry "cn=Sutao,ou=People,dc=kyon,dc=tora"

◇データの検索◇
エントリの検索にはldapsearchコマンドを使用します。
<書式>
ldapsearch [オプション] 検索フィルタ [出力属性]
オプション説明
-h ホストLDAPサーバを指定します。省略するとローカルホストに接続します。
-xSASLを使用せず簡易認証を用います。
-b ベースDN検索を開始するベースDNを指定します。
-L検索結果をLDIFv1形式で表示します。
-LL検索結果をコメントなしの形式で表示します。
-LLL検索結果をコメントとLDAPのバージョンなしで表示します。

以下のコマンドはエントリの中からobjectclassがinetOrgPersonのものを検索しています。
$ ldapsearch -x -LLL -b "dc=kyon,dc=tora" "(objectclass=inetOrgPerson)"

dn: cn=Ponko,ou=People,dc=kyon,dc=tora
objectClass: inetOrgPerson
sn: Pon
cn: Ponko
mail: Ponko@kyon.tora

dn: cn=Sutao,ou=People,dc=kyon,dc=tora
objectClass: inetOrgPerson
sn: Hamu
cn: Sutao
mail: Sutao@kyon.tora


◇LDAPの練習問題◇

LPIC 202試験対策のオリジナル問題集です。

<問1>
ldapサーバの設定ファイルをフルパスで記述しなさい。


<問2>
LDAPサーバにエントリを追加するコマンドを記述しなさい。


<問3>
ldapサーバからobjectclassがorganizationalUnitのエントリを検索するコマンドを次の中から選びなさい。ただしLDAPサーバはローカルホストであるとし、SASL認証を使用しないこととする。
A. ldapsearch -x -LLL -D "dc=kyon,dc=tora" "(objectclass=inetOrgPerson)"
B. ldapsearch -LLL -b "dc=kyon,dc=tora" "(objectclass=inetOrgPerson)"
C. ldapsearch -x -LLL -b "dc=kyon,dc=tora" "(objectclass:inetOrgPerson)"
D. ldapsearch -x -LLL -b "dc=kyon,dc=tora" "(objectclass=inetOrgPerson)"




<参考にさせていただいたWeb Site>

http://blog.absolute-zero.info/?m=200706&paged=2

http://blog.goo.ne.jp/makoto_climb/e/e0a6366072c97a14bbe7f3a4a5e6cdb5

http://arinux.jugem.jp/?eid=42


<今回の教科書(…といってもいつも同じ)>

◇基本はあずき本で確認⇒Linux教科書 LPICレベル2 第3版 (CD-ROM付)

◇応用は黒本で特訓⇒徹底攻略LPI 問題集Level2/Release2 対応 (ITプロ/ITエンジニアのための徹底攻略)


次回は「主題212:システムのセキュリティ」の予定です。

LPIC level2 リベンジ!! 第2日 『PAM認証』

2日目の今回はPAM認証についてまとめます。

とらぼる太はPAMという存在をLPICの勉強をするまで知りませんでしたが、そういう方も意外と多いのではないでしょうか?

ApacheやSamba、DHCP、DNSのような明らかに目に見える動作・機能が無いことが原因だと思いますが、現在のLinuxシステムを支える大切な仕組みです。

簡単にまとめるとPAM(Pluggable Authentication Modules)は認証を一元管理する仕組みを提供しています。

PAMは複雑なのでlinux.or.ipのサイトも参考にすると良いかと思います。
http://www.linux.or.jp/JF/JFdocs/User-Authentication-HOWTO/pam.html


◇PAMの必要性◇

昔のUNIXシステムではユーザ認証を行う場合/etc/passwdファイルを参照する方法でしたがその後/etc/shadowファイルなどの新たなユーザ認証方法が登場しました。
当然ユーザ認証を必要とするプログラムは認証方法の変化に伴い、それら新しい認証方法への対応が必要となります。

そこで導入されたのがPAMです。PAMはプログラムに対してユーザ認証の機能を提供します。認証方法の変更が発生した場合にもプログラムの修正は不要で、PAMの設定を変更することで対応が可能となります。また、PAMでは特定のユーザのみを認証するといった設定を行うこともできるようになります。


◇PAMの設定◇

PAMの設定ファイルは/etc/pam.d/ディレクトリに配置されます。
とらぼる太環境のファイルは以下の通りでした。
# ls /etc/pam.d/
atd gnome-system-log remote system-auth.rpmnew
authconfig halt run_init system-cdinstall-helper
authconfig-gtk kbdrate runuser system-config-authentication
authconfig-tui login runuser-l system-config-date
chfn neat samba system-config-display
chsh newrole serviceconf system-config-keyboard
config-util other setup system-config-language
cpufreq-selector passwd smtp system-config-network
crond pirut smtp.postfix system-config-network-cmd
cups pm-hibernate smtp.sendmail system-config-securitylevel
dateconfig pm-powersave sshd system-config-services
dovecot pm-suspend su system-config-soundcard
eject pm-suspend-hybrid su-l system-config-time
gdm poweroff sudo system-config-users
gdm-autologin ppp sudo-i system-install-packages
gdmsetup pup system-auth vsftpd
gnome-screensaver reboot system-auth-ac

PAMの設定ファイルはユーザ認証を行うプログラムごとに用意されています。また、ほとんどがプログラムと同名のファイル名です。プログラムに対応するPAM設定ファイルが無い場合はotherファイルが用いられます。

設定ファイルは次のの形式で書かれています。
type control module-path module-arguments

/etc/pam.d/loginは以下のような内容でした。
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session include system-auth
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the
user context
session required pam_selinux.so open
session optional pam_keyinit.so force revoke

type(モジュールタイプ)には以下の4つがあります。
authユーザが自称する通りの本物のユーザかどうかを確かめます。通常はパスワードで確認します。
accountユーザがサービスへのアクセスを許可されているかどうか、パスワードが期限切れになっていないかなどを(パスワードとは無関係に)確認します。
passwordユーザに自分の認証方法を変更するメカニズムを提供します。これも通常はパスワードの変更によってなされます。
sessionユーザの認証前または認証後、あるいはその両方で実行する処理を指定します。ユーザディレクトリのマウントやアンマウント、ログインやログアウト時のログ記録、ユーザが利用できるサービスを制限などを実行します。

control(コントロール)には以下の4つがあります。
requisiteこのモジュールを経由して認証に失敗した場合に、即座に認証を拒絶します。
required認証に失敗した場合に、認証を拒否します。しかし、PAM は、認証拒否をユーザに知らせる前に、このサービスのためにリストアップされた(同一 type の)全てのモジュールを実行します。
sufficientこのモジュールによる認証が成功した場合、それまでの "required" 型モジュールがすべて成功している場合のみPAM はそのユーザに認証を与えます。
optionalこのモジュールが認証の成否に関して意味を持つのは、そのサービスに関して、これが(認証の成否を決めるべき)唯一のモジュール型である場合だけです。
上記の他にincludeにより他の設定ファイルをインクルードすることもできます。

module-path(モジュールパス)にはどのモジュールを使用するかを指定します。module-arguments(引数)にはモジュールに渡される引数を指定します。以下のようなモジュールがあります。なおモジュールは/usr/lib/security/もしくは/lib/security/ディレクトリに存在します。
pam_cracklib.soパスワードの総当り攻撃に対してセキュリティを向上することができます。入力されたパスワードをチェックし、連続する文字や循環する文字などで繰り替えしていないかなどをチェックします。
pam_env.soユーザログイン時の環境変数の初期設定を行います。設定ファイルは/etc/security/pam_env.confです。
pam_deny.soすべての認証を拒否します。
pam_limits.soユーザが利用できるリソースを制限します。
pam_nologin.so/etc/nologinファイルが存在する場合に一般ユーザのログインを拒否します。
pam_securetty.so/etc/securettyファイルに記載された端末からのみrootログインを許可します。
pam_unix.so標準的なUNIX認証(パスワード認証)を行います。


◇PAMの練習問題◇

LPIC 202試験対策のオリジナル問題集です。

<問1>
PAMの設定ファイルが置かれるディレクトリ名をフルパスで記述しなさい。


<問2>
PAMの設定ファイルに記述するモジュールタイプについて、存在しないのは次のうちどれか選択しなさい。
A.account
B.session
C.auth
D.sufficient
E.passwd


<問3>
あるコンソールからのrootログインに失敗する。その端末からのログインがPAMにより拒否されているかどうかを確認するにはどのファイルを調べればよいか?ファイル名をフルパスで記述しなさい。


<問4>
以下は/etc/pam.d/loginファイルの中身である。
auth        required    pam_securetty.so
autu required pam_stack.so service=system-auth
autu required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so
1行目の認証に失敗した場合の動作として正しいものはどれか、次の中から選択しなさい。
A.直ちに認証失敗が通知され2行目以降は判定されない
B.3行目まで判定を行ったのち認証失敗が通知される
C.2行目以降の判定で認証が成功するので最終的に認証が成功する
D.ファイルの最後まで判定を行ったのち認証失敗が通知される



今回はここまで。次回はLDAPをちょこっとやって「主題210:ネットワーククライアントの管理」をおしまいにします。



<今回の教科書(…といってもいつも同じ)>

◇基本はあずき本で確認⇒Linux教科書 LPICレベル2 第3版 (CD-ROM付)

◇応用は黒本で特訓⇒徹底攻略LPI 問題集Level2/Release2 対応 (ITプロ/ITエンジニアのための徹底攻略)

初詣

ちょっと遅くなりましたが家の近くのお寺まで初詣に行ってきました。

今年も一年がんばるぞ!

とあるSEのきまぐれ日記

とあるSEのきまぐれ日記

LPIC level2 リベンジ!! 第1日 『DHCPサーバの設定』

やっと始まりました。LPIC 202試験対策。

初日は軽~くということでDHCPサーバの設定についてです。

DHCP(Dynamic Host Configuration Protocol)はクライアントに対して、あらかじめプールしてあるIPアドレスを自動的に割り当てるサービスです。

クライアントはネットワーク起動時にブロードキャストでIPアドレス取得要求を行います(※1)。これを受け取ったDHCPサーバは要求元クライアントへ対してIPアドレスを払い出し、払い出したIPアドレスとクライアントのMACアドレス情報、払い出し期間などを管理するテーブル情報を更新します。

DHCPサービスではIPアドレスのほか、DNSサーバやゲートウェイ情報、NTPサーバなどの設定情報も割り当てることができます。

(※1)クライアントのIPアドレス要求時にブロードキャストパケットで通信を行います。そのため、クライアントとDHCPサーバセグメントが異なる場合などルータ、L3スイッチ越しの場合にはスイッチ設定によりブロードキャストパケットが拒否され、IPアドレスの払い出しを行えない場合があるので注意が必要です。ルータ、L3スイッチにDHCP要求の転送を許可する設定を追加する必要があります。

◇DHCPサーバの設定◇

DHCPサーバ(dhcpd)の設定は/etc/dhcpd.confに記載します。
とらぼる太環境(CentOS)では/etc/dhcpd.confの中身は規定値では空っぽのままでした。なので設定を一から追加してやる必要があります。
/usr/share/doc/dhcp-*/dhcpd.conf.sampleをコピーして編集しても良いです。

◇/etc/dhcod.confの例
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#

ddns-update-style ad-hoc;

subnet 192.168.19.0 netmask 255.255.255.0 {

option routers 192.168.19.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.19.2;

range 192.168.19.200 192.168.19.219;

# default-lease-time is 8 days
default-lease-time 691200;

# max-lease-time is 8 days
max-lease-time 691200;

host server1 {
hardware ethernet 01:23:45:67:89:AB;
fixed-address 192.168.19.220;
}
host server2 {
hardware ethernet 01:23:45:67:89:CD;
fixed-address 192.168.19.221;
}

}

設定ファイルの主なパラメータをまとめます。
設定パラメータ説明
ddns-update-styleDDNSを使用する場合はiniterim、使用しない場合はad-hocと設定します。
subnet { ~ }subnet ネットワークアドレス netmask サブネットマスク { サブネット内の設定 }で指定します。このセグメントから要求が来た場合の設定を{}内に記載します。この設定を複数記述することで、複数のセグメントに対してIPアドレスの払い出しを行うことができます。
option domain-nameクライアントに設定するドメイン名を指定します。
option domain-name-serversクライアントに設定するDNSサーバを指定します。
option routersクライアントに設定するデフォルトゲートウェイを指定します。
option subnet-maskクライアントに設定するサブネットマスクを指定します。
option ntp-servers<クライアントに設定するNTPサーバを指定します。/TD>
default-lease-timeクライアントから使用期限を求められなかった場合の払い出す期間の規定値を指定します。
max-lease-timeクライアントから使用期限の要求があった場合の払い出す期間の最大値を指定します。
rangerange 開始IPアドレス 終了IPアドレスで払い出すIPアドレスの範囲を指定します。
host { ~ }払い出しの予約をする場合にhost 予約名 { ~ }で設定を行います。
fixed-address予約で払い出すIPアドレスを指定します。
hardwareここで指定したMACアドレスに対して払い出しを行います。


詳しいパラメータは「man dhcpd.conf」で確認できます。

実際に払い出されたIPアドレスは/var/lib/dhcp/dhcpd.leaseで確認することができます。


◇DHCPクライアントの設定◇

クライアントがDHCPを利用するための設定です。

◇redhat系
/etc/sysconfig/network-scripts/ifcfg-*にBOOTPROTOパラメータで設定します。
BOOTPROTO=dhcp
◇Debian系
/etc/network/interfacesに以下の設定をします。(eth0の場合の設定)
iface eth0 inet dhcp

◇DHCPリレーの設定◇

はじめに説明したように、クライアントからのDHCP要求はブロードキャストで送信されるためルータなどを超えることはできません。ルータをLinuxで構築している場合、dhcrelayサービスによりDHCP要求を転送することができます。

dhcrelayの設定ファイルは/etc/sysconfig/dhcrelayです。
# Command line options here
INTERFACES="eth1 eth2 eth3"
DHCPSERVERS="192.168.200.2 192.168.200.3"
この設定によりeth1,eth2,eth3で受け取ったDHCP要求をDHCPサーバ192.168.200.2と192.168.200.3に対して転送します。


◇DHCPの練習問題◇

LPIC 202試験対策のオリジナル問題集です。

<問1>
DHCPサーバの設定を行いたい。設定ファイルの名前を記述しなさい。(ファイル名のみ)


<問2>
払い出すIPアドレスの範囲を192.168.20.10から192.168.20.30としたい。空欄に入るパラメータ名を記述しなさい。
subnet 192.168.20.0 netmask 255.255.255.0 {
   [   ] 192.168.20.10 192.168.20.30
}


<問3>
ServerAに対して特定のIPアドレスを払い出したい。この場合必要な情報は次のうちどれか選択しなさい。
A.ServerAのホスト名
B.ServerAのMACアドレス
C.ServerAのユーザとパスワード
D.ServerAのDHCPクライアントバージョン


<問4>
使用期限を1週間に設定したい。この場合の適切な設定は次のうちどれか選択しなさい。
A.default-lease-time 1
B.default-lease-time 7
C.default-lease-time 168
D.default-lease-time 10080
E.default-lease-time 604800



本日は以上です!


本日利用したテキストはこちらから


$とあるSEのきまぐれ日記




久しぶりの池袋

昨日、久しぶりに池袋に行ってきました。

実はとらぼる太はちょこっとダンスを習っていて、過去3年間毎年発表会に出ていたんです。

今年は残念ながら出演者としては参加しないのですが、その代わり音作り(といっても作曲ではなくて切って貼ってのことです)で参加しています。その音源を届けに池袋まで行ってきました。

やっているITの仕事とはまったく違う世界だけれど、これからもダンスは続けて行きたいと改めて思いました。来年はまた発表会にでます!

写真は去年の発表会のカーテンコールの写真。

ステージから見る客席はなんとも言えないんです。

とあるSEのきまぐれ日記-IDC2009

今年1年ダンスから離れすぎたので練習をしないと!!



DVD版 ダンス・スタイル・ロッカーズ