右クリック送るメニューに項目追加

hostsファイルを編集しようと思って在処までやってきたは良いものの、ダブルクリックをすると『ファイルを開くプログラムを選択』ウィンドウが開く。で、そこで普段使用しているエディタを選択して開いて…でも毎回同じ動作が必要。以前WIndowsXPの時に重宝していたのが右クリックの『送る』メニュー。ここに普段使用しているエディタを登録しておけば、選択したプログラム(アプリケーション)で対象のファイルを開く事ができる!

というわけで右クリック送るメニューの追加方法。
下記ディレクトリに追加したいアプリケーションのショートカットを追加するべし。

C:\Users\【ユーザ】\AppData\Roaming\Microsoft\Windows\SendTo

上記ディレクトリを開くにはエクスプローラから順に追っていく方法もあるが別の方法もある。

Windowsキー+R】で『ファイル名を指定して実行』ダイアログを開いて下記コマンドを入れる。

shell:sendto

上記ディレクトリにショートカットを追加すればおしまい。後は動作確認。
ちなみにショートカットは実際に実行されているバイナリ(.exe)からショートカットを作成した方が良いらしい。

VirtualPC

昨日MicrosoftVirtualPCを試してみた。

VirtualPC - Microsoft
http://www.microsoft.com/japan/windows/products/winfamily/virtualpc/default.mspx

普段はVMwareを使用しているのだが、Vista上で動かしているのだからMicrosoft純正(?)のモノがあるのであればそれでも良いんでない?というかそっちの方が性能が良かったりして?なんて思って試してみた次第である。

上記URLから相変わらずわかりづらいページへ二度ほど遷移した画面からようやくダウンロード。setupを実行してとりあえず何事も無くVistaにインストールされたようだ。

スタートメニューから起動してみるとまずはVirtualMachineの作成。…OSの選択肢は基本Windowsなのね。でも『その他』を選んで次へ進む。メモリも3GBほどVistaが積んでいるのでデフォルト128MBだけど大きくしちゃう。512MBにしようかしら。で、バーチャルハードディスクを作成して終了。

作成したVirtualMachineを選択して『起動』ボタンをクリック!新規で開いたWindowのCDメニューからISOファイルを選択して後は通常通りインストール。…なんて思っていたら、画面が!画面がなんかおかしいよ!CentOS-5.2を入れてみようと思ったのだが、MediaCheckの後、GUIでインストールする所で画面がキレイに表示されない。何が出ているのかもさっぱりわからん。。。というわけでVirtualMachineの画面の設定等をいじってみたものの変わらないので、CentOS-5.2をtextモードでインストールする事にした。MediaCheckの画面は正常に表示されていたのでtextモードなら大丈夫だろうという判断で。その判断は正しかったのだ。インストールできた。

で、VirtualMachineの使い勝手なのだが

  • Network周りの設定がいまいちよくわからん
  • Windowを選択した時点でその後のキーボード操作は全てVirtualMachine内のキーボード操作になる
    →当たり前かもしれないが、なんかAlt-Tabで他のWindowを開けなくなるのでちょっとめんどい。
    VMwareだったらCtl-AltとかでVirtualMachineを抜けてとかキーボード操作のみで変えられるけど
     VirtualPCではマウス操作が必要
  • 文字列?のコピー貼り付けがちょいとめんどい

でもでも

  • VMwareよりも動きが高速(計測してみたわけではなく体感で)
  • VirtualMachine内のキャプチャみたいなのが容易に取れる

そんなところ。
自分の中ではまだVMwareに軍配!

cpan2rpm

RPM作成を最近覚えた。specファイルの書き方とか、実際にRPMパッケージを作る方法とか。とりあえず単純なモノが作れるようになっただけだけど。ソースからコンパイルして作成したものも今後はRPMとして一元管理できるようになるだろうか。
で、今回はperlのモジュールをRPMパッケージにするコマンド。perlのモジュールはcpanで。ってperlerの方には当たり前の事かもしれないが、perlを初めてまともに触った自分にはこれまた管理対象が増えるのがイヤだ。RPMの既にインストールされているパッケージにだってperl-*ってモノが入ってるじゃん。perlモジュールなのにRPMcpanと両方あるの?って。
仕事でもperlモジュールのRPMパッケージを作らなければいけない状態だったのでいろいろ調べていたらcpan2rpmというコマンドを見つけた。試してみたところ、ほほぅ…楽だなぁ。specファイルを探したり、自分で作ったりする必要もなく、結構お手軽にRPMパッケージが作成できる。こりゃ便利だー。自分ではまだネタが書けるほどではないのでgooglingで。

