vsftpdの導入

UbuntuにFTPサーバーvsftpdを導入した時のメモ。

FTP用のユーザーを作る

とりあえずFTP用のユーザーを作ってみる。

$ sudo adduser -s /usr/sbin/nologin hogehoge

でsshとかからログインできないユーザーを作成できるらしい。
とりあえずパスワードの変更。

$ sudo passwd hogehoge
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

これでOKかな?
試しにsshでログインを試みてみたけど接続できなかったのでたぶん大丈夫だろう。

vsftpdのインストール

インストールはapt-getから。

$ sudo apt-get install vsftpd

設定ファイルの場所は

/etc/vsftpd.conf

ということで設定ファイルを編集。

$ sudo vi /etc/vsftpd.conf

vsftpdの再起動

以下のコマンドで再起動。

$ sudo /etc/init.d/vsftpd restart

するとなんか警告が・・・
以下のコマンドだとすんなりリスタートができた。何が違うのかはわからないが・・・

$ sudo service vsftpd restart

接続

とりあえず外部から接続を試みた。
が、繋がらない。
プロセスを確認してみたら一応動いてはいるみたい。
localhostのポートを調べてみたらちゃんと開いてる。
そこで外部からポートをチェックしてみると80番と22番しか開いていない・・・
そういえばルーターでそんな設定をしてたような・・・
サーバーは実家にあるのでたちまち設定できない。
というわけでsshからftpコマンドでlocalhostに接続してみた。
すると、今ログインしているユーザーからは接続できた。
しかし、先ほど作ったnologinのユーザーではログインできない。

$ ftp
ftp> open localhost
ftp> user
(name) : hogehoge
Password:
530 Login incorrect
Login refused.

とでる。

調べてみるとどうやら/etc/shellsというファイルを編集する必要があるみたいだ。
FTP Server
というわけで、/etc/shellsを編集。

# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/sbin/nologin

最後の行に/usr/sbin/nologinを追加。

もう一度hogehogeで接続を試みたところ、ログインはできたみたいだけど「ディレクトリを変更できない」という表示が出て終わってしまった。
なので/home/hogehogeというディレクトリを作って接続し直してみるとログインできた。

設定ファイルの変更

ユーザーhogehogeでログインした場合上位のディレクトリに移動することができたため設定ファイルのchrootの部分を変更した。

chroot_local_user=YES

そのほかの主な設定は以下の通り。

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

これでなんとかlocalhostにユーザhogehogeで接続することができるようになった。
ルーターの設定は日を改めてしよう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です