指定ユーザのみがログインしてアップロードやダウンロードが行えるようにします。またChroot対応にしてユーザのホームディレクトリ(public_html)より上位ディレクトリには移行できないようにする。
- CentOS 5.3
- vsftpd-2.0.5-12.el5_3.1
接続ユーザにシェルを使わせないようにするため架空のシェルを登録しておく。
shellsファイルに「/bin/login」の1行を追記する。
# vi /etc/shells
/bin/login
chroot対応のユーザは/etc/localtimeの参照ができなくなるため時刻が狂うことがある。これを防ぐためユーザディレクトリの直下にetcディレクトリを作成してetcのlocaltimeファイルをコピーしてユーザ用localtimeファイルを設置するようにする。
ユーザ追加時に毎回public_htmlやlocaltimeを作るのは面倒なので、ユーザ追加と同時にこれらが作られるようにしておく。
# mkdir /etc/skel/public_html
# mkdir /etc/skel/etc
# cp /etc/localtime /etc/skel/etc
ユーザの追加とパスワードを設定する。(架空のシェルを割り当てるのでログインしても実質シェルは使えない)
# useradd -s /bin/login hoge
# passwd hoge
ユーザのホームディレクトリとlocaltimeの場所確認
/home/hoge/public_html
/home/hoge/etc/localtime
【インストール】
yumを使いRPMパッケージ版をインストールします。
# yum install vsftpd
【設定1】
confファイルを編集します。各項目は"オプション名=値"というスタイルですが、=(イコール)の前後にスペース等空白は入れないようにしてください。
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org (オリジナルを保存)
# vi /etc/vsftpd/vsftpd.conf
#ログインを必要とするため匿名ログインを許可しない
anonymous_enable=NO
#ローカルユーザのログインを許可する
local_enable=YES
#書き込みを許可する
write_enable=YES
#作成したディレクトリやアップロードしたファイルのパーミッションをログインユーザ限定にする
#Webのアップロード用に使いたいときは755になるように022を指定する
#計算方法:777(フル権限)-077(マスク)=700(設定権限)
local_umask=077
#ユーザーがメッセージファイルを持つディレクトリに入った時に、メッセージを表示する
#特に使いません
dirmessage_enable=NO
#ログ関連
xferlog_enable=YES
xferlog_file= /var/log/vsftpd.log
xferlog_std_format=NO
#転送用ポートを指定する
connect_from_port_20=YES
#アスキーモードを許可する
ascii_upload_enable=YES
ascii_download_enable=YES
#接続が確立された時点での情報表示を隠蔽する
ftpd_banner=unkown.
#chroot_listでchroot除外ユーザ(ホームディレクトリより上位へ移動可)を記述する
#ホームディレクトリをpublic_htmlとする
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
local_root=public_html
#ディレクトリ単位での削除やアップロードを許可する
ls_recurse_enable=YES
#スタントアロンモードで起動させる
listen=YES
#サービス名の指定
pam_service_name=vsftpd
#ユーザ制限
#接続許可を/vsftpd/user_listに記述してあるユーザに限定する
#/vsftpd/ftpusersに記述してあるユーザは無条件に接続を拒否する
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
#タイムゾーンをローカルのものを使用する
use_localtime=YES
#ドットファイル(.から始まる隠しファイル)は表示させない
force_dot_file=NO
上記以外にも様々な設定できます。詳しくはこちらを参考にしてください。
【設定2】
無条件に拒否するユーザを記述する(1ユーザ1行に記述するようにします)
/etc/passwordを参考にシステム系ユーザをすべて記述する(任意)
# vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
gopher
ftp
rpc
mailnull
smmsp
nscd
vcsa
sshd
rpcuser
nfsnobody
pcap
dbus
haldaemon
avahi
avahi-autoipd
xfs
ntp
ログイン許可するユーザを記述する(1ユーザ1行に記述するようにします)
デフォルトでシステム系のユーザが記述されていますのですべて削除または行頭に#を付けます。
ここでは最初に追加したユーザhogeを許可しています。
# vi /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
#root
#bin
#daemon
#adm
#lp
#sync
#shutdown
#halt
#news
#uucp
#operator
#games
#nobody
hoge
chroot除外者用リストの作成
# vi /etc/vsftpd/chroot_list
※chroot除外するユーザを記述する(1ユーザ1行に記述するようにします)
【起動設定】
起動
# /etc/init.d/vsftpd start
自動起動
# chkconfig vsftpd on
ランレベル確認
# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
【データ移行】
さてここから旧サーバからデータを移行します。ただ単に移行するだけではなく、タイムスタンプをそのまま引き継ぐようにしたいと思います。
※移行元もvsFTPDで構築されており設定もほぼ同じ構成になっています。
- 移行元サーバIP 192.168.0.5
- 移行先サーバIP 192.168.0.6
ユーザごとにデータ(public_html以下)をアーカイブして圧縮します。
サーバにログイン(ssh等)してrootになります。
# cd /home/hoge
# tar cvzf hoge_backupdata.tar.gz ./public_html/*
# ls -al
total 9860100
drwx------ 5 hoge hoge 4096 Oct 15 12:45 .
drwxr-xr-x 138 root root 4096 Sep 11 19:34 ..
-rw-r--r-- 1 hoge hoge 24 Dec 21 2004 .bash_logout
-rw-r--r-- 1 hoge hoge 191 Dec 21 2004 .bash_profile
-rw-r--r-- 1 hoge hoge 124 Dec 21 2004 .bashrc
-rw-r--r-- 1 hoge hoge 383 Dec 21 2004 .emacs
drwxr-xr-x 2 hoge hoge 4096 Jul 2 2005 etc
drwx------ 6 hoge hoge 4096 Sep 14 21:05 Maildir
-rw-r--r-- 1 root root 10086831455 Oct 14 19:59 hoge_backupdata.tar.gz
drwxr-xr-x 85 hoge hoge 4096 Oct 15 12:45 public_html
FTPのホームディレクトリに移動する。
# mv ./hoge_backupdata.tar.gz ./public_html
【移行先192.168.0.6での作業】
サーバにログイン(ssh等)してrootになります。
FTPコマンドを使用して移行元サーバにログインします。
# ftp 192.168.0.5
Connected to 192.168.0.5.
220 unknown.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.5:root):hoge ← 移行元サーバのユーザ
331 Please specify the password.
Password: ← パスワード入力
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ログインが成功しました。もし以下のようなメッセージが表示された場合はログインに失敗ですのでftpコマンドから抜けて再度ログインをします。
530 Login incorrect.
Login failed.
ftp> quit
# もう一度”ftp 192.168.0.5”でログインを試みます。
移行元サーバで作成したアーカイブデータをダウンロードします。
ftp>get hoge_backupdata.tar.gz
・
・
ftp>quit
移行先のpublic_html(/home/hoge/public_html)ディレクトリを削除します。
※public_htmlの中身があるときは事前にバックアップを取っておきます。
# tar zxvf hoge_backupdata.tar.gz
解凍後public_htmlが出来上がりますのでパーミッション等を変更して完了です。
# chown -R hoge.hoge ./public_html
# chmod -R 700 ./public_html
0 件のコメント:
コメントを投稿