2012年12月19日水曜日

「世界で通用する人がいつもやっていること」

J-WAVEで12月9日と12月16日のゲスト講師でお話をされた中野信子さんの話を聞いて早速ラジオで話していた本をアマゾンに注文して読んでみた。

「世界で通用する人がいつもやっていること」を12月16日の放送終了後にアマゾンで注文すると早速当日の夜に届いた。ページ数や1ページあたりの文字数も少ないので、移動時や昼食時に読むことにした。(3日で読み終えた)

先々週によんだ本と似ている部分が多かったためか、大変わかりやすくすぐに読み終えた。

「本を先生だと思えば、先生は選び放題」

自分を理解することや自分の脳をいかにして活性化させるかを著者および著者の友人の体験談で解説しており、なるほどと思わせてくれる点が多い。
中には、私もすでに実行している事も多々掲載されていて、自分の実行してきたことにも自身が持て、本でも記載されている自分を褒める(鼓舞する)、自分を追い込む(わざとストレスを与えて集中力を高める)ことの重要性を再認識。

相対的には、先々週に読んだ「スタンフォードの自分を変える教室」で自分の脳がどのような仕組みで反応するしているかを脳が報酬システム(「社会的報酬システム」「金銭的報酬システム」)や自己監視や意志力について学んでいたので、やさしく復讐するといった感じでよめた。

2012年11月30日金曜日

「スタンフォードの自分を変える教室」

日経新聞に載っているのを見て読みたくなったので、アマゾンで注文して読んだ。

なりたい自分になるために、「いかに自分の潜在能力を引き出すか」を具体的な事例(実験と検証)をもとにわかりやすくかかれています。

自分の脳の特性(機能・使い方・使うタイミング・時間帯)を理解して、いかに自分をコントロールしていくかが書かれています。

「やる力」「やらない力」「望む力」

注意力や感情や行動をいかにコントロールできるか? ・・・「意志力」が決め手となる。

脳には、思考、感情、行動のそれぞれをコントロールしようとする複数の自己がいる。

意志力の本能

意志力は、ストレスと同様、自分自身から身を守るために発達した生物的な本能である。

【注目】
なぜ「やりたくないこと」をしてしまうのか?
自分の意志力のチャレンジにおいて、抑制すべき内的な衝動は何なのかを明らかにする。
ストレスでいかに自制心が落ちるかを試す
1日や1週間のうちでどんなときにストレスを感じるかを考えてみる。それは、自己コントロールにどのように影響を与えているか? 欲求を感じたり、かっとなったり、やるべき事を後回しにしたりしていないか。
【意志力の実験】
呼吸を遅らせれば自制心を発揮できる
呼吸の数を1分間に4回から6回程度に減らし、整理機能を自己コントロールに適切な状態にもっていく。
グリーン・エクササイズで意志力を満タンにする
外へ出て活動しましょう──近所を5分間歩き回るだけでもOK──ストレスが減り、気分も明るくなり、モチベーションもアップします。
眠りましょう
昼寝をしたり、ひと晩ぐっすり眠ったりして、睡眠不足の悪影響を解消する。
体にリラクゼーション反応を起こす
横になって深呼吸をすることで、生理学的リラクゼーション反応を起こします。それにより自己コントロールや日常のストレスによる疲労から体が回復するのを助けましょう。
あまり書いてしまうとつまらなくなるので、このあたりにしておきます。

2012年8月29日水曜日

CakePHP/SimpleTest

CakePHPでSimpleTestでテストを行っていたら、言われのないエラーを表示されて悩んでしまった。

SImpleTestで個別にテストケースを実行すると何も問題ないのだが、Test Groups の「All tests」を実行すると
Missing Database Table

Error: Database table テーブル名 for model モデル名 was not found.

表示されているテーブルとモデルは存在し、関連するテーブル(ここで表示されてテーブルを参照している)との関連も確認したが問題なかった。

SimpleTest の All Tests がおかしいのでは? との考えに至った。

実際に、ググるとSimpleTest の All Tests は挙動不審なので使わないほうが良いとの意見もあった。

2012年7月18日水曜日

CentOSでUPSの設定(apcupsd)

自宅のPCサーバー(Linux:CentOS)にUPSを付けることにした。

今までUPSをつけないでいたために、何台かPCのディスクを故障させてしまった。
一度の突然の電源断でもディスクが破壊される場合もあるが、何度も電源断があるとディスクのアクセスアームが磁気ディスク(円盤)を傷つけてしまう。

今年は、夏真っ盛りになる前にUPSを付けて停電・ブレーカー落ちに対応する。

購入したUPSは、APC RS550電源バックアップ(500VA) BR550G-JP です。
てっきり、Linux用のPowerChuteもCDに含まれていると思っていたら、なんとありませんでした。

APCのサイトでRPM版のPowerChuteが公開されていましたが、CentOSのリポジトリでapcupsd・apcupsd-gui・apcupsdーcgiがあるので、これをインストールする。

インストール後に早速アクセスしてみるが
Unable to communicate with the UPS on 127.0.0.1.
エラーで接続できない。SELinuxでエラーが吐き出されているので確認してみる。

アクセスを許可
httpd がネットワークポートに接続するように設定する場合、httpd_can_network_network_connect boolean をオンにする必要があります: "setsebool -P httpd_can_network_connect=1"

次のコマンドがこのアクセスを許可します:
setsebool -P httpd_can_network_connect=1

追加情報
ソースコンテキスト:  system_u:system_r:httpd_sys_script_t
ターゲットコンテキスト:  system_u:object_r:apcupsd_port_t
ターゲットオブジェクト:  None [ tcp_socket ]
Source:  upsstats.cgi
Source Path:  /var/www/apcupsd/upsstats.cgi
Port:  3551
Host:  hoge
Source RPM Packages:  apcupsd-cgi-3.14.10-1.el5
Target RPM Packages:  
ポリシー RPM:  selinux-policy-2.4.6-327.el5
Selinux 有効化:  True
ポリシータイプ:  targeted
MLS 有効化:  True
強制モード:  Enforcing
プラグイン名:  httpd_can_network_connect
      ・
      ・
      ・

生の監査メッセージ :

host=ora02 type=AVC msg=audit(1342584417.76:293): avc: denied { name_connect } for pid=7159 comm="upsstats.cgi" dest=3551 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=system_u:object_r:apcupsd_port_t:s0 tclass=tcp_socket

host=ora02 type=SYSCALL msg=audit(1342584417.76:293): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bfba290 a2=3 a3=804eb20 items=0 ppid=3361 pid=7159 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="upsstats.cgi" exe="/var/www/apcupsd/upsstats.cgi" subj=system_u:system_r:httpd_sys_script_t:s0 key=(null)

早速、指示通りに # setsebool -P httpd_can_network_connect=1 を実行すると...

無事に表示されました。

2012年7月17日火曜日

SELinux覚書き(httpd_can_network_connect)

SELinuxのこまごまとした点についての覚書き

  • httpd_can_network_connect
    WEBサーバからDBサーバへアクセスするプログラムをPHPで作成したが、アクセスできない現象が発生
    • 原因
      WEBサーバのSELinuxのhttpd_can_network_connectが無効となっていた
    • 対処
      # setsebool -P httpd_can_network_connect 1
    • 確認
      # getsebool httpd_can_network_connect
      httpd_can_network_connect --> on

2012年7月15日日曜日

CentOS Firefox最新版のインストール

CentOSの自動更新では、firefoxの最新版はインストールされないので手動で最新版をインストールするための覚書き。
※CentOSの自動更新ではかなりふるいバージョンになってしまう。

一度最新版をインストールしたら、その後は firefox から(rootで)最新版に更新ができるが、12.0あたりになってから firefox の起動時に下記のエラー(kernel: 4gb seg fixup, process firefox)がでるようになったので、最新版のインストールを再度実行して確認することとした。

Jul 15 20:16:14 hoge kernel: 4gb seg fixup, process firefox (pid 8118), cs:ip 73:00401cef

■ firefoxの最新版をダウンロードする。(http://www.mozilla.jp/firefox/)

ダウンロードした tarボール を展開する。

# tar jxfv firefox-13.0.1.tar.bz2

展開された firefox をディレクトリごと移動します。

# mv firefox /usr/lib/firefox-13.0.1

/usr/bin にシンボリックリンクを貼ります。

# ln -s /usr/lib/firefox-13.0.1/firefox /usr/bin

2012年7月10日火曜日

SELinux ラベルの変更

httpd で公開フォルダを追加した時についつい忘れて手間取ってしまうのが、SELinuxのラベルの貼り替えです。

SELinuxで運用しているとフォルダや作成した時には、作成先に見合うラベルを設定する必要があります。
通常は、restorecon -R コマンドで親フォルダの情報が引き継がれると思っていたのですが、単純に引き継がれる訳でないようです。(詳細は未確認(未調査)です。)
よって、作成したフォルダに正しいラベルを設定するという事が必要になります。

# chcon system_u:object_r:httpd_sys_content_t /home/www -R
# chcon system_u:object_r:httpd_sys_script_exec_t /home/www/cgi-bin -R

2012年6月27日水曜日

xdebugでwarningがでる。

xdebugが有効かどうか確認すると下記のようなwarningがでる。

[root@hoge ~]# php -i | grep -i "xdebug support"
PHP Warning:  Xdebug MUST be loaded as a Zend extension in Unknown on line 0
xdebug support => enabled
[root@hoge ~]# 
■/etc/php.ini
extension=xdebug.so
   ↓ コメントアウト
;extension=xdebug.so

■/etc/php.d/xdebug.ini
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_autostart=On
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
xdebug.collect_params=On
xdebug.dump.GET=*
xdebug.dump.POST=*

extensionをzend_extensionに変更し、リモートの設定を追加した。(リモートデバッグを行うため) また、xdebug.remote_connect_back=On を設定して複数のクライアントからリモートデバッグが実行できるようにした。

「xdebug.remote_connect_back」は。xdebug 2.1以降で利用できる。

apacheを再起動して設定が有効になったか確認する
[root@hoge ~]# php -i | grep xdebug
/etc/php.d/xdebug.ini,
xdebug
xdebug support => enabled
xdebug.auto_trace => Off => Off
 ・
 ・
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => On => On
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
 ・
 ・
 ・

2012年6月25日月曜日

CakePHP 複数アプリの実行

CakePHP で複数アプリを実行する。

1. virtual host を設定して複数アプリを別々ホスト名で起動する。

2. .htaccess を修正する。(忘れがちなので注意)
[root@hoge sample]# cat .htaccess

   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]

[root@hoge sample]# 
 
  ↓↓↓


   RewriteEngine on
   RewriteRule    ^$ webroot/    [L]
   RewriteRule    (.*) webroot/$1 [L]

サブディレクトリにcakePHPを構築する
もしサブドメインに構築する場合には、.htaccessの設定に追記が必要となる。
具体的には、RewriteBaseをきちんと設定にあるような

app/webroot/.htaccess にあるmod_rewriteの設定において RewriteBase /(サブディレクトリ名)を追加する必要がある。

もし、追加し忘れると、500 Internal Server Errorが表示され、Apacheのログには、

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

というメッセージが記録される。

今までDocumentRoot上にしか構築したことがなかったので、少しハマってしまった。

2012年6月24日日曜日

Samba+OpenLDAP(PDC) ユーザー設定について

Samba+OpenLDAP(PDC) を運用したときのユーザーの登録について記載します。

まず先に結論から申し上げると作成済みのユーザー(Linuxアカウント)に Samba+OpenLDAP(PDC) のドメインにログオンできるようにするには、下記の2つのコマンドを実行する必要があります。

(前提条件として下記が設定済みである)
・Samba および OpenLDAPがPDC対応で正しくインストールされている。
・作成済みのユーザー(Linuxアカウント)がldapaddコマンド等でLDAPに登録済み。
・ログオンするPCのコンピュータ名が smbldap-useradd -w <コンピュータ名> で登録済み


[root@hoge ~]# smbldap-usermod -a <作成済みLinuxアカウント>

