サーバーにデータを転送し、ファイルやフォルダを操作するには、FTPサーバーをインストールする必要があります。今回は、Ubuntu 20.04をサーバーとして使用し、FTPサーバーとしてvsftpd
を選択しました。このFTPサーバーは、設定が簡単で高速なため、人気のあるproftpdとは異なる選択肢です。クライアントとしては、FileZilla、Total Commander、またはmcなどを使用できます。
すべての設定はrootユーザーとして行いますが、通常のユーザーを使用している場合は、コマンドの前にsudo
を追加してください。
1. サービスをインストールします
apt update
apt install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
2. 設定を行います
元の設定ファイルのバックアップを作成します:
cp /etc/vsftpd.conf /etc/vsftpd.conf_default
ユーザーを追加し、そのパスワードを設定します:
useradd -m testuser
passwd testuser
ファイアウォールを設定します。ここではiptables
を使用します:
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables-save > /etc/iptables/rules.v4
通常、ユーザーは書き込み権限が必要です。サーバー設定でこれを許可します:
nano /etc/vsftpd.conf
write_enable=YES
設定ファイルを保存するには、Ctrl + OとEnter、終了するにはCtrl + Xを押します。その後、サービスを再起動します:
systemctl restart vsftpd.service
基本設定は完了しましたが、特定のディレクトリ(たとえば、ドメインのフォルダ)に対してFTPアクセスを設定することがよくあります。このために、ユーザーのデフォルトディレクトリを変更し、ユーザーをwww-data
グループに追加し、フォルダとファイルに対してグループの書き込み権限を付与します。デフォルトでは、書き込み権限はユーザーのみに設定されています。
usermod -d /var/www/ testuser
usermod -a -G www-data testuser
find /var/www -type d -exec chmod 775 {} \;
find /var/www -type f -exec chmod 664 {} \;
これで、指定したパスでユーザーがファイルやフォルダを操作できるようになりました。複数のサイトがある場合、それぞれにFTPユーザーを追加することができます。デフォルトでは、ユーザーは指定されたフォルダ内のサブディレクトリにしかアクセスできず、それ以上上位のディレクトリにはアクセスできません。