ユーザにパスワードを設定する

PostgreSQLのスーパーユーザであるpostgresに対してパスワードを設定する事にする。ネットワーク経由(TCP/IP)からの接続の場合において、設定したパスワードが一致しなければ接続を制限するようにしたい。
まずは検証サーバにて確認。

ユーザの一覧を確認

念の為、現在どんなユーザが検証サーバのPostgreSQLに存在するかを確認する。現状ではPostgreSQLのプロセスを起動しているユーザであれば、localhostからの接続にはパスワードの認証も何もない。

[postgres@CentOS-5.2 ~]$ /usr/local/postgresql-8.3.3/bin/psql 
Welcome to psql 8.3.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \du
                               List of roles
 Role name | Superuser | Create role | Create DB | Connections | Member of 
-----------+-----------+-------------+-----------+-------------+-----------
 dbuser1   | no        | no          | no        | no limit    | {}
 dbuser2   | no        | no          | no        | no limit    | {}
 dbuser3   | no        | no          | no        | no limit    | {}
 postgres  | yes       | yes         | yes       | no limit    | {}
(4 rows)

postgres=# 

パスワード変更SQL

下記SQLによってpostgresユーザに対してパスワードを設定する。

postgres=# alter role postgres with password 'postgres';
ALTER ROLE
postgres=# 

上記例はpostgresユーザに対して『postgres』というパスワードを設定したところ。
pg_hba.confの設定と合わせて動作を確認しよう。

アクセス制限

PostgreSQLでサーバ側は起動したもののvistaからの接続に失敗した。なんでだろう?と思っていたらサーバ側での接続設定がいろいろできていなかったようでパスワード等も設定されていなかったのかしら。というわけで本日はPostgreSQLの接続設定。

/opt/postgresql-8.3.3/pg_hba.conf

上記ファイルはpostgresqlのデータ配置(?)ディレクトリにある。下記PostgreSQLサーバを実行しているコマンドの-Dのオプションで指定しているディレクトリ。

[postgres@CentOS-5.2 ~]$ ps -ef | grep postgres
postgres  2023     1  0 20:02 ?        00:00:00 /usr/local/postgresql-8.3.3/bin/postmaster -p 5432 -D /opt/postgresql-8.3.3
postgres  2026  2023  0 20:02 ?        00:00:00 postgres: writer process                                                   
postgres  2027  2023  0 20:02 ?        00:00:00 postgres: wal writer process                                               
postgres  2028  2023  0 20:02 ?        00:00:00 postgres: autovacuum launcher process                                      
postgres  2029  2023  0 20:02 ?        00:00:00 postgres: stats collector process                                          
root      2355  2327  0 20:03 pts/0    00:00:00 su - postgres
postgres  2356  2355  0 20:03 pts/0    00:00:00 -bash
root      2461  2433  0 20:05 pts/1    00:00:00 su - postgres
postgres  2462  2461  0 20:05 pts/1    00:00:00 -bash
postgres  2515  2462  0 20:12 pts/1    00:00:00 ps -ef
postgres  2516  2462  0 20:12 pts/1    00:00:00 grep postgres
[postgres@CentOS-5.2 ~]$ 

pg_hba.conf

インストール時から編集していない状態のpg_hba.confファイルの内容は下記。

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               trust
  • 第1項目:接続タイプ
    • local:localhostからの接続(Unixドメインソケットを使用)
    • host:ネットワーク経由(TCP/IP経由の接続)
    • hostss:SSLを使用したネットワーク経由(TCP/IP経由の接続)
  • 第2項目:接続先データベース
    • all:すべてのデータベース
    • [データベース名]:記述しているデータベースのみ
  • 第3項目:接続ユーザ
    • all:すべてのユーザ
    • [ユーザ名]:記述しているユーザ名のみ
  • 第4項目:接続元ネットワークの制限(localの場合は無し)
  • 第5項目:認証方式
    • trust:無条件で許可
    • reject:無条件で拒否
    • md5:暗号化パスワード(MD5形式)[推奨]
    • crypt:暗号化パスワード(crypt形式)
    • password:パスワード(平文)
    • krb4:よくわかんない…
    • krb5:よくわかんない…
    • ident:identサーバを利用
    • pam:OSのPAMサービスを使用

