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検索すると山ほど出てくるが備忘録としてエントリする。