Karesansuiを使ってXen仮想環境を快適に使っている。一つベースとなる環境を作っておけば、それをコピーして新しい環境として利用できるので、クローンの生成は非常に効率的である。
しかし、ベースとする環境の設定が不十分だと、クローン環境にもそのまま継承されてしまい思わぬトラブルに悩まされることになる。今日は下記のようなことになった。
クローンした仮想環境でWindowsのFFFTPから不要ファイルを削除しようとしたら、削除できなくて困ったといいう相談を受けた。確認してみたがパーミッションの問題でもないし、ユーザーアカウント=オーナー番号も同じなので削除できないのは変だなぁと首をかしげた。
もちろんSSHで入り込んでbashを使えばコマンドラインから削除は出来る。何があかんのかなぁ?とFFFTPで操作しているのを見せてもらい、空のフォルダを削除できないという状況を確認した。そして思った・・本当に空なのかな?
bashシェルからsuでそのユーザーアカウントになり、当該フォルダをls -laで見たところ、ドットファイルがあった。やっぱり空では無かった!!
#ドットファイルとは、.htaccess という感じに"."から始まるファイル名。UNIX系OSでは隠しファイルになるので、lsコマンドでは見えずaオプションをつけないと見えない。FFFTPの挙動はUNIXコマンドとは違うと分かっていたので、おそらく再帰的にフォルダ階層を掘り下げてリスティングし、ファイルを一個ずつ削除しているものと思われる。
故に、ドットファイルが見えないからFFFTPは削除しておらず、空でないフォルダは削除できないという図式だろう。bashシェルからドットファイルを削除してからFFFTPで実験したら問題なくフォルダを削除できた。
解決方法は色々あるだろうが、手っ取り早く思いつくのは下記の方法だ
- WindowsなどからFTPコマンドでアクセスして、FTPコマンドで削除する方法。
- FTPサーバの設定を変更してドットファイルを可視状態にしてFFFTPでも削除できるようにする方法。
根本的な事を考えるとFTPサーバの設定を変えちゃった方がいいだろう。どうせ自前のサーバなんだし。(レンタルサーバでは出来ない可能性が高いけど)
CentOS5.3環境で作っているテスト環境は、FTPサーバとしてvsftpdをインストールしてある。vsftpdでドットファイルを可視状態にするには、下記のようにvsftpd.confを編集して再起動すれば良い。FFFTPでも見られるようになり、削除も出来るようになった。
#vi /etc/vsftpd/vsftpd.conf
force_dot_files=YES
# Service vsftpd restart
これは必須な設定だと思えるので、CentOSセットアップ手順書というか備忘録に記しておくことにした。


コメント