[root@hoge ~]# smbldap-passwd <作成済みLinuxアカウント>

今回は、Linuxユーザーとして作成済みのユーザーをSamba+OpenLDAP(PDC)のユーザーとして登録(再設定するための方法)記載します。

※基本的な設定については、別途記載することにします。

■変更前の設定内容■
[root@hoge ~]# smbldap-usershow pelo
dn: uid=pelo,ou=Users,dc=hogehoge,dc=com
uid: pelo
cn: pelo
objectClass: account,posixAccount,top
userPassword: {SSHA}*******************************
loginShell: /bin/bash
uidNumber: 3002
gidNumber: 3002
homeDirectory: /home/pelo
[root@hoge ~]# 

Windowsクライアントからログインできるユーザーは下記のようになっています。
比較すると、samba専用のアトリビュートが作成されていないことがわかります。

[root@hoge ~]# smbldap-usershow knownuser
dn: uid=knownuser,ou=Users,dc=hogehoge,dc=com
uid: knownuser
cn: knownuser
objectClass: account,posixAccount,top,shadowAccount,sambaSamAccount
shadowMin: 0
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/knownuser
gecos: Known User
shadowLastChange: 15462
shadowMax: 45
sambaSID: S-1-5-21-2725434548-1602857623-2035637331-1001
displayName: Known User
userPassword: {SSHA}*******************************
sambaNTPassword: *******************************
sambaPasswordHistory: 0000000000000000000000000000000000000000000000000000000000000000
sambaPwdLastSet: 1335947382
sambaAcctFlags: [U          ]
[root@hoge ~]# 

既に作成済みのユーザーについてsamba専用のアトリビュート情報の追加を行うには、smbldap-usermod-a オプションで実行する必要があることがわかりました。
善は急げで、早速実行します。

[root@hoge ~]# smbldap-usermod -a pelo
Warning: sambaPrimaryGroupSID could not be set beacuse group of user pelo is not a mapped Domain group!
To get a list of groups mapped to Domain groups, use "net groupmap list" on a Domain member machine.
Use of uninitialized value in string at /usr/sbin/smbldap-usermod line 346.
Use of uninitialized value in string eq at /usr/sbin/smbldap-usermod line 347.
Use of uninitialized value in string eq at /usr/sbin/smbldap-usermod line 347.
Use of uninitialized value in string eq at /usr/sbin/smbldap-usermod line 347.
Use of uninitialized value in concatenation (.) or string at /usr/sbin/smbldap-usermod line 347.
[root@hoge ~]# 

アレレ?。
何やら、嫌らしいエラーメッセージが表示されてしまいました。
usr/sbin/smbldap-usermod の346行目と347行目を確認しましたが、影響なさそうなので無視して先へ進むことにします。

    $cn = "$Options{'N'}";
    $cn .= " " . $Options{'S'}

smbldap-usermodコマンドの実施後に内容が変わったかどうかを検証します。

[root@hoge ~]# smbldap-usershow pelo
dn: uid=pelo,ou=Users,dc=hogehoge,dc=com
uid: pelo
objectClass: account,posixAccount,top,shadowAccount,sambaSamAccount
userPassword: {SSHA}zrb5IhKHtVErK8rdx/e0pqtG4kJ0ES29
shadowLastChange: 15476
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 3002
gidNumber: 3002
homeDirectory: /home/pelo
sambaPwdLastSet: 0
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
sambaPwdMustChange: 2147483647
sambaSID: S-1-5-21-2725434548-1602857623-2035637331-7004
sambaAcctFlags: [UX]
cn:  
displayName:  
[root@hoge ~]#

上記の赤字青字の部分が追加されていることを確認できます。
しかし、青字のアトリビュートは未設定のようです。
cn は氏名(Common Name)を設定するアトリビュートで、displayName もWindowsで利用される氏名を設定するアトリビュートのようです。
      →→→ ■OpenLDAPの基本的なアトリビュートについて■
上記の内容でWindows7クライアントからドメインにログオンを行ってもまだエラーになってしまいます。
ログオンできるユーザーとの違いを確認したらsambaのパスワード関連のアトリビュートがないようです。(sambaLMPassword,sambaAcctFlags,sambaNTPassword,,,)
よって、再度パスワードを再設定するコマンド(smbldap-passwd)を実行してパスワードを上書きします。    ↓ 今度は無事にWindows7クライアントからドメインにログオンできました。

赤字の部分が smbldap-passwd を実行した結果に追加されたアトリビュートです。

[root@hoge ~]# smbldap-usershow pelo
dn: uid=pelo,ou=Users,dc=hogehoge,dc=com
uid: pelo
objectClass: account,posixAccount,top,shadowAccount,sambaSamAccount
shadowMin: 0
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 3002
gidNumber: 3002
homeDirectory: /home/pelo
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
sambaSID: S-1-5-21-2725434548-1602857623-2035637331-7004
cn:  
displayName:  
sambaLMPassword: *******************************
sambaAcctFlags: [U]
sambaNTPassword: *******************************
sambaPwdLastSet: 1340506248
sambaPwdMustChange: 1344394248
userPassword: {SSHA}*******************************
shadowLastChange: 15515
shadowMax: 45
[root@hoge ~]# 

2012年6月23日土曜日

smbldap-usershow コマンドがエラーになる。

Samba+OpenLDAPでのユーザー情報を確認しようとsmbldap-usershowコマンドを実行したらエラーになってしまった。

[root@hoge ~]# smbldap-usershow hogehoge
Use of uninitialized value in string at /usr/lib/perl5/vendor_perl/5.8.8/smbldap_tools.pm line 397.
Use of uninitialized value in string at /usr/lib/perl5/vendor_perl/5.8.8/smbldap_tools.pm line 397.
user hogehoge doesn't exist

smbldap_tools.pm の397行目を確認したら、 $ldap_slave->bind( "$config{slaveDN}", password => "$config{slavePw}" ); となっていた。
slaveDNの設定に問題があるようなので、確認をすると下記の対応でエラーが解消された。

■ /etc/smbldap-tools/smbldap_bind.conf ■
# $Id: smbldap_bind.conf 35 2011-02-23 09:07:36Z fumiyas $
#
############################
# Credential Configuration #
############################
# Notes: you can specify two differents configuration if you use a
# master ldap for writing access and a slave ldap server for reading access
# By default, we will use the same DN (so it will work for standard Samba
# release)
slaveDN="cn=Manager,dc=hogehoge,dc=com"  <-- 追加
slavePw="****************"  <-- 追加
masterDN="cn=Manager,dc=hogehoge,dc=com"
masterPw="****************"

Samba+OpenLDAPを特にスレーブサーバを立てていないのでslaveの設定は不要と思っていたが、このslaveの記述がないとエラーになってしまうようでした。
なんだか良く理解できないが、コマンドが実行できるようになったので安心した。

2012年6月22日金曜日

SELinux基本コマンドの備忘録

● SELinux の基本コマンド

◆ls
 オプションに -Z をつければ、ポリシー・タイプを表示することができます。
 # ls -Z

◆chcon
 ファイルやディレクトリのタイプを一時的に変更します。

 # chcon -t samba_share_t /var/smb -R
 -u でユーザ、-r でロールを変更できる。

この例では、/var/smb ディレクトリ以下のディレクトリとファイルすべてのポリシー・タイプを samba_share_t に変更しています。

◆restorecon
 ポリシー・タイプの不整合を修正します。

 # /sbin/restorecon -RF /var/smb
 -Rは再帰的に適用、-Fは強制的に適用します。
 (強制でないと変わらないときがある)

◆setsebool
 各booleanパラメータを変更します。

 # setsebool -P allow_smbd_anon_write 1
 -Pオプションは、システムを再起動しても設定を反映するようにする。

◆semanage
 ファイルに関するタイプのほか、ポートに対するタイプも変更可能なコマンドです。chcon では file_contexts ファイル内の内容は変更できないので、yum update などでポリシーをアップデートした場合は変更内容が消えてしまいます。semanage では file_contexts ファイルの内容を書き換えるのでそのような問題は起きません。

 # semanage fcontext -a -t samba_share_t "/var/smb/(/.*)?"

・設定内容を反映させるには restorecon コマンドを使います。
 # restorecon -RF /var/smb

・設定内容を削除するには -a の代わりに -d を使用します。
 # semanage fcontext -d -t samba_share_t "/var/smb/(/.*)?"
 # restorecon -RF /var/smb

・ポートに対するタイプを見るには
 # semanage port -l

・Apache に TCP 8080 番ポートを使えるようにさせるには
 # semanage port -a -t http_port_t -p tcp 8080

ポートの場合は即座に設定が反映されます。

● booleanパラメータの調整とトラブルの回避

ポリシーを変更せずにトラブルを解決したり,セキュリティ・レベルを調整したりするのに役立つのが,booleanパラメータです。booleanパラメータを切り替えて,不要なアクセス許可を与えないようにしていけば,セキュリティを高められます。逆に,必要なアクセス許可をbooleanパラメータの切り替えで設定可能な場合は,トラブル解決にも役立ちます。

  • Apacheが他のアプリケーションに接続できない
    【解決法】 httpd_can_network_connectをonにする
  • Sambaのホームディレクトリを公開できない
    【解決法】 samba_enable_home_dirsをonにする
  • Javaアプリケーションが動かない
    【解決法】 allow_execmodをonにする
  • ログにexecmod、execstackのアクセス拒否が出力される
    【解決法】 allow_execmod/allow_execstackをonにする

《具体的な設定例》

「Sambaでホーム・ディレクトリを公開できない」という問題を「samba_enable_home_dirs」のon/offを切り替えて対処してみましょう。

  • samba_enable_home_dirsを次のようにonに切り替えます。

    # setsebool -P samba_enable_home_dirs 1

  • onに切り替わったことを確認します。

    # getsebool samba_enable_home_dirs
    samba_enable_home_dirs -->on

2012年6月21日木曜日

SELinux問題を解決する際に理解するトップ3

SELinux問題を解決する際に理解するトップ3について(Dan Walshさんの記事)記載されていので掲載します。

私もほとんど、ここで記載されている件で解決をしましたが、頻繁に発生する訳ではないのでついつい作法を忘れてしまいます。そこで、Dan Walshさんの記事を掲載して備忘録をして書き留めることにしました。

1. SELinux is all about labeling

Every process and object on the machine has a label associated with it, if your files are not labeled correctly access might be denied.

If a file is mislabeled a confined application might not be allowed access to the mislabeled file. If an executable is mislabeled, it may not transition to the correct label when executing, causing access violations and potentially causing it to mislabel files it creates. Processes and objects on the machines have labels. If the labeling is correct everything should work. Sometimes an admin decides to change the default labeling on the system. If an admin wants to store apache web pages in a unusual location, /srv/myweb. The admin needs to tell SELinux that the files stored there need to be accessible to the web server process. He does this by setting the labeling correctly in the system. The apache process is allowed to access files labeled httpd_sys_content_t.

# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'

This command tells the SELinux datastore that the /src/myweb directory and all files under it should be labeled httpd_sys_content_t. Tools like restorecon and rpm read this datastore when they are labeling or relabeling files. Note, however that the semanage command will not change the actual labels on files on your machine. You still need to execute restorecon to fix the labels.

# restorecon -R /srv/myweb

restorecon reads the SELinux datastore to determine how files under /srv/myweb should be labeled and then fixes them.

# matchpathcon /srv/myweb

matchpathcon reads the SELinux datastore and prints the default label for the specified path

2. You have to tell SELinux about how a confined process is being run.

A confined process/application can be run in many different ways. You need to tell SELinux about how you are configuring the application to run, so SELinux will allow it the proper access. SELinux does not do this automatically, SELinux has builtin if/then/else rules called booleans that allow you to tweak the predefined rules to allow different access. If you set up you apache web server to talk to a mysql server, you need to set a boolean to tell SELinux this is ok. You can do this with the setsebool command.

# setsebool -P httpd_can_network_connect_db 1