1行につき1形式。認証待ちのアクセスは、上から記述された順番に接続形式・接続先データベース・接続ユーザ・接続元ネットワークが一致した場合に認証を行う。つまりは上に記述しているものが一致した時点で適用。下の方にゆるい条件の制限を、上に厳しめの条件の制限を書くのが良いのかもしれない。
全ての条件(行)が一致しなかった場合は接続を拒否される。

今回は下記の記述を入れる事によって、vistaからの接続をOKとする。

host    all         all         192.168.74.0/24          md5

TCP/IP接続において、全てのデータベース・全てのユーザに対して「192.168.74.0/24」のネットワークからの接続はMD5形式の暗号化パスワード認証を行う。
上記を3つめの条件として入れようかな。
パスワード制限を入れたからには、各ユーザ(role)に対してパスワード設定が必要となる事は言うまでもなくやらねばね♪

pgAdminIII

検証環境でのPostgreSQLも起動した事だし、vistaにpgAdminIIIを入れてみよう。
インストールするWindows用バイナリはPostgreSQLユーザ会のページより取得する。

NPO法人 日本PostgreSQLユーザ会
http://www.postgresql.jp/

インストール

  1. 上記ページのバージョン8.3.3よりWindowsインストーラをダウンロードする。
    現時点では『postgresql-8.3.3-1.zip』というファイルがダウンロードされた。
  2. ダウンロードしたzipファイルを展開
  3. postgresql-8.3.msiを実行
  4. 『Welcom to the PostgreSQL Installation Wizard』
    『Japanese/JAPAN』を選択し『Start』ボタンを押下
  5. PostgreSQLインストールウィザードへようこそ』
    『次へ』を押下
  6. 『インストールの注意事項』
    『次へ』を押下
  7. 『インストールオプション』
    『pgAdminIII』以外は全て『全体の機能は選択されません』を選択し『×』の状態にする
    選択されているのは『PostgreSQL>ユーザインタフェース>pgAdminIII』のみ
    『次へ』を押下
  8. 『インストールの準備ができました』
    『次へ』を押下
  9. 『インストール中』
  10. 『インストールは完了しました!』
    『終わる』を押下

動作確認

スタートメニュー>PostgreSQL 8.3>pgAdminIII

メニューの一番左側にあるコンセントボタンをクリックし、『新しいサーバ登録』ウィンドウを開く。

  • 名前:表示名称
  • ホスト:IPで指定
  • Port:デフォルトでは5432
  • SSL:空白
  • DBメンテナンス:デフォルト接続DB
  • ユーザ名:接続ユーザ
  • パスワード:接続ユーザのパスワード
  • パスワード保存:チェックを入れると毎回の入力を省略
  • 環境の保存:チェック
  • DB制限:空白
  • サービス:空白
  • 接続する:チェック

…接続できなかった。。。そういや接続設定周りをやってないや。

pg_hba.conf

(追記)
アクセス制限付けた!

[PostgreSQL]アクセス制限
http://d.hatena.ne.jp/sin-j/20080814/1218683529

でも…pgAdminIIIでの接続がいかない。なんでなんでなんで???んー。。。という所で下記のコマンドを試してみる。

[postgres@CentOS-5.2 ~]$ netstat -nl | grep 5432
tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      
unix  2      [ ACC ]     STREAM     LISTENING     8096   /tmp/.s.PGSQL.5432
[postgres@CentOS-5.2 ~]$ 

ん…これは

って事だよね。きっと。自分が想定しているのは…少なくともvistaからの検証サーバの5432番ポートへの接続を待ち受けてくれていなければいけないんだよね。きっと。………だから…PostgreSQLの設定を変更しなきゃいけないって事だ!というわけでpostgresql.confを編集。下記の設定がどうやら該当するようなので編集してPostgreSQLサーバを再起動。

listen_addresses = '*'
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
                                        # (change requires restart)

デフォルトでlocalhostからしか接続を受付けないみたい。ということでとりあえずはどこからでもOKよ♪という状態にしてみた。

[postgres@CentOS-5.2 ~]$ netstat -nl | grep 5432
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN      
tcp        0      0 :::5432                     :::*                        LISTEN      
unix  2      [ ACC ]     STREAM     LISTENING     8511   /tmp/.s.PGSQL.5432
[postgres@CentOS-5.2 ~]$ 

お、良いんじゃない。これでpgAdminIIIでvistaから接続してみると…接続できた♪なんか見方は良くわかんないけどとりあえず満足。