LinuxでのFTPサーバの構築方法

LinuxでのFTPサーバの構築方法

Linuxエンジニア 案件・求人一覧はこちら

FTPサーバとは?

FTPとは、File Transfer Protocolの頭文字を取ったもので、ファイルをコンピュータ間で転送するためのプロトコルのことです。FTPクライアントとFTPサーバから構成されます。FTPの使用例として、ホームページ作成時にローカルマシンからLinuxで構成されたWebサーバにファイルを転送する際などがあげられます。この記事では、LinuxでのFTPサーバの構築方法を解説します。今回はCentOS 8を使いますが、大筋では他のLinuxも変わりありません。

FTPサーバの設定方法

vsftpdのインストール方法

FTPサーバは、Linuxにvsftpdというパッケージをインストールして、サービスとして起動しておくことで構築します。CentOS 8の場合dnf -y install vsftpdで大丈夫です。-yは、インストール途中のYes/Noに対し全てYesで答えます、というオプションです。

chroot

通常、FTPサーバでは、接続してきたクライアントに対し、Linux上でより上位のディレクトリに行けないように構築します。これをchrootと言います。これは、少し面倒です。まず、vsftpdの設定ファイルである、/etc/vsftpd/vsftpd.confを編集する必要があります。次の3行のコメントアウトを外して有効にします。chroot_local_user=NOchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list

それから、次の設定を書き加えます。

userlist_enable=YESuser_config_dir=/etc/vsftpd/user_confallow_writeable_chroot=YES

次に、vi /etc/vsftpd/chroot_listでFTPに使うLinuxのユーザー名を書きましょう。ユーザー名をただ書くのみです。ただし、FTPはログインして行うので、ログインできるユーザー名にする必要があります。

それから、mkdir /etc/vsftpd/user_confでuser_confディレクトリを作成し、中に先ほど設定したFTPのユーザー名のファイルを作ります。そのファイルにlocal_root=(Linuxサーバーでのホームディレクトリ)と書きます。こうすることで、FTPサーバにログインできるユーザーを制限し、かつ、FTPサーバにログインした時のホームディレクトリが設定され、かつ、そのホームディレクトリより上位のディレクトリには移動できないようにFTPサーバを構築できるのです。

たとえば、ftp-userというユーザーにFTPを許可すると

[root@118-27-39-100 ~]# cd /etc/vsftpd[root@118-27-39-100 vsftpd]# ls -ltotal 28-rw-r–r– 1 root root 9 May 20 07:43 chroot_list-rw——- 1 root root 125 May 14 2019 ftpusersdrwxr-xr-x 2 root root 4096 May 20 07:49 user_conf-rw——- 1 root root 361 May 14 2019 user_list-rw——- 1 root root 5197 May 20 08:44 vsftpd.conf-rwxr–r– 1 root root 348 May 14 2019 vsftpd_conf_migrate.sh[root@118-27-39-100 vsftpd]# cat chroot_listftp-user[root@118-27-39-100 vsftpd]# cd user_conf[root@118-27-39-100 user_conf]# ls -ltotal 4-rw-r–r– 1 root root 26 May 20 07:49 ftp-user[root@118-27-39-100 user_conf]# cat ftp-userlocal_root=/home/ftp-user

という設定になります。

最低限の設定

以下はいずれも、/etc/vsftpd/vsftpd.confに書き加えてください。まずforce_dot_files=YESこれは、.で始まるファイルを一覧で表示する、というオプションです。次にuse_localtime=YESローカルタイムを使った方が何かと便利です。以上でvsftpdの設定は終了です。

FTPサーバの起動方法

ファイアウォールの設定を忘れずに

CentOS 8にはデフォルトでファイアウォールが構築されていますので、ここまで設定してFTPサーバを起動しても、ファイアウォールの設定を変えないと接続が弾かれてしまいます。CentOS 8のファイアウォールでFTPを開放するにはfirewall-cmd –add-service=ftp –permanentと打ち込みます。successと表示されたらfirewall-cmd –reloadでファイアウォールを「リロード」します。これでファイアウォールの設定は更新されます。