Tools like system-config-selinux or getsebool -a will list all of the possible booleans. On the latest Fedora systems you can run SELinux error messages (avc) through audit2allow -w (audit2why). This checks to see if any boolean could be set to allow the access.
setroubleshoot is also pretty good at diagnosing problems.

3. SELinux rules are evolving and applications are sometimes broken

General errors in policy or applications can cause SELInux access denials. Sometimes an application is just broken or the SELinux policy has never seen the confined application run the code path that it is running. While the application is working correctly, SELinux is denying it access. You can add custom policy to your system simply by piping the SELinux error messages through audit2allow. Say a new version of postgresql comes out that SELinux is mistakenly denying access to a resource which it should be allowed to access. You can use audit2allow to build a custom policy module that can be installed on your system to allow the access.

# grep postgresql /var/log/audit/audit.log | audit2allow -R -M mypostgresql

This command will generate a local policy module which will allow all accesses that are currently being denied..

# semodule -i mypostgresql.pp

This command installs the local policy modifications to your system. You probably want to report the SELinux errors to bugzilla or a mailing list so your local modifications can be added to the distribution's policy or upstream.

2012年6月19日火曜日

Toodledo 完了日を変更できない。

こんなに多機能なのに、完了日を変更することができないのが残念です。

また、完了日を表示させるには「SORT」から「Date Comleted」を選択する。

2012年6月10日日曜日

OEMが起動しなくなっていた。

久しぶりにLinuxマシンのOracle11gを起動したら、OEMを起動する部分でエラーが発生している。どうやら、リスナーやDBは起動しているようだ。

SAMBA+LDAP でPDCを作成するために、ドメインやホスト名を変更したことが原因のようです。

■Oracleを起動するとOEMの起動部分でエラーが発生。

[root@hoge ~]# service dbora start
Starting Oracle Database:Processing Database instance "ora02": log file /opt/oracle/app/product/11.2.0/ora02/startup.log
OC4J Configuration issue. /opt/oracle/app/product/11.2.0/ora02/oc4j/j2ee/OC4J_DBConsole_ora02.horisawa.info_ora02 not found.

[oracle@hoge ~]$ echo $ORACLE_SID
ora02
[oracle@hoge ~]$ emca -config dbcontrol db -repos recreate

EMCAの開始 2012/06/10 17:27:11
EM Configuration Assistant, リリース11.2.0.0.2 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

次の情報を入力してください:
データベースのSID: hoge
リスナーのポート番号: 1521
リスナーORACLE_HOME [ /opt/oracle/app/product/11.2.0/hoge ]: 
SYSユーザーのパスワード:  
DBSNMPユーザーのパスワード:  
SYSMANユーザーのパスワード:  
通知用の電子メール・アドレス (オプション): 
通知用の送信メール(SMTP)サーバー (オプション): 
-----------------------------------------------------------------

次の設定が指定されています

データベースのORACLE_HOME ................ /opt/oracle/app/product/11.2.0/hoge

ローカル・ホスト名 ................ hoge.hogehoge.com
リスナーORACLE_HOME ................ /opt/oracle/app/product/11.2.0/hoge
リスナーのポート番号 ................ 1521
データベースのSID ................ hoge
通知用の電子メール・アドレス ............... 
通知用の送信メール(SMTP)サーバー ............... 

-----------------------------------------------------------------
続行しますか。 [はい(Y)/いいえ(N)]: y
2012/06/10 17:29:19 oracle.sysman.emcp.EMConfig perform
情報: この操作は/opt/oracle/app/cfgtoollogs/emca/hoge/emca_2012_06_10_17_27_10.logでロギングされています。
2012/06/10 17:29:20 oracle.sysman.emcp.EMReposConfig invoke
情報: EMリポジトリの削除中(少し時間がかかります)...
2012/06/10 17:32:39 oracle.sysman.emcp.EMReposConfig invoke
情報: リポジトリは正常に削除されました
2012/06/10 17:32:40 oracle.sysman.emcp.EMReposConfig createRepository
情報: EMリポジトリの作成中(少し時間がかかります)...
2012/06/10 17:43:24 oracle.sysman.emcp.EMReposConfig invoke
情報: リポジトリは正常に作成されました
2012/06/10 17:43:34 oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository
情報: 構成データをEMリポジトリにアップロード中(少し時間がかかります)...
2012/06/10 17:46:01 oracle.sysman.emcp.EMReposConfig invoke
情報: 構成データが正常にアップロードされました
2012/06/10 17:46:07 oracle.sysman.emcp.util.DBControlUtil configureSoftwareLib
情報: ソフトウェア・ライブラリは正常に構成されました。
2012/06/10 17:46:07 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
情報: プロビジョニング・アーカイブのデプロイ中...
2012/06/10 17:47:02 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
情報: プロビジョニング・アーカイブは正常にデプロイされました。
2012/06/10 17:47:02 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
情報: Database Controlの保護中(少し時間がかかります)...
2012/06/10 17:48:25 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
情報: Database Controlは正常に保護されました。
2012/06/10 17:48:25 oracle.sysman.emcp.util.DBControlUtil startOMS
情報: Database Controlの起動中(少し時間がかかります)...
2012/06/10 17:49:38 oracle.sysman.emcp.EMDBPostConfig performConfiguration
情報: Database Controlは正常に起動されました
2012/06/10 17:49:39 oracle.sysman.emcp.EMDBPostConfig performConfiguration
情報: >>>>>>>>>>> Database ControlのURLはhttps://ora02.horisawa.info:5500/emです <<<<<<<<<<<
2012/06/10 17:49:50 oracle.sysman.emcp.EMDBPostConfig invoke
警告: 
************************  WARNING  ************************

管理リポジトリは、Enterprise Managerデータが暗号化されるセキュア・モードで配置されています。暗号化キーはファイル/opt/oracle/app/product/11.2.0/ora02/hoge.hogehoge.com_ora02/sysman/config/emkey.oraに配置されています。このファイルが失われると暗号化データを使用できなくなるため、このファイルは必ずバックアップしてください。

***********************************************************
Enterprise Managerの構成が正常に完了しました
EMCAの終了 2012/06/10 17:49:50
[oracle@hoge ~]$

■設定変更後は問題なく起動した。

[root@ora02 ~]# service dbora start
Starting Oracle Database:Processing Database instance "ora02": log file /opt/oracle/app/product/11.2.0/ora02/startup.log
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
https://ora02.horisawa.info:5500/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ......... started.
------------------------------------------------------------------
Logs are generated in directory /opt/oracle/app/product/11.2.0/ora02/ora02.horisawa.info_ora02/sysman/log
[root@ora02 ~]#

再構築すると、 Enterprise Managerのポート番号が変わる。
元のポート番号(デフォルト:1158)に変更したい場合は、下記のようにする。

[oracle@hoge ~]$ emca -reconfig ports -DBCONTROL_HTTP_PORT 1158

2012年6月1日金曜日

CentOSで最新版のFirefoxを実行する。

自宅のマシンとなるとユーザーの追加はめったにないので、ついつい忘れがちなユーザーの個別設定について書き留めておきます。(備忘録)

CentOSでは、Firefoxがデフォルトでインストールされていますが、インストールされているバージョンがかなり古い。やはり、最新のバージョンでブラウズしたいのでFirefoxの最新版をインストールしたあとのユーザーごとの個別設定を忘れてしまい手間取ったりします。

最新版のFIrefoxの起動設定

(例)
最新版のFireFoxインストール先:/opt/firefox/firefox

■Gnomeデスクトップにブラウザの起動設定を行う。
メニューバー上の[システム]->[設定]->[他の個人設定]から'お気に入りのアプリ'を選択します。

ウエブ・ブラウザのプルダウンメニューを firefox から その他

コマンド を /opt/firefox/firefox %s に変更

ユーザーを追加した時に、ブラウザが古いぞ! を慌ててしまうので書き留めておくことにしました。

2012年5月23日水曜日

移動プロファイル(移動ユーザープロファイル)とは?

Samba with LDAP でのPDC構築の設定が不十分な時に、WindowsXp からドメインにログオンしたら、下記のメッセージが表示された。

移動プロファイルが読み込まれなかったため、ローカルプロファイルでログオンしようとしています。ログオフ時にプロファイルの変更はサーバーにコピーされません。正しいセキュリティの設定がされていないプロファイルフォルダのコピーが既にサーバーに存在しているため、プロファイルは読み込まれませんでした。現在のユーザーか Administrator のグループがフォルダの所有者でなければなりません。ネットワーク管理者に連絡してください。

そもそも移動プロファイルとは?

 ドメイン構成ではユーザのプロファイルの管理が可能になります。
 プロファイルには、ユーザのデスクトップ環境の個人設定が含まれており、Windowsの「デスクトップ」の情報などを含みます。プロファイルに移動プロファイル固定プロファイルがあります。

 移動プロファイルを利用すると、ドメインに所属するどの端末からドメインログオンしても、ログオフ時にユーザーのデスクトップ環境がサーバ側に保持されますので、常に自分のデスクトップ環境を利用し続けることができ、ユーザの利便性を向上させることができます。

移動プロファイル利用の注意点

 移動プロファイルの機能は、ドメインログオン時にプロファイル情報をサーバーからクライアントに転送しなければならないため、ネットワーク負荷が高まります。そのため、同時に多数のユーザーがドメインにログオンする環境においては、ログオンに時間がかかる事になる可能性がありので、利用に際しては利用頻度やネットワーク帯域なども考慮する必要があります。

移動プロファイルの利用方法

 移動プロファイルの機能を利用するためには、プロファイルを可能するパスを指定するための "logon path"、"logon home"パラメータと、プロファイルを格納するための [prifles]共有の設定を行います。
 "logon path"は、Windows NT/2000/XPなどで用いられるプロファイルの格納先です。"logon home"は、Windows98/Meなどで用いられるプロファイルの格納先です。

 "logon path"の格納先は、通常、Sambaサーバ上の [profiles]共有を用いるように設定します。また、プロファイルは一人一人が異なるため、ユーザごとに別々のプロファイルを作成するように%U変数を使って指定します。  ユーザが初めてドメインログオンするときには、profiles]共有にそのユーザ用のプロファイル情報をユーザの権限で作成するため、[profiles]共有ディレクトリは一般ユーザ権限で誰でも書き込み可能になっている必要があります。それぞれのユーザごとのプロファイルのディレクトリは、そのユーザ本人かrootユーザ以外が更新する必要はないため、ディレクトリにはstickyビットを設定します。

[root@hoge ~]# mkdir -p /var/samba/profiles
[root@hoge ~]# chmod 1777 /var/samba/profiles

samba.comf

[global]
   ‥‥
   logon path = \\%L\profiles\%U
   ‥‥
[profiles]
   path = /var/samba/profiles
   blowseble = no
   read only = no
   profile acls = yes
   create mask = 0600
   directory mask = 0700

上記の profile acls = yes の設定を行わないと「移動プロファイルが読み込まれなかったため・・・・」が表示されてしまう。

ドメインユーザーでログイン時に下記のようなエラーが発生する場合は...

ローカルのプロファイルが見つかりません。一時的なプロファイルでログインしています。ログオフ時にこのプロファイルへの変更は失われます。

 設定がスマートに完了していない状態で、エラーが発生(ページ先頭のエラー等)しながらもドメインユーザで中途半端にログインできてしまった場合に、ページ先頭のエラーを解消後に上記のエラーが発生する。
 これは、中途半端な状態でもログインができたのでsambaサーバー上にプロファイル用のフォルダが作成されています。しかし、ログインでプロファイルエラーが発生している状態だったので、sambaサーバー上に作成されたプロファイル用のフォルダには、何も情報(ファイル)が登録されていません。

 このような場合は、端末(PC)をログオフ後にsambaサーバー上に作成された、このエラーを起こしているドメインユーザーのプロファイル用のフォルダを削除することで解決します。
私の場合は、/var/lib/samba/profilesの中に作成されたこのユーザーのフォルダを削除しました。

2012年5月17日木曜日

CentOSのファイルのコピーや移動が遅い

容量の小さいファイルをコピーしたり移動している時は気が付かなかったが、大きなファイルをコピーや移動させたらやたら時間がかかる。

