vsftpdの導入
UbuntuにFTPサーバーvsftpdを導入した時のメモ。
FTP用のユーザーを作る
とりあえずFTP用のユーザーを作ってみる。 [cc lang="bash"] $ sudo adduser -s /usr/sbin/nologin hogehoge [/cc] でsshとかからログインできないユーザーを作成できるらしい。 とりあえずパスワードの変更。 [cc lang="bash] $ sudo passwd hogehoge 新しいUNIXパスワードを入力してください: 新しいUNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました [/cc] これでOKかな? 試しにsshでログインを試みてみたけど接続できなかったのでたぶん大丈夫だろう。
vsftpdのインストール
インストールはapt-getから。 [cc lang="bash"] $ sudo apt-get install vsftpd [/cc] 設定ファイルの場所は [cc] /etc/vsftpd.conf [/cc] ということで設定ファイルを編集。 [cc] $ sudo vi /etc/vsftpd.conf [/cc]
vsftpdの再起動
以下のコマンドで再起動。 [cc lang="bash"] $ sudo /etc/init.d/vsftpd restart [/cc] するとなんか警告が・・・ 以下のコマンドだとすんなりリスタートができた。何が違うのかはわからないが・・・ [cc lang="bash"] $ sudo service vsftpd restart [/cc]
接続
とりあえず外部から接続を試みた。
が、繋がらない。
プロセスを確認してみたら一応動いてはいるみたい。
localhostのポートを調べてみたらちゃんと開いてる。
そこで外部からポートをチェックしてみると80番と22番しか開いていない・・・
そういえばルーターでそんな設定をしてたような・・・
サーバーは実家にあるのでたちまち設定できない。
というわけでsshからftpコマンドでlocalhostに接続してみた。
すると、今ログインしているユーザーからは接続できた。
しかし、先ほど作ったnologinのユーザーではログインできない。
[cc]
$ ftp
ftp> open localhost
ftp> user
(name) : hogehoge
Password:
530 Login incorrect
Login refused.
[/cc]
とでる。
調べてみるとどうやら/etc/shellsというファイルを編集する必要があるみたいだ。
FTP Server
というわけで、/etc/shellsを編集。
[cc]
/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
[/cc]
最後の行に/usr/sbin/nologinを追加。
もう一度hogehogeで接続を試みたところ、ログインはできたみたいだけど「ディレクトリを変更できない」という表示が出て終わってしまった。
なので/home/hogehogeというディレクトリを作って接続し直してみるとログインできた。
設定ファイルの変更
ユーザーhogehogeでログインした場合上位のディレクトリに移動することができたため設定ファイルのchrootの部分を変更した。 [cc] chroot_local_user=YES [/cc] そのほかの主な設定は以下の通り。 [cc] anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES [/cc] これでなんとかlocalhostにユーザhogehogeで接続することができるようになった。 ルーターの設定は日を改めてしよう。