サービスの起動

さあ、いよいよFTPサーバの構築です。systemctl start vsftpdと打ち込んでください。systemctlはCentOS 8でサービスを制御するコマンドです。これでLinux上でFTPサーバを構築することができました。

FTPの方法

FTPを使ってみる

以下はWindowsのコマンドプロンプトでFTPクライアントを起動し、118.27.39.100に構築したFTPサーバに接続したときの例です。

ftp> open 118.27.39.100118.27.39.100 に接続しました。220 (vsFTPd 3.0.3)200 Always in UTF8 mode.ユーザー (118.27.39.100:(none)): ftp-user331 Please specify the password.パスワード:230 Login successful.ftp> ls -l200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw——- 1 1000 1000 37 May 20 07:47 .bash_history-rw-r–r– 1 1000 1000 18 Nov 09 2019 .bash_logout-rw-r–r– 1 1000 1000 141 Nov 09 2019 .bash_profile-rw-r–r– 1 1000 1000 312 Nov 09 2019 .bashrc226 Directory send OK.ftp: 280 バイトが受信されました 0.01秒 35.00KB/秒。

この状態でファイルの受け渡しが可能です。もちろん他のFTPクライアントを使用することも可能です。

FTPサーバは簡単に構築できる

以上、LinuxでのFTPサーバの構築方法の解説でした。この記事で解説したように、FTPサーバは簡単に構築できます。FTPできるユーザーを増やしたかったら/etc/vsftpd/chroot_listにユーザー名を書き込むだけです(1行に1ユーザー書き込んでください)。忘れずに、/etc/vsftpd/user_confにそのユーザー名のファイルを作り、FTPのルートディレクトリを指定しましょう。原理的にはこれで、多数のユーザーがアクセスしてくるCMSのようなWebサーバのFTPサーバも構築できてしまいます。覚えてしまえば簡単ですので、ぜひ使いこなしてください。

Linuxエンジニア 案件・求人一覧はこちら

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。

合わせて読みたい

Linuxを使って環境構築を行おう! hbspt.cta.load(20723875, '0f72735d-da9f-4038-a47b-134730f22cb0', {"useNewLoader":"true","region":"na1"}); Linuxとは? Linuxの特徴 LinuxはWindowsやmacOSなど...
サーバーエンジニアが職場で使うLinuxディストリビューションの紹介1【Ubuntu】... Ubuntu(ウブントゥ)は、Linuxディストリビューションの中でも代表的なOS(オペレーティングシステム)の1つです。 サーバー用途でもデスクトップ用途でも幅広く使用されており、サーバーエンジニアになればUbuntuを扱う機会は増えるでしょう。 ここではUbuntuについて解説していきます。...
手軽にサーバー上のファイルを編集できる「viエディタ」の基礎知識【Linux】... ここではLinuxを扱うときに便利な「viエディタ」について紹介していきます。 UNIX環境で人気があるテキストエディタですが、一体どのような特徴があるのでしょうか? Linuxを扱うのであれば基礎の基礎ともいえる知識なので、ぜひ覚えていってください。 hbspt.cta.load(2072...
エンジニアが知っておきたいLinuxの文字列置換について。bashやsedの書式を解説... Linuxは、アプリケーション開発やサーバ構築、組み込みシステムの開発など、様々な用途で使用されています。 エンジニアの仕事にLinuxのスキルが求められることも多く、Linuxを学ぶことで仕事の幅が広がるといえるでしょう。 本記事では、エンジニアなら知っておきたいLinuxの文字列置換につ...
【Linux初心者のエンジニア向け】よく使うLinuxコマンドと覚え方... Linuxを使い始めて間もない方は、「コマンドを覚えられない」という悩みを抱えているかもしれません。 そういった方々のために、この記事ではコマンドの簡単な覚え方を紹介していきます。 Linux初心者のエンジニアの方はぜひ目を通してください。 hbspt.cta.load(20723875, ...