通常ならば、ファイルのコピーや移動はDMAによる転送になると思うので確認をすると...
ナント...
[root@hoge ~]# hdparm /dev/hda

/dev/hda:
 multcount    = 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 65535/255/63, sectors = 1953525168, start = 0
[root@hoge ~]# hdparm -ft /dev/hda

/dev/hda:
 Timing buffered disk reads:    8 MB in  3.37 seconds =   2.38 MB/sec
[root@ora02 ~]# 
DMAの設定がOFFになっている。
また、転送速度もなんと 2.38 MB/sec と信じられない遅さだ。

確認すると。現在のCENTOSのバージョンでは、SATAを正しく識別できないようで、DMAの転送設定がOFFになってしまう。
早速、ググる。

grub.conf に all-generic-ide を設定するとDMAの転送が有効になるらしい。
HETARE wiki に感謝です。

title CentOS (2.6.18-308.4.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-308.4.1.el5
        module /vmlinuz-2.6.18-308.4.1.el5xen ro root=LABEL=/ all-generic-ide rhgb quiet
        module /initrd-2.6.18-308.4.1.el5xen.img

上記を設定してリブートを行い確認をする。

リブート後の確認内容は下記の通り。

[root@hoge ~]# hdparm /dev/hde

/dev/hde:
 multcount    = 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 65535/255/63, sectors = 1953525168, start = 0
[root@hoge ~]# hdparm -ft /dev/hde

/dev/hde:
 Timing buffered disk reads:  356 MB in  3.00 seconds = 118.58 MB/sec

転送時間が約50倍早くなった。よかった。

2012年5月14日月曜日

LDAPによるUNIXアカウントなしユーザー認証

表題の「LDAPによるUNIXアカウントなしユーザー認証」が出来ずに苦労したが、解決するとなんとまぁ自分の愚かさに呆れるだけであった。

■環境
 CentOS 5.8
 SELinux:Enforcing
  OPENLDAP:2.3.43
  SAMBA:3.6.3
[root@hoge etc]# cat ldap.conf | grep -v "^#\|^$"
host 127.0.0.1
base dc=hoge,dc=com
uri ldap://127.0.0.1/
binddn cn=proxy,dc=hoge,dc=com
bindpw secretword
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_base_passwd         ou=Users,dc=hoge,dc=com
nss_base_shadow         ou=Users,dc=hoge,dc=com
nss_base_group          ou=Groups,dc=hoge,dc=com
nss_base_hosts          ou=Computers,dc=hoge,dc=com
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5
[root@hoge etc]# 

なんと bindpw を値を平文で登録していなかったためにバインド認証エラーが発生していた。

なにげに slapcat を実行したら下記のように binddn の後に pwdFailureTime と出力されておりやっと気がついた次第です。(ーー;)

dn: cn=proxy,dc=hoge,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: proxy
userPassword:: a1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD=
structuralObjectClass: organizationalRole
entryUUID: ********-*********-****-************
creatorsName: cn=Manager,dc=hoge,dc=com
createTimestamp: 20120508013259Z
pwdFailureTime: 20120509030611Z
pwdFailureTime: 20120509030647Z
pwdFailureTime: 20120509030723Z
pwdFailureTime: 20120509030759Z
       ・
       ・
       ・

2012年5月5日土曜日

早朝ランニングが6年目に突入...

遅ればせながらこの5月1日でランニングを開始して6年目に突入した。

電車に乗り込むために、駅で階段を駈け上がり電車に乗り込んだ時に想像以上の息苦しさに驚きました。何時の間にかにこんなに体力や肺活量が無くなったのかと..(ーー;)

そこで、一念発起して早朝ランニングを開始することにした。

それまで早朝は、今は亡き愛犬(マロン)と散歩をしていましたがランニングヘと切り替えることになった。結果的にマロンとの散歩を行えなくなった。(マロンとの散歩は娘が行った)

2006年4月からまずは、約2キロを大股早歩きから開始し、徐々にジョギングへ切り替えていき、5月1日よりランニングへ変更した。
当初は、2キロのランニングでかなりの疲労を感じ、その上ランニングの速度も遅かった。(なんと、情けない)

現在では、ランニング前に柔軟体操と腕立て伏せを40回行ってから4.5マイル(約7km)のランニングを行えるようになった。

5年以上も継続できている理由は、もともと走る事が好きであること。 また、ランニングの際はタイムを計測しランニングコースにチェックポイント(1km単位くらいから)を設けてタイムを計測して記録している。 その時の体調に応じてタイムも変化し、またランニングしながらチェックポイントでのタイムを確認しながら体調に併せて速度の上げ下げをしたり、時には辛さ仁負けて速度を落としたりと...
自分の対象や気持ちの変化も把握できるような気がします。

もっと早く走れるようになりたいところですが、毎年年齢も重ねているのでどうやら現時点以上の走る速度の向上は望めない気がする。
しかし、現状維持を続けられるように無理せず継続していくつもりです。

2012年5月4日金曜日

黄金週間に寝込む。 (>_<) 2日目

昨夜より特に改善せず。
本来なら病院へ行き薬を処方してもらいたいところだが、行き着けの大学病院は休みだが急患のみ対応なので、熱もない輩が行くとやたら小言を言われるのでやめておく。

本日も引き続き読書に耽ることにする。
「地頭力を鍛える」を再読する。
以前に読んだ時には気に留めていなかったが、吉田たかよし氏の書籍からの参照文があった。
ソコトコファンにとっては、ソコトコのホームドクターである”吉田たかよし”氏を見落としていたなんて...

久しぶりに読み返すとやはり為になる内容が書かれている。

  1. 結論から考える(仮説思考力)
  2. 全体を考える(フレームワーク思考力…俯瞰する)
  3. 単純に考える(抽象化思考力)

大きく上記の3つで構成されるが、各思考力については良く理解して実践していくためにも随時参照する書籍であることを再認識した。

また、この本の中でも記載されていたが「フェルミ推定」という言葉が日本で初めて公式な場に登場したのは『広い宇宙に地球人しか見当たらない50の理由』の本の翻訳版であるので、早速アマゾンで注文する。

2012年5月3日木曜日

黄金週間に寝込む。 (>_<)

5月に入ってから体調がイマイチであったが、5月3日についに寝込むことに...
のどや鼻の奥がヒリヒリし、胸も苦しい。幸いにも熱はないが体中が痛む(発熱の直前かも.. (;´Д`))ので大人しく寝ていることにする。

昨夜(5月2日)にアマゾンで注文した本が届いたので、寝込みながら早速読破する。
頁数も200ちょいと少ないので3〜4時間で読み終える。

自分も早朝ランニングを開始して6年目に突入している。
早朝のランニングは、体にも脳にも良い事である事が確認できた。
この本を読んで気をつけるべき事は、「空腹の状態での運動(ランニング)は避けるべき」との教訓を得た。また、運動前に食事をとる時間が無い時は、オレンジジュースやアップルジュースをコップ一杯飲むだけも良いとのアドバイスを得た。
早速、風邪が回復したら実行する事としよう。

2012年4月30日月曜日

SELinux Administrator

SELinuxの設定を行うManagement Toolがインストールしてなかったのでインストールする。

# yum install policycoreutils-gui

SELinuxの設定はこのツールがないといちいち項目を調査して設定しなければならないが、このツールがあると設定がかなり楽になります。

2012年4月23日月曜日

kernel: printk: 2 messages suppressed.

いつの間にか下記のエラーが頻発するようになっていた。

kernel: printk: 2 messages suppressed.

iptables を使っているとき、接続数が増えてくると /var/log/messages に上記のようなエラーが表示されることがあるらしい。
このエラーメッセージの意味は iptables の ip_conntrack という接続テーブルが一杯になってパケットが破棄されたという意味です。

まず、現在の ip_conntrack の最大値を確認するには、次のコマンドで確認する。

[root@hoge ~]# cat /proc/sys/net/ipv4/ip_conntrack_max
65536

次に、現在の ip_conntrack の数を確認するには、次のコマンドで確認します。

[root@hoge ~]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
25

とりあえず、明示的にip_conntrack_maxの値を設定する。
/etc/sysctl.conf に下記を追記する。

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

この設定を有効にするために、次のコマンドを実行します。

[root@hoge ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.shmmni = 4096
kernel.sem = 250        32000   100      128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.netfilter.ip_conntrack_max = 65535

とえあえず、この設定で様子をみることにする。

2012年4月6日金曜日

MacBook Pro bootcamp でスリープから復帰できない

ここ最近、MacBook Pro bootcamp でWindowsXpを起動していてスリープ状態になったら復帰できないという現象が発生していた。しかし、たまにしかスリープにならないので気にとめていなかったが少し重要な作業を途中で停止していたらスリープになってしまい、その後復帰できずに再起動というはめになってしまった。

いろいろと確認した結果、結論としてはbootcampで起動しているWindowsXpのCドライブのディスク容量が少なくなってしまっていたことが原因でした。

コンハネ(コントロールパネル)→パフォーマンスとメンテナス→電源オプション を選択し、電源オプションのプロパティの「休止状態」タブを開くとなんとディスクの空き容量が少ないために休止状態が無効になってしまっていた。

ほどなく、不要なデータを削除してCドライブの容量を増やして無事に完了した。

テストを実施するためにDBに大量のデータを復元した時に、復元元のダンプを削除し忘れていたためディスクの残容量が少なくなってしまっていたのだった。( ̄○ ̄)ア( ̄о ̄)ホ!

自宅マンションの管理組合理事会引継ぎ完了

自宅マンションの管理組合の理事長の任務が完了した。自分の担当期は決算期変更を行ったので1年6ヶ月とより半年長かった。引継ぎは定期総会(決算報告)後となるので、前期までは期末から決算報告までが7ヶ月というように遅かったので、実質任期は1年2ヶ月であった。( 自分の担当期は、決算後3ヶ月以内に決算報告を行うということを提起して引継ぎとなった。(ちょうど3ヶ月後))

引継用に担当した期間で作成した資料(理事会議事録・総会議事録・震災後のトラブル対応)を整理していると、この期間に行った事を思いだし長いようで短かったように感じるのは年のせいであろうか。

理事長は、ある意味で雑用係であり事務局であった。どこの管理組合でも管理規約は酷似(雛型を利用)していると思いますが、理事会を開催したり、総会を開催するするための招集手続きを行ったり、はたまた組合員からの直接の問い合わせ(苦情?)がきたり、始めはなんで俺に電話してくるんだ? 内容によって、業務委託している管理会社に連絡すべき事まで問い合わせされたりした。

振り返ってみると、マンションの管理規約を熟読し、第1期から自分の担当期までの理事会・総会等の資料をすべて目を通し経緯を把握しというように、結果的には自分のマンションに関する事を詳細に理解することが出来た。とても有意義が期間であったと思う。半面、マンション内にはマナーを守って頂けない方がおり、いくら注意や警告を行っても理解を得られない無法者のような方への対応は本当に面倒でイヤなものであった。
 しかし、困った時は理事長経験者や積極的にご意見やご協力をして下さった組合員(住民)の方々のおかげ何とか役目を全うできました。

自分の担当期でもやり残した事があるので、今後は出来る限り積極的に総会や集会(今までもかなり出席していたが)に出席して協力していこうと考えています。自分もみなさんに手助けして頂いたように少しでも助けをできるようにと思う次第です。

振り返っての感想でした...

2012年3月28日水曜日

samba最新版バイナリパッケージの作成

パッケージビルド環境
 OS:         CentOS 5.8
 SELinux:      Enforcing
 パッケージ作成環境
  作業:       /usr/src
  ソース展開先:   /usr/src/samba/samba-3.6.3
  パーケージ作成先: /usr/src/redhat/RPMS/i386
 言語:        LANG=ja_JP.UTF-8
 ユーザー:      rootで実行
エラー: 式中で構文解析エラー
エラー: /usr/src/redhat/SPECS/samba.spec:39: parseExpressionBoolean が -1 を返しました。
エラー: パッケージには %description がありません: samba
makerpms.sh: Done.

上記のようにエラーになってしまう。
エラーになった箇所(samba.specの39行目)の %{rhel_ver} のコマンドである lsb_releaseコマンドをインストールしてから再度実施したが、同様のエラーになった。
なので、エラーになった箇所(samba.specの39行目)をコメントアウトして再度実行する。

#%if %{rhel_ver} > 4
BuildRequires:  keyutils-libs-devel
#%else
#BuildRequires:  keyutils-devel
#%endif
CC="$CC" CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./configure \
        --prefix=%{_prefix} \
        --localstatedir=/var \
        --with-configdir=%{_sysconfdir}/samba \
        --libdir=%{_libarchdir} \
        --with-modulesdir=%{_libarchdir}/samba \
        --with-pammodulesdir=%{_libarch}/security \
        --with-lockdir=/var/lib/samba \
        --with-logfilebase=/var/log/samba \
        --with-mandir=%{_mandir} \
        --with-piddir=/var/run \
        --with-privatedir=%{_sysconfdir}/samba \
        --with-sambabook=%{_datadir}/swat/using_samba \
        --with-swatdir=%{_datadir}/swat \
        --enable-cups \
        --with-acl-support \
        --with-ads \
        --with-automount \
        --with-fhs \
        --with-pam_smbpass \
        --with-libsmbclient \
        --with-libsmbsharemodes \
        --with-libtalloc \
        --with-libtdb \
        --without-smbwrapper \
        --with-pam \
        --with-quotas \
        --with-shared-modules=idmap_rid,idmap_ad,idmap_hash,idmap_adex \
        --with-syslog \
        --with-utmp \
        --with-dnsupdate \
        --with-ldap \
        --with-ldapsam \
        --with-winbind

上記を修正後に makerpms.sh を再実行する。
作成されたパッケージ

[root@ora02 i386]# pwd
/usr/src/redhat/RPMS/i386
[root@ora02 i386]# ls -il
合計 113496
1049885 -rw-rw-r-- 1 root root 12008925  3月 16 05:47 samba-3.6.3-1.C58.i386.rpm
1049887 -rw-rw-r-- 1 root root 17453135  3月 16 05:48 samba-client-3.6.3-1.C58.i386.rpm
1049888 -rw-rw-r-- 1 root root  8943149  3月 16 05:48 samba-common-3.6.3-1.C58.i386.rpm
1049894 -rw-rw-r-- 1 root root 66944982  3月 16 05:52 samba-debuginfo-3.6.3-1.C58.i386.rpm
1049892 -rw-rw-r-- 1 root root  8578764  3月 16 05:48 samba-doc-3.6.3-1.C58.i386.rpm
1049891 -rw-rw-r-- 1 root root  2106771  3月 16 05:48 samba-swat-3.6.3-1.C58.i386.rpm
[root@ora02 i386]# 

(1). 早速インストール

[root@hoge i386]# rpm -Uvh samba-3.6.3-1.C58.i386.rpm samba-common-3.6.3-1.C58.i386.rpm samba-client-3.6.3-1.C58.i386.rpm samba-swat-3.6.3-1.C58.i386.rpm samba-doc-3.6.3-1.C58.i386.rpm samba-debuginfo-3.6.3-1.C58.i386.rpm
準備中...                ########################################### [100%]
        ファイル /usr/lib/libtdb.so.1.2.9 (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libtdb-1.2.9-10.el5_0.wing.i686 からのファイルと競合しています。
        ファイル /usr/lib/libtalloc.so.2 (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libtalloc-2.0.1-11.el5.i386 からのファイルと競合しています。
        ファイル /usr/lib/libsmbclient.so.0 (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libsmbclient-3.0.33-3.38.el5_8.i386 からのファイルと競合しています。
        ファイル /usr/include/libsmbclient.h (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libsmbclient-devel-3.0.33-3.38.el5_8.i386 からのファイルと競合しています。
        ファイル /usr/share/man/man7/libsmbclient.7.gz (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libsmbclient-devel-3.0.33-3.38.el5_8.i386 からのファイルと競合しています。
[root@hoge i386]# 

(2). talloc-2.0.7 をインストール

ソース(talloc-2.0.7.tar.gz をダウンロードして展開)からコンパイルしてインストールする。
また、古い

(3). 再度SAMBAをインストール

[root@hoge i386]# rpm -Uvh samba-3.6.3-1.C58.i386.rpm samba-common-3.6.3-1.C58.i386.rpm samba-client-3.6.3-1.C58.i386.rpm samba-swat-3.6.3-1.C58.i386.rpm samba-doc-3.6.3-1.C58.i386.rpm samba-debuginfo-3.6.3-1.C58.i386.rpm
準備中...                ########################################### [100%]
        ファイル /usr/lib/libsmbclient.so.0 (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libsmbclient-3.0.33-3.38.el5_8.i386 からのファイルと競合しています。
        ファイル /usr/include/libsmbclient.h (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libsmbclient-devel-3.0.33-3.38.el5_8.i386 からのファイルと競合しています。
        ファイル /usr/share/man/man7/libsmbclient.7.gz (パッケージ samba-common-3.6.3-1.C58.i386 から) は、パッケージ libsmbclient-devel-3.0.33-3.38.el5_8.i386 からのファイルと競合しています。

(4). 競合パッケージをYum Extender からアンインストールする。

libtdb.so.1.2.9をアンインストール
libtalloc-2.0.1-11.el5.i386をアンインストール

libsmbclient-3.0.33-3.38.el5_8.i386をアンインストール
libsmbclient-devel-3.0.33-3.38.el5_8.i386をアンインストール
※上記に依存するファイルが多い
gnome-vfs2-smb-2.16.2-8.el5
mencoder-1.0-0.47.svn.20100803.el5.rf
mplayer-1.0-0.47.svn.20100803.el5.rf
mplayer-skins-1.8-1-nodist.rt
mplayer-tools-1.0-0.47.vn.20100803.el5.rf
mplayerplug-in03.55-1.el5.rf
nautilus-2.16.2-10.el5
nautilus-cd-burner-devel2.16.0-7.el5
nautilus-devel-2.16.2-10.el5

(5). 再度インストール
※競合しているパッケージをアンインストールしたら再度インストールを実施する。

[root@hoge i386]# rpm -Uvh samba-common-3.6.3-1.C58.i386.rpm samba-client-3.6.3-1.C58.i386.rpm samba-3.6.3-1.C58.i386.rpm samba-swat-3.6.3-1.C58.i386.rpm samba-debuginfo-3.6.3-1.C58.i386.rpm samba-doc-3.6.3-1.C58.i386.rpm
準備中...                ########################################### [100%]
   1:samba-common           ########################################### [ 17%]
   2:samba                  ########################################### [ 33%]
   3:samba-client           ########################################### [ 50%]
   4:samba-swat             ########################################### [ 67%]
   5:samba-debuginfo        ########################################### [ 83%]
   6:samba-doc              ########################################### [100%]
[root@hoge i386]# 

(6). libsmbclient、libsmbclient-develをインストール

※(4)で削除したが再度インストールを実施する。
トランザクション確認エラー:   file /usr/include/libsmbclient.h from install of libsmbclient-devel-3.0.33-3.38.el5_8.i386 conflicts with file from package samba-common-3.6.3-1.C58.i386
  file /usr/share/man/man7/libsmbclient.7.gz from install of libsmbclient-devel-3.0.33-3.38.el5_8.i386 conflicts with file from package samba-common-3.6.3-1.C58.i386
  file /usr/lib/libsmbclient.so.0 from install of libsmbclient-3.0.33-3.38.el5_8.i386 conflicts with file from package samba-common-3.6.3-1.C58.i386
上記のようなエラーになったので、インストールしないことにする。
どうやら 3.6.3 では、libsmbclient,libsmbclient-devel は必要ないのかも?

(7). (4)でlibsmbclientに依存していたために削除したパッケージをインストールする。

04:34:55 : Installed:
04:34:55 :  --> gnome-vfs2-smb-2.16.2-8.el5.i386
04:34:55 :  --> mencoder-1.0-0.47.svn20100703.el5.rf.i386
04:34:55 :  --> mplayer-1.0-0.47.svn20100703.el5.rf.i386
04:34:55 :  --> mplayer-skins-1.8-1.nodist.rf.noarch
04:34:55 :  --> mplayer-tools-1.0-0.47.svn20100703.el5.rf.i386
04:34:55 :  --> mplayerplug-in-3.55-1.el5.rf.i386
04:34:55 :  --> nautilus-2.16.2-10.el5.i386
04:34:55 :  --> nautilus-cd-burner-devel-2.16.0-7.el5.i386
04:34:55 :  --> nautilus-devel-2.16.2-10.el5.i386

2012年3月27日火曜日

マルチパートzipの解凍について

マルチパートZIPを解凍する機会があったので明記する。

[hoge@hoge ~]$ ls *.z??
Abcdefghij.z01
Abcdefghij.z02
Abcdefghij.z03
Abcdefghij.z04
Abcdefghij.z05
Abcdefghij.z06
Abcdefghij.z07
Abcdefghij.z08
Abcdefghij.z09
Abcdefghij.zip
[hoge@hoge ~]$ cat *.z?? > avi_cat.zip
できあがったcat.zipを解凍する。
ファイルを上記の順にcatできていることがポイント? かな?

HTMLタグの忘れがちが規則(その1)

P要素には、インライン要素と文字しか入れることが出来ない。

この事を忘れてしまい、ついつい<p></p>を入れ子にしていて思ったように表示されず「なぜだ..(?_?)」となってしまう。

2012年3月26日月曜日

VNCサーバーの再設定

CENTOS上でいろいろなソフトの設定を行っていたら、いつのまにかクライアントPCからCENTOSマシンへのVNCでの接続が出来なくなっていた。

[root@hoge ~]# service vncserver status
Xvnc は停止しています
[root@hoge ~]# service vncserver start
VNC サーバー を起動中: no displays configured              [  OK  ]
[root@hoge ~]# service vncserver status
Xvnc は停止しています
「サービスの設定」で確認してみてもやはり停止している。
しかし、特に設定を変更した訳ではないので今までと同じような感じもするが...
とりあえず、設定を見直し確認することにする。

VNCをxinetd経由で動作させる設定 

改めて設定方法を順に確認していく。
※vnc-serverが既にインストール済み

[root@hoge ~]# yum install vnc-server
xinetdの設定を行う。

/etc/xinetd.d/下に起動ファイルを作る
/etc/xined.d/vncserver

service vnc
{
   socket_type     = stream
   wait            = no
   user            = nobody
   server          = /usr/bin/Xvnc
   server_args     = -inetd -query localhost -once -geometry 1024x640 -depth 16 -SecurityTypes None
   log_on_failure  += USERID
   disable         = no
}
xinetdで待ち受けるポート番号を指定する。

/etc/servicesを編集する

# Local services
vnc             5901/tcp                        # VNC SERVER
XDM認証を有効にする。

/etc/gdm/custom.confを編集します。
[xdmcp]セクションに「Enable=true」を追加します。

[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter

[security]

[xdmcp]
Enable=true

[gui]

[greeter]
DefaultRemoteWelcome=false

[chooser]

[debug]

GnomeデスクトップのGUI画面からだと「システム」→「管理」→「ログイン画面」

ここで設定した内容が/etc/gdm/custom.confと同一。

コマンドからGDM(GnomeDisplayManager)を再起動します。

# kill -HUP `cat /var/run/gdm.pid`

 ↓(下記と同意)

# cat /var/run/gdm.pid
 3350
# kill -HUP 3350

コマンド実行後、数秒するとGDMが再起動します。
※gdmの再起動なので、当然ながら現状のgdmの画面が消失します。(数秒後にログイン画面が表示されます。)

VNCの接続を許可する範囲を設定

/etc/hosts.allow で接続を許可するネットワークを指定する。

#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
Xvnc: 127.0.0.1 192.168.1. 192.168.2.
再起動を行い、設定を確認する。

設定変更を行ったので、各デーモンを再起動する。

[root@hoge etc]# service xinetd restart
xinetd を停止中:                                           [  OK  ]
xinetd を起動中:                                           [  OK  ]
[root@hoge etc]# service vncserver restart
VNC サーバー を停止中:                                     [  OK  ]
VNC サーバー を起動中: no displays configured              [  OK  ]

許可されるマシンからリモート接続を実施して確認する。

上記のようにリモート接続確認をする。

2012年3月25日日曜日

GnuPGのコマンド

署名の認証以外ではほとんど使用することはないが、いざという時に備えメモする。

キーサインについてより詳細に理解するには、キーサインパーティに参加するのもよいかも!

鍵の作成とキーサーバへの公開鍵のアップロード。

[hoge@hoge ~]$ gpg --gen-key
[hoge@hoge ~]$ gpg --keyserver pgp.mit.edu --send-keys 鍵のID
鍵の一覧を表示。
[hoge@hoge ~]$ gpg --list-keys
公開鍵のインポート
[hoge@hoge ~]$ gpg --keyserver pgp.mit.edu --recv-keys 鍵のID
公開鍵と秘密鍵をファイルにエクスポート。
[hoge@hoge ~]$ gpg -a --export 鍵のID > pubkey.asc
[hoge@hoge ~]$ gpg -a --export-secret-key 鍵のID > seckey.asc
エクスポートしたファイルからインポートする場合はこんな感じ。
[hoge@hoge ~]$ gpg --import ファイル名
秘密鍵と公開鍵を削除。
[hoge@hoge ~]$ gpg --delete-secret-keys 鍵のID
[hoge@hoge ~]$ gpg --delete-keys 鍵のID
キーサーバーに登録した鍵の削除
[hoge@hoge ~]$ gpg --output revoke.asc --gen-revoke 鍵のID
[hoge@hoge ~]$ gpg --import revoke.asc
[hoge@hoge ~]$ gpg --keyserver pgp.mit.edu --send-keys 鍵のID

主な鍵サーバ一覧

http://pgp.nic.ad.jp/
http://pgp.mit.edu/
※参照サイト
http://d.hatena.ne.jp/takezoe/20100212/p2
http://sites.google.com/site/kspjapanese/create-gpgkey
http://asaasa.tk/wiki/?Zaurus/Apps/GnuPG/Options

2012年3月24日土曜日

PGP署名の確認

パッケージをダウンロードした時に、ダウンロードしてパッケージが改竄などされていないかを確認するためにPGP署名の確認をする。
talloc-2.0.7のパッケージをダウンロードした時の対応を明記します。
ftp://samba.org/pub/ から下記をダウンロードします。

talloc-2.0.7.tar.gz
talloc-2.0.7.tar.asc
ダウンロードした talloc-2.0.7.tar.gz を解凍する。
解凍後にPGP署名をチェックする。
[user@hoge ~]$ gunzip samba-3.0.37.tar.gz
[user@hoge ~]$ gpg --verify talloc-2.0.7.tar.asc
gpg: 2011年09月16日 16時39分36秒 JSTにRSA鍵ID 13084025で施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません
[user@hoge ~]$ 
公開鍵をインポートします。
[user@hoge ~]$ gpg --keyserver pgp.mit.edu --recv-key 13084025
gpg: 鍵13084025をhkpからサーバーpgp.mit.eduに要求
gpg: 鍵13084025: 公開鍵“Samba Library Distribution Key ”を読み込みました
gpg: 絶対的に信用する鍵が見つかりません
gpg:     処理数の合計: 1
gpg:           読込み: 1  (RSA: 1)
[user@hoge ~]$ 
再度署名の認証を行います。
[user@hoge ~]$ gpg --verify talloc-2.0.7.tar.asc
gpg: 2011年09月16日 16時39分36秒 JSTにRSA鍵ID 13084025で施された署名
gpg: “Samba Library Distribution Key ”からの正しい署名
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: 9147 A339 7195 18EE 9011  BCB5 4793 9161 1308 4025
[user@hoge ~]$ 
警告が表示されていますが、正しい署名であると認証されました。

鍵の削除について

鍵の削除は簡単に行えます。
下記のコマンドで鍵を削除できます。

gpg --delete-key [検索語句]

例:
gpg --delete-key Hoge
gpg --delete-key hogehoge@example.com
検索語句には、鍵ID、ユーザーID、ユーザー名、コメント、メールアドレスやその一部が利用できます。
今回の talloc で試したのが下記の通りです。
※メールアドレスで指定してみました。
[user@hoge ~]$ gpg --delete-key samba-bugs@samba.org
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


pub  2048R/13084025 2011-01-12 Samba Library Distribution Key 

この鍵を鍵輪から削除しますか? (y/N) y

上記で鍵が削除されました。

2012年3月22日木曜日

freshclamがエラー

またもや、起動時に下記のエラーが出力されていた。
何度も発生しているのですが、面倒だったのでパッケージを再インストールで面倒を逃れていたが、そろそろ対応しないと...

LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days.  ***
LibClamAV Warning: ***        Please update it IMMEDIATELY!       ***
LibClamAV Warning: **************************************************

とりあえず、今までも何度か試した事がある方法を記録(実施)します。
ウィルスDBが古いというので、お決まりの freshclma を実行する。
[root@hoge ~]# freshclam
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
ログが追加できない? ログファイルを確認してみる
[root@hoge clamav]# ls -il
合計 352
360450 -rw-r--r-- 1 clamav clamav 29524  3月 22 03:52 clamd.log
360460 -rw-r--r-- 1 clam   clam   48441  3月 17 04:32 clamd.log.1
360458 -rw-r--r-- 1 clam   clam   63309  3月 11 14:17 clamd.log.2
360456 -rw-r--r-- 1 clam   clam   60929  3月  4 05:35 clamd.log.3
360454 -rw-r--r-- 1 clam   clam   63473  2月 26 04:02 clamd.log.4
360452 -rw-r--r-- 1 clamav clamav     0  3月 18 09:47 freshclam.log
360451 -rw-r--r-- 1 clam   clam    5922  3月 18 09:47 freshclam.log.1
360459 -rw-r--r-- 1 clam   clam    6134  3月 11 14:17 freshclam.log.2
360457 -rw-r--r-- 1 clam   clam    6791  3月  4 05:35 freshclam.log.3
360455 -rw-r--r-- 1 clam   clam    5754  2月 26 04:02 freshclam.log.4
[root@hoge clamav]# 
ログがアーカイブされるとユーザーが clamav から clam に変わっている。なんでなの?

ログアーカイブファイルのオーナーとグループを clamav に変更して freshclam を実行してみる。

[root@hoge clamav]# chown clamav:clamav *
[root@hoge clamav]# ls -il
合計 352
360450 -rw-r--r-- 1 clamav clamav 29524  3月 22 03:52 clamd.log
360460 -rw-r--r-- 1 clamav clamav 48441  3月 17 04:32 clamd.log.1
360458 -rw-r--r-- 1 clamav clamav 63309  3月 11 14:17 clamd.log.2
360456 -rw-r--r-- 1 clamav clamav 60929  3月  4 05:35 clamd.log.3
360454 -rw-r--r-- 1 clamav clamav 63473  2月 26 04:02 clamd.log.4
360452 -rw-r--r-- 1 clamav clamav     0  3月 18 09:47 freshclam.log
360451 -rw-r--r-- 1 clamav clamav  5922  3月 18 09:47 freshclam.log.1
360459 -rw-r--r-- 1 clamav clamav  6134  3月 11 14:17 freshclam.log.2
360457 -rw-r--r-- 1 clamav clamav  6791  3月  4 05:35 freshclam.log.3
360455 -rw-r--r-- 1 clamav clamav  5754  2月 26 04:02 freshclam.log.4
[root@hoge ~]# freshclam
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
次に、ログをすべて削除してから freshclam を実行する。
[root@ora02 clamav]# rm -f *
[root@ora02 clamav]# ls
[root@ora02 ~]# freshclam
ClamAV update process started at Thu Mar 22 04:48:54 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Downloading daily-14651.cdiff [100%]
Downloading daily-14652.cdiff [100%]
Downloading daily-14653.cdiff [100%]
Downloading daily-14654.cdiff [100%]
Downloading daily-14655.cdiff [100%]
Downloading daily-14656.cdiff [100%]
Downloading daily-14657.cdiff [100%]
Downloading daily-14658.cdiff [100%]
Downloading daily-14659.cdiff [100%]
Downloading daily-14660.cdiff [100%]
Downloading daily-14661.cdiff [100%]
Downloading daily-14662.cdiff [100%]
Downloading daily-14663.cdiff [100%]
Downloading daily-14664.cdiff [100%]
Downloading daily-14665.cdiff [100%]
Downloading daily-14666.cdiff [100%]
Downloading daily-14667.cdiff [100%]
Downloading daily-14668.cdiff [100%]
Downloading daily-14669.cdiff [100%]
Downloading daily-14670.cdiff [100%]
Downloading daily-14671.cdiff [100%]
Downloading daily-14672.cdiff [100%]
Downloading daily-14673.cdiff [100%]
Downloading daily-14674.cdiff [100%]
Downloading daily-14675.cdiff [100%]
Downloading daily-14676.cdiff [100%]
Downloading daily-14677.cdiff [100%]
Downloading daily-14678.cdiff [100%]
Downloading daily-14679.cdiff [100%]
Downloading daily-14680.cdiff [100%]
Downloading daily-14681.cdiff [100%]
Downloading daily-14682.cdiff [100%]
daily.cld updated (version: 14682, sigs: 134958, f-level: 63, builder: jesler)
Downloading bytecode-145.cdiff [100%]
Downloading bytecode-146.cdiff [100%]
Downloading bytecode-147.cdiff [100%]
Downloading bytecode-148.cdiff [100%]
Downloading bytecode-149.cdiff [100%]
Downloading bytecode-150.cdiff [100%]
Downloading bytecode-151.cdiff [100%]
Downloading bytecode-152.cdiff [100%]
Downloading bytecode-153.cdiff [100%]
Downloading bytecode-154.cdiff [100%]
Downloading bytecode-155.cdiff [100%]
Downloading bytecode-156.cdiff [100%]
Downloading bytecode-157.cdiff [100%]
Downloading bytecode-158.cdiff [100%]
Downloading bytecode-159.cdiff [100%]
Downloading bytecode-160.cdiff [100%]
Downloading bytecode-161.cdiff [100%]
Downloading bytecode-162.cdiff [100%]
Downloading bytecode-163.cdiff [100%]
Downloading bytecode-164.cdiff [100%]
Downloading bytecode-165.cdiff [100%]
Downloading bytecode-166.cdiff [100%]
Downloading bytecode-167.cdiff [100%]
Downloading bytecode-168.cdiff [100%]
bytecode.cld updated (version: 168, sigs: 38, f-level: 63, builder: edwin)
Database updated (1179383 signatures) from db.jp.clamav.net (IP: 203.178.137.175)
WARNING: Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.sock
connect(): No such file or directory
[root@ora02 ~]# freshclam
ClamAV update process started at Thu Mar 22 04:53:37 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cld is up to date (version: 14682, sigs: 134958, f-level: 63, builder: jesler)
bytecode.cld is up to date (version: 168, sigs: 38, f-level: 63, builder: edwin)
[root@hoge ~]# 

2012年3月19日月曜日

LinuxのFirefoxでFlashプラグインが使えなくなった時の対応

FirefoxやFlashを更新するとLinuxのFirefoxでFlashプレイヤーが使えなくなる。 どうやら、プラグインの設定が無効化されてしまっているためのようだ。以前にも似たような現象で更新を行ったrootユーザーでは問題なくFlashプラグインが動作するが、他のユーザーではFlashプラグインが使えないということがあった。

今回の現象は、以前とは異なりFirefoxのプラグインの設定ファイルである pluginreg.dat でflashの情報が[INVALID]に記載されていた。

mplayerplug-in-dvx.so:$
/usr/lib/mozilla/plugins/mplayerplug-in-dvx.so:$
:$
1215114783000:1:5:$
mplayerplug-in 3.55

Video Player Plug-in for QuickTime, RealPlayer and Windows Media Player streams using MPlayer
JavaScript Enabled and Using GTK2 Widgets
:$ DivX Browser Plug-In:$ 2 0:video/divx:DivX Media Format:divx:$ 1:video/vnd.divx:DivX Media Format:divx:$ [INVALID] /usr/lib/flash-plugin/libflashplayer.so:$ 1330401423000:$

[INVALID]とその上の空行を削除してからFireFoxを起動するとFlashプラグインが利用できるようになる。各ユーザ毎にこの作業を実施する。 変更後のpluginreg.dat

mplayerplug-in-dvx.so:$
/usr/lib/mozilla/plugins/mplayerplug-in-dvx.so:$
:$
1215114783000:1:5:$
mplayerplug-in 3.55

Video Player Plug-in for QuickTime, RealPlayer and Windows Media Player streams using MPlayer
JavaScript Enabled and Using GTK2 Widgets
:$ DivX Browser Plug-In:$ 2 0:video/divx:DivX Media Format:divx:$ 1:video/vnd.divx:DivX Media Format:divx:$ /usr/lib/flash-plugin/libflashplayer.so:$ 1330401423000:$
しかし、いつもながら手間を掛けさせてくれますね。(←_←)

2012年3月17日土曜日

RPMパッケージの命名規則

(パッケージ名)-(バージョン)-(リリース番号).(アーキテクチャ).rpm
項目名意味
パッケージ名ソフトウェア名の事です。httpd,postgresql,opensslとか。
バージョンそのソフトウェアのバージョン。
リリース番号そのソフトウェアのそのバージョンの管理番号。公開順。
アーキテクチャ コンパイルしたマシンのアーキテクチャ名。同じソフトウェアの同じバージョンでもココを自分のサーバと同じものを選ばないとインストールできない時があります。
アーキテクチャで表示される内容についての解説。
アーキテクチャ名備考
i386i386およびその互換CPU。
i486そのソフトウェアのバージョン。
i586
i686Pentium Pro、Pentium II、Pentium III、Pentium4、Celeronなど。
k6K6、K6-2、K6-III。
athlonAthlon、Athlon MP、Athlon XP。
x86_64Opteron、Athlon64、Xeon(EM64T)。
srcソースパッケージ。自分で rpm パッケージを作ったりする際(rebuild)に必要。
noarch機種(CPU)に依存しないパッケージ。
ppcPower PC。
alphaalphaチップ搭載コンピュータ。
sparcSUN SPARC。
マシン情報を確認するには...
引数説明
-m, --machineマシン (ハードウェア) のタイプを表示する。
-n, --nodenameマシンのネットワークノードのホスト名を表示する。
-r, --releaseOS のリリースを表示する。
-s, --sysnameOS の名称を表示する。
-vOS のバージョンを表示する。
-a, --all以上の情報すべてを表示する。
--help標準出力に使用方法のメッセージを出力して正常終了する。
--version標準出力に「 uname 」コマンドのバージョン情報を出力して正常終了する。
[hoge@localhost ~]$ uname -a
Linux localhost 2.6.18-308.1.1.el5xen #1 SMP Wed Mar 7 05:38:01 EST 2012 i686 i686 i386 GNU/Linux

2012年3月15日木曜日

Windows共有フォルダをマウントする

Windows 共有フォルダーを起動時にマウントする。
※fstabに下記のように記載する。

//マウント相手のIPアドレス/マウントしたいフォルダ名 /mnt/samba/ smbfs username=相手先のユーザー名(sambaユーザ名),password=相手先ユーザーのパスワード,gid=相手先ユーザーのグループID,uid=相手先ユーザーのユーザーID,codepage=cp932,iocharset=utf8,rw,defaults 0 0
※username と password は,マウント先が,Windowsの場合は「Windowsのログインユーザ」,マウント先がLinuxの時は「Sambaのユーザ」のものです。

※接続先がLinuxで,UTF8の場合は,「codepage=cp932,iocharset=utf8,」不要です。

【接続先がWindows】
//192.168.0.5/share /mnt/samba/ smbfs username=winuser,password=hoge,codepage=cp932,iocharset=utf8,rw,defaults 0 0
【接続先がLinux】
//192.168.0.5/share /mnt/samba/ smbfs username=smbuser,password=hoge,uid=1000,gid=1000,rw,defaults 0 0
mountコマンドでマウントする。
mount -t cifs -o user=******,password=****** //example.com/backup /mnt/backup

ソースRPMパッケージからバイナリRPMパッケージを作成

RPMパッケージには、コンパイル前のソースコードが格納されているソースRPMパッケージと、アーキテクチャごとにコンパイル済みで、インストール後すぐに利用できるバイナリRPMパッケージがあります。

ソースRPMパッケージのファイル名は「~.src.rpm」となっています。
バイナリRPMパッケージのファイル名は「~.i686.rpm」「~.x86_64.rpm」のように、アーキテクチャを表す表記が含まれる。

ソースパッケージからバイナリパッケージの作成方法。
treeパッケージで実施してみる。
下記のようなフォルダ構成を作成して、SOURCEフォルダに取得したソースRPMパッケージを配置します。

.
├─ BUILD
├─ BUILDROOT
├─ RPMS
├─ SOURCES
│  └─ tree-1.6.0-4.fc17.src.rpm
├─ SPECS
└─ SRPMS
次に rpmbuild --rebuild コマンドを使ってソースRPMパッケージからバイナリRPMパッケージを作成します。すると、RPMS/<アーキテクチャ>ディレクトリ以下に、バイナリRPMパッケージが作成されます。
$ cd SOURCES
$ rpmbuild --rebuild tree-1.6.0-4.fc17.src.rpm

 (中略)

 $ ls ../RPMS/i686/ tree-1.6.0-4.el6.i686.rpm tree-debuginfo-1.6.0-4.el6.i686.rpm 
※RPMのビルドはrpmbuildコマンドが使用できなければなりません. rpmbuildはパッケージ「rpm-build」をインストールします。

CENTOS5にapt-getをインストールする。

apt-getでのパッケージインストールを取得するために、CENTOS5にapt-getをインストールする。

  1. apt-getをインストールする。
    [root@hoge ~]# yum -y install apt
    yum -y install apt
    [root@hoge ~]# yum -y install apt
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: ftp.riken.jp
     * extras: ftp.riken.jp
     * rpmforge: fr2.rpmfind.net
     * updates: ftp.riken.jp
    adobe-linux-i386                                         |  951 B     00:00     
    base                                                     | 1.1 kB     00:00     
    dag                                                      | 1.1 kB     00:00     
    extras                                                   | 2.1 kB     00:00     
    rpmforge                                                 | 1.1 kB     00:00     
    updates                                                  | 1.9 kB     00:00     
    Setting up Install Process
    Resolving Dependencies
    There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
    --> Running transaction check
    ---> Package apt.i386 0:0.5.15lorg3.94a-5.el5.rf set to be updated
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package     Arch         Version                             Repository   Size
    ================================================================================
    Installing:
     apt         i386         0.5.15lorg3.94a-5.el5.rf            dag         2.8 M
    
    Transaction Summary
    ================================================================================
    Install       1 Package(s)
    Upgrade       0 Package(s)
    
    Total download size: 2.8 M
    Downloading Packages:
    apt-0.5.15lorg3.94a-5.el5.rf.i386.rpm                    | 2.8 MB     00:04     
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing     : apt                                                      1/1 
    
    Installed:
      apt.i386 0:0.5.15lorg3.94a-5.el5.rf                                           
    
    Complete!
    [root@hoge ~]# 
    
  2. apt-getを最新版に更新する
    [root@hoge ~]# apt-get update
    [root@hoge ~]# apt-get update
    取得:1 http://apt.sw.be redhat/el5/en/i386/rpmforge repomd.xml [1095B]
    1095B を 1s 秒で取得しました (729B/s)
    取得:1 http://apt.sw.be redhat/el5/en/i386/rpmforge/ primary.xml [4291kB]
    取得:2 http://apt.sw.be redhat/el5/en/i386/rpmforge/ filelists.xml [5083kB]    
    9374kB を 35s 秒で取得しました (267kB/s)                                       
    パッケージリストを読みこんでいます... 完了
    依存情報ツリーを作成しています... 完了        
    [root@hoge ~]# 
    

2012年3月8日木曜日

LDAPの初期化(再設定)

  1. ldap(slapd)を停止する。
  2. [root@hoge ~]# service ldap stop
    slapd を停止中:                        [ OK ]
    [root@hoge ~]#
    (レプリケーションの場合は、スレーブを先に停止させる。)

  3. slapd.conf等の必要編集を行う。slaptestも実施しておく

  4. ldapデータベースを物理的に削除する。
  5. /var/lib/ldap フォルダの中の DB_CONFIG 以外を削除する。
    ※こちらの設定では、/var/lib/ldap にldapデータベースが登録される設定のため。
      /etc/openldap/slapd.conf で指定

    [root@hoge ldap]# ls -il
    合計 1208
    131133 -rw-r----- 1 root root      921  1月 24 08:14 DB_CONFIG
    131116 -rw------- 1 ldap ldap    24576  3月  7 10:21 __db.001
    131117 -rw------- 1 ldap ldap   278528  3月  7 10:21 __db.002
    131118 -rw------- 1 ldap ldap   270336  3月  7 10:21 __db.003
    131119 -rw------- 1 ldap ldap    98304  3月  7 10:21 __db.004
    131120 -rw------- 1 ldap ldap   352256  3月  7 10:21 __db.005
    131121 -rw------- 1 ldap ldap    24576  3月  7 10:21 __db.006
    131082 -rw-r--r-- 1 ldap ldap     4096  3月  7 10:21 alock
    131126 -rw------- 1 ldap ldap     8192  1月 28 20:48 cn.bdb
    131124 -rw------- 1 ldap ldap     8192  1月 28 20:48 dn2id.bdb
    131132 -rw------- 1 ldap ldap     8192  1月 28 20:48 gidNumber.bdb
    131123 -rw------- 1 ldap ldap    32768  1月 31 20:54 id2entry.bdb
    131122 -rw------- 1 ldap ldap 10485760  3月  7 10:21 log.0000000001
    131130 -rw------- 1 ldap ldap     8192  1月 22 20:00 loginShell.bdb
    131129 -rw------- 1 ldap ldap     8192  1月 28 20:48 memberUid.bdb
    131125 -rw------- 1 ldap ldap     8192  1月 28 20:48 objectClass.bdb
    131127 -rw------- 1 ldap ldap     8192  1月 24 21:44 ou.bdb
    131128 -rw------- 1 ldap ldap     8192  1月 22 20:00 uid.bdb
    131131 -rw------- 1 ldap ldap     8192  1月 22 20:00 uidNumber.bdb
    
    削除後の内容
    [root@hoge ldap]# ls -il
    合計 8
    131133 -rw-r----- 1 root root 921  1月 24 08:14 DB_CONFIG
    [root@hoge ldap]# 
    

  6. ldap(slapd)を起動する。
  7. [root@hoge ~]# service ldap start
    slapd の設定ファイルをチェック中:  config file testing succeeded
                                                           [  OK  ]
    slapd を起動中:                                            [  OK  ]
    [root@hoge ~]# 
    
  8. 初期情報を登録
  9. 基本データ(base.ldif)
    dn: dc=example,dc=com
    objectClass: dcObject
    objectClass: organization
    dc: example
    o: example
    
    dn: ou=People,dc=example,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Group,dc=example,dc=com
    objectClass: organizationalUnit
    ou: Group
    
    dn: ou=Hosts,dc=example,dc=com
    objectClass: organizationalUnit
    ou: Hosts
    ldapaddコマンドでLDIFファイルの内容を登録します。
    
    # ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f base.ldif 
    Enter LDAP Password:
    adding new entry "dc=horisawa,dc=info"
    
    adding new entry "cn=Manager,dc=horisawa,dc=info"
    
    adding new entry "ou=People,dc=horisawa,dc=info"
    
    adding new entry "ou=Group,dc=horisawa,dc=info"
    
    adding new entry "ou=Hosts,dc=horisawa,dc=info"
    
    
    ユーザ/グループの登録(既存unixアカウントをそのまま移行する)
    • /etc/passwdのアカウントをLDAPへ登録する。
    • /etc/passwdから一般ユーザのみを抽出するようuidが500番台を抽出。
      [root@hoge openldap]# grep :5[0-9][0-9] /etc/passwd > users-list.txt
      
      /migrate_passwd.pl を利用してLDIFファイルを作成。
      [root@hoge openldap]# /usr/share/openldap/migration/migrate_passwd.pl users-list.txt > users.ldif
      
      ldapaddコマンドでLDIFファイルの内容を登録します。
      
      # ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f user.ldif 
      Enter LDAP Password:
      adding new entry "uid=hoge01,ou=People,dc=example,dc=com"
      
      adding new entry "uid=hoge02,ou=People,dc=example,dc=com"
      
      
    • /etc/groupのグループをLDAPへ登録する
    • /etc/groupから一般グループのみを抽出するようgidが500番台を抽出。
      [root@hoge openldap]# grep :5[0-9][0-9] /etc/group > groups-list.txt
      
      /migrate_passwd.pl を利用してLDIFファイルを作成。
      [root@hoge openldap]# /usr/share/openldap/migration/migrate_group.pl groups-list.txt > groups.ldif
      
      ldapaddコマンドでLDIFファイルの内容を登録します。
      
      # ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f user.ldif 
      Enter LDAP Password:
      adding new entry "cn=hoge01,ou=Group,dc=example,dc=com"
      
      adding new entry "cn=hoge02,ou=Group,dc=example,dc=com"
      
      adding new entry "cn=hoge03,ou=Group,dc=example,dc=com"
      
      adding new entry "cn=hoge04,ou=Group,dc=example,dc=com"
      
      

smbldap-toolsを利用して登録を行う。

基本データ(base.ldif)を登録した後に、smbldap-toolsを利用してユーザ・グループおよび管理者情報の登録を行う。
事前にsambaが正しく設定されているものとして下記にコマンドを実行する。

基本データ(base.ldif)の登録
[root@hoge ldif]# ldapadd -x -D "cn=Manager,dc=horisawa,dc=info" -W -f base.ldif
Enter LDAP Password: 
adding new entry "dc=horisawa,dc=info"

adding new entry "cn=Manager,dc=example,dc=com"

adding new entry "ou=Users,dc=example,dc=com"

adding new entry "ou=Groups,dc=example,dc=com"

adding new entry "ou=Computers,dc=example,dc=com"

[root@hoge ldif]# 

グループ(groups.ldif)の登録
[root@hoge ldif]# ldapadd -x -D "cn=Manager,dc=horisawa,dc=info" -W -f groups.ldif

ユーザー(users.ldif)の登録
[root@hoge ldif]# ldapadd -x -D "cn=Manager,dc=horisawa,dc=info" -W -f users.ldif
smbldap-toolsでデータを登録する。
[root@hoge ~]# smbldap-populate -a Administrator -b Guest
Populating LDAP directory for domain EXAMPLE (S-1-5-21-2725434548-1602857623-2035637331)
(using builtin directory structure)

entry dc=example,dc=com already exist. 
entry ou=Users,dc=example,dc=com already exist. 
entry ou=Groups,dc=example,dc=com already exist. 
entry ou=Computers,dc=example,dc=com already exist. 
adding new entry: ou=Idmap,dc=example,dc=com
adding new entry: uid=Administrator,ou=Users,dc=example,dc=com
adding new entry: uid=Guest,ou=Users,dc=example,dc=com
adding new entry: cn=Domain Admins,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Users,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Guests,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=example,dc=com
adding new entry: cn=Administrators,ou=Groups,dc=example,dc=com
adding new entry: cn=Account Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Print Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Backup Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Replicators,ou=Groups,dc=example,dc=com
adding new entry: sambaDomainName=example,dc=example,dc=com

Please provide a password for the domain Administrator: 
Changing UNIX and samba passwords for Administrator
New password: 
Retype new password: 
[root@hoge ~]# 

初期データ投入がうまくいったら、ドメイン管理者アカウント(Administrator)のパスワードを設定する。PDCマシン上でrootになり、以下を1度だけ実行すればよい。

[root@hoge ~]# smbldap-passwd Administrator
Changing UNIX and samba passwords for Administrator
New password: 
Retype new password: 
[root@hoge ~]# 

一般ユーザーを追加する。

[root@hoge samba]# smbldap-passwd testuser
Changing UNIX password for testuser
New password: 
Retype new password: 
[root@hoge samba]# 

SASL認証設定ファイル編集

smbldap-useraddで追加したユーザがSMTP-Authが行えるようにする

# vi /etc/sysconfig/saslauthd
MECH=shadow
↓
MECH=pam
確認事項およびエラー等の注意事項

ログを確認したら下記のようにエラーが発生していた。(/var/log/samba/log.smbd)

[2012/04/26 18:41:59.611756,  2] lib/smbldap.c:1018(smbldap_open_connection)
  smbldap_open_connection: connection opened
[2012/04/26 18:41:59.611978,  0] passdb/secrets.c:350(fetch_ldap_pw)
  fetch_ldap_pw: neither ldap secret retrieved!
[2012/04/26 18:41:59.612175,  0] lib/smbldap.c:1180(smbldap_connect_system)
  ldap_connect_system: Failed to retrieve password from secrets.tdb
[2012/04/26 18:41:59.612359,  1] lib/smbldap.c:1409(another_ldap_try)
  Connection to LDAP server failed for the 5 try!
[root@ora02 samba]# 

というエラーが出されていました.secrets.tdb はそれぞれのローカルマシンで作成されるもので,そこに,LDAP のパスワードを登録しないと LDAP サーバにて認証が通りません.そこで,secrets.tdb に LDAP の管理者パスワードを登録する必要があります.次のコマンドを実行します.

[root@hoge ~]# smbpasswd -W
Setting stored password for "cn=Administrator,ou=Users,dc=example,dc=com" in secrets.tdb
New SMB password:        (LDAPの管理用パスワードを入力)
Retype new SMB password: (LDAPの管理用パスワードをもう一度入力)
[root@hoge ~]# 
今回の設定で関連するファイルは下記の通りです。
・/etc/openldap/slapd.conf (ldapの基本設定)
・/etc/openldap/ldif/base.ldif (作成した基本情報)
・/etc/samba/smb.conf (sambaの基本設定)
・/etc/smbldap-tools/smbldap.conf (変換を行うための基本情報が設定)
・/etc/smbldap-tools/smbldap_bind.conf (masterDNとmasterPwを設定)

2012年3月7日水曜日

Adobe Flash Playerが更新されると手間が...

いつからなのか、CentOSでAdobe Flash Playerが自動更新されるとrootユーザー以外のfirefoxでAdobe Flash Playerプラグインが利用できなくなるという現象がが発生する。参るよね。(ーー;)

root以外のユーザーでもAdobe Flash Playerのプラグインが使用できるように、rootユーザーの設定情報を確認して同じ内容に変更する。(面倒だな。)

■ rootユーザーのfirefox プラグイン設定を確認する

[root@hogehode ~]# cd .mozilla/firefox
[root@ora02 firefox]# ls
Crash Reports abcd98yz.default profiles.ini
※プラグインの設定ファイルが格納されているフォルダへ移動する
[root@ora02 firefox]# cd abcd98yz.default
[root@ora02 abcd98yz.default]# # cat pluginreg.dat
Generated File. Do not edit.

[HEADER]
Version:0.15:$
Arch:x86-gcc3:$

[PLUGINS]
libflashplayer.so:$
/usr/lib/flash-plugin/libflashplayer.so:$
:$
1330401424000:1:1:$
Shockwave Flash 11.1 r102:$
Shockwave Flash:$
2 0:application/x-shockwave-flash:Shockwave Flash:swf:$
1:application/futuresplash:FutureSplash Player:spl:$

[INVALID]


[PLUGINS]の内容をそれぞれのユーザー(一般ユーザー)のfirefoxの設定フォルダの上記の値を変更する。 私の場合は、それぞれのユーザー(一般ユーザー)の[PLUGINS]が空になっていたり、rootとは異なる内容(更新されない)になっていたが、rootユーザと同じ設定にしてログオンし直すと無事にAdobe Flash Playerのプラグインが使用できるようになった。

2012年2月28日火曜日

SSL自己署名証明書の作成

SSL自己署名証明書ではアクセス時に警告が出るため、商用で使う場合はベリサイン等の正規の認証局が発行する証明書するの通常です。

SSL自己署名証明書の作成手順

  1. 秘密鍵を生成します
  2. 秘密鍵からパスフレーズを削除
  3. 生成された秘密鍵を使ってサイト証明書を発行
1. 秘密鍵を生成します。

[root@hoge ~]#cd /etc/pki/tls [root@hoge tls]# openssl genrsa -des3 2048 > private/localhost.key
Generating RSA private key, 2048 bit long modulus
.........................................................................................................................................+++
.............+++
e is 65537 (0x10001)
Enter pass phrase: # パスフレーズを入力
Verifying - Enter pass phrase: # パスフレーズを再入力
[root@hoge tls]#

2.秘密鍵からパスフレーズを削除します。(Apache起動時に毎回パスフレーズを聞かれるので..)

[root@hoge tls]# cd private
[root@hoge private]# cp -p localhost.key localhost.key.org # オリジナルを退避する。(パスフレーズを問い合わせる)
[root@hoge private]# cd ../
[root@hoge tls]# openssl rsa -in private/localhost.key -out private/localhost.key
Enter pass phrase for private/localhost.key: # パスフレーズを入力
writing RSA key
[root@hoge tls]#

3.生成された秘密鍵を使ってサイト証明書を発行します(Common NameはURLでのホスト名を入力)

[root@hoge tls]# openssl req -new -x509 -key private/localhost.key -out certs/localhost.crt -days 3650
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:chiyoda-ku
Organization Name (eg, company) [My Company Ltd]:example.inc
Organizational Unit Name (eg, section) []:example
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:
[root@hoge tls]#

下記の3つのファイル(実際は2つ)を作成
/etc/pki/tls/private/localhost.key.org パスフレーズ削除前
/etc/pki/tls/private/localhost.key     パスフレーズ削除後
/etc/pki/tls/private/localhost.crt     サイト証明書
※作成後はパーミッションを下記のようにしておきます。
 -r-------- 1 root root   1444  2月 16 05:58 localhost.key.org
 -r-------- 1 root root   1444  2月 16 05:58 localhost.key
 -r-------- 1 root root   1444  2月 16 05:58 localhost.crt

2012年2月21日火曜日

OpenLDAPと暗号化通信

SMTPやPOP3プロトコルでは平文パスワードがネットワーク上を流れるますが,LDAPでも同じです。tcpdumpなどで通信をキャプチャしてみると,パスワード文字列を簡単に取得することができてしまいます。

アカウント情報(UNIXアカウント)をOPENLDAPで管理する場合、実際のパスワード情報はLDAPサーバ上のuserPassword属性中に暗号化された状態で格納されていますが,ネットワーク上のトラフィックをキャプチャしてみると,平文のパスワードを取得することができてしまう。

信頼されたネットワーク内のみで運用するのであれば話は別ですが,盗聴の危険性を考慮した場合,ネットワーク経路の暗号化の検討が必要になります。

暗号化の種類

データを暗号化させるためには,いくつかの方法が考えられますが,これはSMTP/POP3/IMAPなどの基本的なプロトコルにおける考え方と同様です。

ひとつ目の方法はSSL/TLSにより,トラフィック全体を暗号化させることです。この場合SSLを使用しますので,LDAPサーバ上にサーバ鍵,証明書,CA情報などを設置しておく必要があります。トラフィックをSSLでカプセリングすることで,パスワード情報だけではなく接続の最初から最後までの全情報を暗号化させることができることが最大のメリットです。また,暗号化だけではなく信頼された接続先に安全に接続できる,という意味も持ちます。