Fedora 29: FTPサーバのProFTPDをインストールする

FTPサーバのProFTPDをインストールする手順を記載します。

1 ProFTPDのインストール

ProFTPDパッケージをインストールします。

$ sudo dnf install -y proftpd proftpd-utils
  • ローカルユーザによるアップロードを可能にします。
  • 匿名ユーザによる読み込みを可能にします。
  • 匿名ユーザによるアップロードを許可しません。
$ sudo sed \
-e 's;PROFTPD_OPTIONS="\(.*\)";PROFTPD_OPTIONS="-DANONYMOUS_FTP \1";g' \
-i /etc/sysconfig/proftpd

ファイアウォールでFTP用のポートを開放します。

$ sudo firewall-cmd --add-service=ftp --permanent
$ sudo firewall-cmd --reload

ProFTPDを有効にして再起動します。

$ sudo systemctl enable proftpd
$ sudo systemctl restart proftpd

anonymousユーザ向けにファイルを設置します。

$ echo "anon" | sudo tee /var/ftp/anon.txt

1.1 /sbin/nologinを/etc/shellsに追加して匿名ユーザのログインを可能にする

以前のバージョンのFedoraでは/sbin/nologinが/etc/shellsに記載されていましたが、現行のバージョンのFedoraでは記載されていません。

これが匿名ユーザのログインを阻害します。 journaldには以下のログが出力されます。

proftpd USER ftp (Login failed): Invalid shell: '/sbin/nologin'

匿名ユーザのログインを可能にする為に、以下のように/sbin/nologinを /etc/shellsに追加します。

$ if ! grep "/sbin/nologin" /etc/shells > /dev/null; then
  echo "/sbin/nologin" | sudo tee -a /etc/shells
fi

2 ProFTPDへの接続

lftpでProFTPDへ接続します。

$ sudo dnf install -y lftp

ユーザ名を指定して接続します。パスワードは-u <username>,<password>で指定できます。接続するとホームディレクトリが表示されます。ユーザの権限の範囲内ですべてのディレクトリへアクセスできます。

$ lftp -u hiroom2 ftp-server.hiroom2.com
Password:
lftp hiroom2@ftp-server.hiroom2.com:~> pwd
ftp://hiroom2@ftp-server.hiroom2.com/%2Fhome/hiroom2
lftp hiroom2@ftp-server.hiroom2.com:~> ls /
drwxr-xr-x    2 0        0            4096 Jul 29 07:12 bin
drwxr-xr-x    4 0        0            1024 Aug 05 12:16 boot
drwxrwxr-x    2 0        0            4096 Oct 09  2016 cdrom
-rw-------    1 0        0        17711104 Jan 21  2017 core
drwxr-xr-x   21 0        0            4020 Aug 06 01:22 dev
drwxr-xr-x  133 0        0           12288 Aug 06 01:22 etc
drwxr-xr-x    4 0        0            4096 Aug 06 01:22 home
<snip>

ユーザ名を指定しない場合、匿名ユーザで接続します。 anon_rootで指定したディレクトリが表示され、それより上のディレクトリへは移動できません(chrootした状態となります)。

$ lftp ftp-server.hiroom2.com
lftp ftp-server.hiroom2.com:~> pwd
ftp://ftp-server.hiroom2.com
lftp ftp-server.hiroom2.com:~> ls /
-rw-r--r--    1 0        0               5 Aug 06 01:22 anon.txt