Notice: get_currentuserinfo の使用はバージョン 4.5.0 から非推奨になっています ! 代わりに wp_get_current_user() を使ってください。 in /var/www/html/blog/wp-includes/functions.php on line 3831 Call Stack: 0.0000 228200 1. {main}() /var/www/html/blog/index.php:0 0.0001 228640 2. require('/var/www/html/blog/wp-blog-header.php') /var/www/html/blog/index.php:17 0.1244 6196112 3. require_once('/var/www/html/blog/wp-includes/template-loader.php') /var/www/html/blog/wp-blog-header.php:19 0.1257 6205280 4. include('/var/www/html/blog/wp-content/themes/zbench/archive.php') /var/www/html/blog/wp-includes/template-loader.php:74 0.1257 6205312 5. get_header() /var/www/html/blog/wp-content/themes/zbench/archive.php:1 0.1257 6205896 6. locate_template() /var/www/html/blog/wp-includes/general-template.php:45 0.1257 6206136 7. load_template() /var/www/html/blog/wp-includes/template.php:647 0.1257 6220384 8. require_once('/var/www/html/blog/wp-content/themes/zbench/header.php') /var/www/html/blog/wp-includes/template.php:688 0.1271 6236640 9. wp_head() /var/www/html/blog/wp-content/themes/zbench/header.php:8 0.1271 6236688 10. do_action() /var/www/html/blog/wp-includes/general-template.php:2589 0.1271 6237360 11. WP_Hook->do_action() /var/www/html/blog/wp-includes/plugin.php:453 0.1271 6237456 12. WP_Hook->apply_filters() /var/www/html/blog/wp-includes/class-wp-hook.php:323 0.1367 6405120 13. call_user_func_array:{/var/www/html/blog/wp-includes/class-wp-hook.php:298}() /var/www/html/blog/wp-includes/class-wp-hook.php:298 0.1367 6405728 14. add_google_analytics() /var/www/html/blog/wp-includes/class-wp-hook.php:298 0.1370 6406512 15. ga_current_user_is() /var/www/html/blog/wp-content/plugins/google-analyticator/google-analyticator.php:1116 0.1370 6406544 16. get_currentuserinfo() /var/www/html/blog/wp-content/plugins/google-analyticator/google-analyticator.php:1289 0.1370 6406768 17. _deprecated_function() /var/www/html/blog/wp-includes/pluggable-deprecated.php:49 0.1370 6407256 18. trigger_error() /var/www/html/blog/wp-includes/functions.php:3831

Tag Archives: CentOS

CentOSにOpenCVをパッケージインストールする

 CentOSにOpenCVをインストールしたかったのだが、yum searchしても検出されない(fedoraだと見つかったのに?)。
 仕方が無いのでソースからビルドしようとしたら今度はcmakeが無い。

 おちつけ。

 最近建てたばかりの環境なので、3rdパーティのリポジトリ(RPMforgeとか)を設定していない事に気づく。

 RPMforgeを設定する。環境はCentOS5。

 まずは、yum-prioritiesをインストール。
 これは、RPMforgeに存在するパッケージがオフィシャルリポジトリでインストールしたパッケージを上書かないようにするためのもの。パッケージが重複したときに。

[ccb_bash]# yum -y install yum-priorities[/ccb_bash]

 まず、現時点で設定されているリポジトリのプライオリティを1に設定する。

[ccb_bash]# vi /etc/yum.repos.d/CentOS-Base.repo[/ccb_bash]

