vsftpdのanonymousにはまる


さくっとファイル共有したい場合、windowsだとwindows共有(samba共有)。それが使えない場合は、FTPサーバーかなと思います。

あ、tinyFTPサーバー立てとくかって人もいるかも?かなり少数派だと思うけど。

FTPサーバーをLinuxで使うならvsftpdですよね。で、LAN内で短時間使うだけなら、ユーザー登録が必要ないanonymousでいいじゃんと思い構築しようとしてドはまりした話です。

環境:Ubuntu 20.04 LTS
VSFTPDバージョン:3.0.3 (たぶんapt-getで2022年3月最新)

1.FTPが拒否される

ぎょえー。ユーザー認証すら出てこないよ、これvsftpdの特定のバージョンから書き込み(w)を共有フォルダに与えるとそうなるらしい。以前はrwx全部設定すればOKだったのに。

オーナー設定 nobody:nogroup
アクセス権 a-w (rxだけ活かすなら5なので、chmod 555でいいですね)

2.FTPが拒否されるその2

エラー 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
これはchroot先にこれをいれておけと。なるほど

allow_writeable_chroot=YES

3.anonymousでアップロードが出来ないその1

上記1の関連に絡んでvsdtpd.conf側で設定書かないとアクセスできないらしい。

write_enable=YES

でもまだアップロードできない。今度は何?

4.anoymouusでアップロードが出来ないその2

共有で指定したフォルダ(FTPのルートとなるフォルダ)にはanonymousだと直接アップロードできなくなったとの記事を発見。なぬー。解決方法はサブディレクトリを作成して、そこにアップロード。なるほど、まだアップロードできない。。勘弁して。

5.anoymouusでアップロードが出来ないその3

えーと。anonymousだとデフォルトのパーミッションが600に設定されていることが影響してるらしい。ということで、anonymousの値を変更

anon_umask=022

まだできない。

6.サブディレクトリのパーミッション

こっちは書き込み権が必要ということでアクセス権 a+w (rxだけ活かすなら5なので、chmod 777)こっちは今まで通りかーい。

今度こそアクセス出来ました。

まとめると

[vsftpd.confの設定変更]

anonymous_enable=YES
local_enable=no
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

行末追記
anon_root=/var/ftp/
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
allow_writeable_chroot=YES
no_anon_password=YES
anon_umask=022

hide_ids=YES
pasv_min_port=40000
pasv_max_port=50000

[anonymousアップロードフォルダ]

FPルートフォルダのアクセス件に書き込み(w)を入れてはいけない。
※ただし書き込み用フォルダのアクセス権には必要。

共有ディレクトリのルートの下にサブディレクトリが必要
/var/ftp/
なら
/var/ftp/pubもアップロード用に用意すること!

あー。お疲れ様です。自分。
こんなことなら通常通りidパスワード付でアクセスするftpサーバー作る方がよっぽど楽だった。

ちなみにanonymousアクセスの場合、ユーザー名はanonymous使うのが普通だけど、ftpでもいいって知ってました?こっちの方がタイプ間違わないのでイイですよね。

ubuntu20.04 LTS 長い付き合いになりそう。よろしくねー。