[ccb_bash][base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1 # ←★この行追加
[/ccb_bash]

 他のリポジトリについても同じ。”priority=1″をつけておく。
 私の環境では、上記”CentOS-Base.repo”ファイル以外にも設定ファイルが存在したので、それらについても同様に”priority=1″とした。

 GPGキーのインストール。

[ccb_bash]# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[/ccb_bash]
 次にRPMForgeをインストール。

[ccb_bash]# rpm -hiv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[/ccb_bash]
 まずは、アップデートしよう。

[ccb_bash]# yum update[/ccb_bash]

 よし、やっとcmakeのインストール、と思ったのだけど、よく考えてみればRPMforgeにOpenCV入ってた。

[ccb_bash]# yum install -y opencv
[/ccb_bash]

 ok.

毎日コミュニケーションズ (2009/07/29)

『ServersMan@VPS』がやってきた

 先日申し込んだServersMan@VPS』。

申し込み多数ですぐに準備が出来ないということなので、指をくわえて待っています。

 やっと昨日『準備できたよ』というメールが到着。
 指がふやけたよ!

 3ヶ月は無料なので、ゆっくり構築して引っ越したいと思います。
 
 useradd!

『ServersMan@VPS』おためし

 先日のエントリで紹介したDTIのServerman@VPS

 『Standardプラン』と『Proプラン』が4月末に申し込み受付開始となったまま、しばらく開始されなかったのでウォッチしてて、今朝見たら受付開始されてた。ギリ。

 早速『Proプラン』+『シンプルセット』で申し込み。

 申し込み多数ですぐに準備が出来ないということなので、指をくわえて待っています。

『ServersMan@VPS』に注目

ユビキタスプロバイダ DTI

 今月からサービス開始のDTIさんによる仮想専用サーバサービス

 ワンコイン(Entryプランの場合)でrootもらえるなんてちょっと良さそうなので試してみようと思います。
 余ってるドメインがあるので、まずはお試しで。

  • Entryプラン(490円)
    • Mem:256MB
    • HDD:10GB
  • Standardプラン(980円)
    • Mem:512MB
    • HDD:30GB
  • Proプラン(1,980円)
    • Mem:1GB
    • HDD:50GB
オーム社 (2007/02/24)

FedoraからCentOSへリモート・デスクトップ接続(VNCSERVERの設定)

 FedoraからCentOSへリモート・デスクトップ接続できるようにする。

サーバ(CentOS)側
/etc/sysconfig/vncservers
 デフォルトでコメントアウトされている行を有効化して適切な内容に編集する。設定ファイルの編集はrootで。
# VNCSERVERS=”2:myusername”
# VNCSERVERARGS[2]=”-geometry 800×600 -nolisten tcp -nohttpd -localhost”
 myusernameの部分にリモートデスクトップ接続後のユーザアカウントを設定。アカウントの前の数字はディスプレイ番号。他のユーザと重複しない番号を設定する。
 下記例の場合、アカウントを”piyo”、ディスプレイ番号を”1″としている。

VNCSERVERS=”1:piyo”

 以下行では、接続後のスクリーンサイズ(-geometry 800×600)、tcpソケットを用いない(-nolisten tcp)、ブラウザ経由を用いた接続を許可しない(-nohttpd)、となっている。デフォルトで記述されている”-localhost”を削除すること。これは、ローカルホストからの接続のみ許可する。だ。
VNCSERVERARGS[2]=”-geometry 800×600 -nolisten tcp -nohttpd”
 設定ファイルを保存する。
 次に、VNC接続ユーザとなって、リモート接続のためのパスワード設定を行う。
$ vncpasswd
Password: パスワード入力
Verify: 再入力
 更に、ユーザホームディレクトリの.vncフォルダ内の設定ファイルを編集。
/home/piyo/.vnc/xstartup
 コメントアウトされている次の行を有効化して保存する。
 この設定を行わなくてもリモート接続可能だが、ウィンドウマネージャがtwmになってしまうので悲しい。以下を有効化すれば、GNOMEなど(対象アカウントが普段どのようなデスクトップ環境を利用しているかによる。もちろん)になる。
exec /etc/X11/xinit/xinitrc
 設定ファイルを保存したら、VNCSERVERを起動してみる。
# /etc/inet.d/vncserver start
 常時機動(OS起動時に起動される)させるならば、chkconfigで設定しておく。
# chkconfig vncserver on
 確認。
# chkconfig –list | grep vncserver
vncserver       0:off 1:off 2:on 3:on 4:on 5:on 6:off
 ファイアウォールがなっている場合、5901ポートを開けておく。このポート番号は、ディスプレイ番号1で接続する際のポート番号となる(5900+ディスプレイ番号)。ディスプレイ番号2で接続する場合には、5902。
# /usr/bin/setup
 ファイアウォールの設定画面に遷移し、5901番ポートを許可する。
FirewallSetup.png
ライアント(Fedora)側
 接続クライアントは、Fedoraに元々インストールされている(インストール時にカスタマイズしていなけれればね!)リモート・デスクトップビューア(Vinagre)。
 メニューから[アプリケーション]→[インターネット]→[リモート・デスクトップのビューア]で起動する。
RemoteDesktop.png
 プロトコルを”VNC”、ホスト名に”接続先のホスト名:ディスプレイ番号”を指定(例えば、”hoge:1″みたいな)して接続する。

FedoraにChaSen(CentOSにも)

 スタパクラウドでは、形態素解析にYahoo! APIを使っているのだけど、別にやりたいことが出てきたので自前で用意してみようと思う。
 インストールは少しずつ使えるようになってきたFedora11(LiveUSB)と、CentOSに行う。OSは異なるが手順に差異はない。

 日本語の形態素解析を行うツールは幾つか存在するが、今回はChaSenを選択した。

ChaSen — 形態素解析器
http://chasen-legacy.sourceforge.jp/

 ChaSenを動作させるには、別途Dartsとivonvが必要となる。

■Darts

Darts: Double-ARray Trie System
http://chasen.org/~taku/software/darts/

$ wget http://chasen.org/~taku/software/darts/src/darts-0.32.tar.gz
$ gtar xvzf darts-0.32.tar.gz
$ cd darts-0.32
$ ./configure
$ make
$ make check
$ su
# make install

 特に難しかったり複雑な事はないけど、configureでエラーがないかよく確認すること(C++コンパイラなど無いと叱られます)。darts.hが/usr/local/include/に格納されます。

■libiconv

$ wget ftp://core.ring.gr.jp/pub/GNU/libiconv/libiconv-1.13.1.tar.gz
$ gtar xvzf libiconv-1.13.1.tar.gz
$ cd libiconv-1.13.1
$ ./configure –with-libconv=/usr/local
$ make
$ make check
$ su
# make install

 ふつうです。ふつうにmake installまでやる。
 インストールが終わったら動作確認。

$ iconv -l | grep UTF
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7

■ChaSen

 いよいよChaSen。ダウンロードはSourceforgeからどうぞ。
http://sourceforge.jp/projects/chasen-legacy/

$ gtar xvzf chasen-2.4.4.tar.gz
$ ./configure –with-libiconv=/usr/local –with-darts=/usr/local/include –disable-shared
$ make
$ make check
$ su
# make install

■辞書(IPAdic)

 ipadicもSourceforgeからよろしくね。
http://sourceforge.jp/projects/ipadic/

$ gtar xvzf ipadic-2.7.0.tar.gz
$ cd ipadic-2.7.0
$ ./configure
$ make

 ChaSenはデフォルトのキャラセットがEUC-JPなので、インストール前に各種ファイルをUTF-8化しておく。
 変換対象となるファイルは、*.dicと*.cha。愛情をもってファイル毎にコマンドを叩いても良いが、数が多いのでバッチファイルか何かで処理するのがベター。
 以下手作業の場合。

$ nkf –utf8 Adj.dic > tmp.dic
$ mv tmp.dic Adj.dic
  :(.dicファイルあるだけ全部)
$ nkf –utf8 Others.dic > tmp.dic
$ mv tmp.dic Others.dic

$ nkf –utf8 cforms.cha > tmp.cha
$ mv tmp.cha cforms.cha
  :(.chaファイルあるだけ全部)
$ nkf –utf8 table.cha > tmp.cha
$ mv tmp.char table.cha

 変換が終わったら、以下のようにしてUTF-8の辞書をつくる。

$ make
$ `chasen-config –mkchadic`/makemat -i w
$ `chasen-config –mkchadic`/makeda -i w chadic *.dic
# su
# make install

 インストール後、chasenrcもUTF-8に変換しておくこと。

# cd /usr/local/etc
# nkf –utf8 chasenrc > tmp
# mv tmp chasenrc

 準備完了。
 さっそく使ってみる。なお、UTF-8で用いるためには、-i wオプションが必要なので忘れずに。

$ chasen -i w
本日もライブUSBで頑張っています。
本日    ホンジツ    本日    名詞-副詞可能       
も    モ    も    助詞-係助詞       
ライブ    ライブ    ライブ    名詞-一般       
U    ユー    U    記号-アルファベット       
S    エス    S    記号-アルファベット       
B    ビー    B    記号-アルファベット       
で    デ    で    助詞-格助詞-一般       
頑張っ    ガンバッ    頑張る    動詞-自立    五段・ラ行    連用タ接続
て    テ    て    助詞-接続助詞       
い    イ    いる    動詞-非自立    一段    連用形
ます    マス    ます    助動詞    特殊・マス    基本形
。    。    。    記号-句点       
EOS

OKだが、”USB”が単語として認識されていない。
なんとかなるはずだが今回はここまで。

ClamAVを試す(インストール)

 アンチウイルスソフト ClamAVを試してみる。おためし。
 環境はCentOS 5.2。今回は2台のサーバにインストールしている。
 yumで入る。

# yum install clamav clamav-update

と思ったら、片方のサーバでClamAVのパッケージが見つからないと言われた。
* EPEL(Extra Packages for Enterprise Linux)が入っていなかった。
 EPELのインストールは難しくない。

# cd /etc/pki/rpm-gpg
# wget http://ftp.iij.ad.jp/pub/linux/fedora/epel/RPM-GPG-KEY-EPEL

# cd /tmp
# wget http://ftp.iij.ad.jp/pub/linux/fedora/epel/5/i386/epel-release-5-2.noarch.rpm
# rpm -hiv epel-release-5-2.noarch.rpm

 改めてyum installしておく。
 次はウイルス定義ファイルの更新だが、まず以下のとおり設定ファイルを編集する(Exampleをコメントアウト)。
/etc/freshclam.conf

# Comment or remove the line below.
#Example  ← コレ

 定義ファイルの更新

# freshclam
ClamAV update process started at Mon Jun 22 15:46:41 2009
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.95.1 Recommended version: 0.95.2
DON’T PANIC! Read http://www.clamav.net/support/faq

(略)

 お前のClamAVは古いゼ!なんて言われる。
 これはEPELのパッケージが最新ではないからだが、定義ファイルは更新される。今回はお試しなので気にしない。
 定義ファイルの自動更新について。
 今回の環境(CentOS 5.2 + ClamAV)の場合、ClamAVをインストールすると3時間おきに定義ファイルの更新が実施されるようcron登録される。
が、あらかじめ設定ファイルの編集を行っていないと更新に失敗する。
 こんなメールが届く。

WARNING: update of clamav database is disabled; please see
  ‘/etc/sysconfig/freshclam’  
  for information how to enable the periodic update resp. how to turn
  off this message.

 言われるがままに、以下をコメントアウトすると解消される。
/etc/sysconfig/freshclam

### REMOVE ME: network access without prior activation
#FRESHCLAM_DELAY=disabled-warn  # REMOVE ME ← コレ

 なお、デフォルトのスケジューリング(3時間おき)を変更する場合は以下ファイルを変更のこと。
/etc/cron.d/clamav-update

## Adjust this line…
MAILTO=root,postmaster,webmaster,clamav

## It is ok to execute it as root; freshclam drops privileges and becomes
## user ‘clamav’ as soon as possible
0  */3 * * * root /usr/share/clamav/freshclam-sleep

 以上でセッティングは完了。
 試しにhomeディレクトリをスキャンする。

$ clamscan -r -i ~
LibClamAV Warning: ***********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.     ***
LibClamAV Warning: *** DON’T PANIC! Read http://www.clamav.net/support/faq ***
LibClamAV Warning: ***********************************************************

———– SCAN SUMMARY ———–
Known viruses: 575078
Engine version: 0.95.1
Scanned directories: 3095
Scanned files: 16070
Infected files: 0
Data scanned: 323.92 MB
Data read: 168.41 MB (ratio 1.92:1)
Time: 222.242 sec (3 m 42 s)

 相変わらずスキャン実行でもエンジンのバージョンについて警告が出力されるが、SCAN SUMMARY以下が結果となる。
 ウイルスチェックのスケジューリングについては、また別の日に。
ClamAV
http://www.clamav.net/
LinuxでアンチウイルスソフトClamAVを使うには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/929useclamav.html
ClamAVのウイルスデータベースを自動更新するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/930clamavdbup.html

rubyのRPMパッケージをつくる(to CentOS 5.2)

 CentOS 5.2を用いた実験環境で、バージョン1.8.6以上のrubyをインストールする必要に迫られた。
 現時点で、CentOS 5.2に提供されているrubyは1.8.5。よい機会なのでパッケージを作ることにした。初挑戦。
 はじめにtarボール(ruby-1.8.6.tar.gz)を入手
Ruby 1.8.6 リリース
http://www.ruby-lang.org/ja/news/2007/03/12/ruby-1-8-6-release/
 このソースファイルからパッケージを生成する。
 まずは展開してmake。

$ gtar xvzf ./ruby-1.8.6.tar.gz
  :
$ cd ruby-1.8.6
$ ./configure –prefix=/usr
  :
$ make
  :

 SRPMファイルのないtarボールからパッケージを生成する場合はcheckinstallを用いるのが楽であるよう。
ソースファイルからRPMファイルを作成するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/530mkrpmfs.html
 !!!checkinstallがインストールされていない。
 じゃあ、と、yumでインストールしようとしたらNothing to doだ。
CentOS4.5にRPM作成ツール(checkinstall)のインストール
http://blog.livedoor.jp/glantank/archives/50935741.html
 記述によれば、yumに–enablerepo=rpmforgeオプションを与えているけど、これは?
CentOS 5 で DAG(rpmforge) の yum repository 追加
http://blog.enjoitech.jp/article/96

DAG(rpmforge) は redhat 及び fedora 向けの追加パッケージ群です。

 わかった。
 手引きどおりに、DAGからRedhat5のrpmforge(rpmforge-release-0.3.6-1.el5.rf.i386.rpm)を入手してインストール。
DAG
http://dag.wieers.com/rpm/packages/rpmforge-release/

$ wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
$ su
# rpm -hiv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

 インストール完了したら設定ファイルの書き換えを行う。

# vi /etc/yum.repos.d/rpmforge.repo

 enabled を 0 に設定(初期値1)。
 こうすることで、yumコマンドに–enablerepo=rpmforgeオプションを付けたときだけ、rpmforgeを見に行くようになる。
 現時点の差分は以下。だいぶ違う。

# yum list | wc -l
5876
# yum list –enablerepo=rpmforge | wc -l
9239

 で、checkinstallをインストール。

# yum –enablerepo=rpmforge install checkinstall
  :
Installed: checkinstall.i386 0:1.6.0-3.el5.rf
Complete!

 よし。
 いよいよパッケージ生成。
Ruby1.8.7のインストール
http://blog.absolute-zero.info/?cat=30

checkinstallを使ってRPM化していきます。rubyのようなインストールしながら
ファイルをチェックして進んでいくタイプの場合には”-fstrans=no”をつけてあげる必要があります。

 なるほど。

$ su
# checkinstall –fstrans=no
checkinstall 1.6.0, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.

The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation…OK

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R

**************************************
**** RPM package creation selected ***
**************************************

This package will be built according to these values:

1 –  Summary: [ Package created with checkinstall 1.6.0 ]
2 –  Name:    [ ruby ]
3 –  Version: [ 1.8.6 ]
4 –  Release: [ 1 ]
5 –  License: [ GPL ]
6 –  Group:   [ Applications/System ]
7 –  Architecture: [ i386 ]
8 –  Source location: [ ruby-1.8.6 ]
9 –  Alternate source location: [  ]
10 – Requires: [  ]
11 – Provides: [ ruby ]

Enter a number to change any of them or press ENTER to continue:

Installing with make install…

========================= Installation results ===========================
./miniruby  ./instruby.rb –dest-dir=”” –extout=”.ext” –make=”make” –mflags=”” –make-flags=”” –installed-list .installed.list –mantype=”doc”
installing binary commands
installing command scripts
installing library scripts
installing headers
installing manpages
installing extension objects
installing extension scripts

======================== Installation successful ==========================

Copying documentation directory…
./
./doc/
./doc/irb/
./doc/irb/irb.rd.ja
./doc/irb/irb-tools.rd.ja
./doc/irb/irb.rd
./doc/NEWS-1.8.0
./doc/shell.rd.ja
./doc/forwardable.rd.ja
./doc/forwardable.rd
./doc/ChangeLog-1.8.0
./doc/shell.rd
./COPYING.ja
./GPL
./README.EXT
./NEWS
./README
./README.EXT.ja
./ChangeLog
./COPYING
./README.ja

Some of the files created by the installation are inside the build
directory: /home/hoge/rpm/ruby-1.8.6

You probably don’t want them to be included in the package,
especially if they are inside your home directory.
Do you want me to list them?  [n]:
Should I exclude them from the package? (Saying yes is a good idea)  [y]:

Copying files to the temporary directory…OK

Striping ELF binaries and libraries…OK

Compressing man pages…OK

Building file list…OK

Building RPM package…OK

NOTE: The package will not be installed

Erasing temporary files…OK

Writing backup package…OK

Deleting temp dir…
OK

**********************************************************************

 Done. The new package has been saved to

 /usr/src/redhat/RPMS/i386/ruby-1.8.6-1.i386.rpm
 You can install it in your system anytime using:

      rpm -i ruby-1.8.6-1.i386.rpm

**********************************************************************

できた。
 今回は初めての事だったので、準備作業に手間取ったがパッケージ生成事態はそれほど難しくはなかった。次回はもっとうまくできそうだ。
 なお今回、色々と調べている中で以下設定を行った。結果として本題に関与しないが備忘録として残しておく。一般ユーザでcheckinstall出来ると思ったのだ(出来る?)。
オレオレrpmパッケージの作り方(基本編)
http://openlab.dino.co.jp/2007/11/16/13162254.html

$ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo “%_topdir   /home/hoge/rpm” > ~/.rpmmacros

まつもと ゆきひろ/まつもと ゆきひろ
ソフトバンククリエイティブ (2010/03/31)

fsockopen()が失敗する

Warning [PHP]: fsockopen() [function.fsockopen]: unable to connect to example.com 110

 外部のメールサーバにPOPで接続してメールを取得するPHPスクリプトで上記エラー。正確にはxoopsモジュールの一部。

 別のサーバでは正常に動作していたのに。
 名前が引けないのかと思い、SSHでサーバに接続し、コンソールでnslookup。

> nslookup example.com

 問題なく引ける。
 では、コンソールでPOP接続してみる。

> telnet example.com 110

 問題なく接続できる。更にアカウントとパスワードを叩いてメールボックスの中も除ける。
 で、ここまできて思い出した。似たような事が前にも。
 SELinux
 Google様に聞いてみると、httpd_can_network_connect がデフォルトで無効になっているからだと。

/usr/sbin/setsebool -P httpd_can_network_connect=1

 これでOKだ。
第5回 トラブルシューティングはCentOS 5におまかせ

oooooooops! cannot change directory…(SELinux)

 oooooooops!というわけで、サーバにFTP接続しようとしたらディレクトリ遷移できなくて接続切られてしまう件。
 環境はは以下。
  • CentOS 5.2
  • vsFTPd。
 Windowsのコマンドプロンプトより

C:\Documents and Settings\hoge>ftp hoge_host
Connected to hoge_host.
220 (vsFTPd 2.0.5)
User (hoge_host:(none)): hoge
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/hoge
500 OOPS: child died
Connection closed by remote host.

 vsFTPは初めてだったし、configも何もしてなかったから、それかなー、と思ってたら違う。
 これは、SELinuxのセキュリティポリシーによるもの。SELinuxもはじめて。

# man ftpd_selinux

SELinux  ftp daemon policy is customizable based on least access required.
So by default SElinux does not allow users to login and  read  their  home
directories.
If  you  are  setting  up  this machine as a ftpd server and wish to allow
users to access their home directorories, you need to set the ftp_home_dir
boolean.

setsebool -P ftp_home_dir 1

 SElinuxはデフォルトでユーザのFTP接続を許可しておらず、ユーザのホームディレクトリを読ませない。
 言われるがままに、setseboolコマンドを叩く。

# setsebool -P ftp_home_dir 1

 Windowsコマンドプロンプト

C:\Documents and Settings\hoge>ftp hoge_host
Connected to hoge_host.
220 (vsFTPd 2.0.5)
User (hoge_host:(none)): hoge
331 Please specify the password.
Password:
230 Login successful.
ftp>

 できた。
 「OOPS: cannot change directory」でWeb検索すると山ほど出てくるが備忘録としてエントリする。