Ubuntu 16.04 で FTP サーバーを構築するチュートリアル

Ubuntu 16.04 で FTP サーバーを構築するチュートリアル

Ubuntu 16.04 FTP サーバーをビルドする

ftpをインストールする

ftp をインストールします:

sudo apt-getアップデート
sudo apt-get で vsftpd をインストールします

ftp がインストールされているかどうかを確認します。

vsftpd --バージョン

設定ファイルを変更する

設定ファイルを開くには、sudo コマンドを使用してルート権限を取得する必要があることに注意してください。

sudo vim /etc/vsftpd.conf

次の変更を加えます。

# 設定ファイルの例 /etc/vsftpd.conf
#
# デフォルトのコンパイル設定はかなり偏執的です。このサンプルファイル
# ftp デーモンをより使いやすくするために、少し緩和します。
# コンパイルされたすべてのデフォルトについては、vsftpd.conf.5 を参照してください。
#
# 必ずお読みください: このサンプル ファイルは、vsftpd オプションの完全なリストではありません。
# vsftpdの完全な概要を知るには、vsftpd.conf.5のマニュアルページをお読みください。
# 機能。
#
#
# スタンドアロンで実行しますか? vsftpdはinetdからでもスタンドアロンでも実行できます
# デーモンは initscript から起動されました。
聞く=いいえ
#
# このディレクティブは、IPv6ソケットのリスニングを有効にします。デフォルトでは、リスニングは
# IPv6の「any」アドレス(::)では、IPv6とIPv6の両方からの接続を受け入れます
# IPv4クライアント。IPv4とIPv6の両方でリッスンする必要はありません。
# ソケット。特定のソケットでリッスンしたい場合など、
# アドレス)の場合は、2つの設定でvsftpdのコピーを2つ実行する必要があります。
# ファイル。
listen_ipv6=はい
#
# 匿名 FTP を許可しますか? (デフォルトでは無効)。
匿名を有効にする=いいえ
#
# ローカル ユーザーがログインできるようにするには、これをコメント解除します。
ローカル有効=はい
#
# あらゆる形式の FTP 書き込みコマンドを有効にするには、これをコメント解除します。
書き込み有効=はい
#
# ローカルユーザーのデフォルトのumaskは077です。これを022に変更することもできます。
# ユーザーがそれを期待している場合(022は他のほとんどのftpdで使用されます)
ローカル_umask=022
#
# 匿名FTPユーザーがファイルをアップロードできるようにするには、このコメントを解除します。
# 上記のグローバル書き込み許可が有効な場合に効果があります。また、
# 明らかに、FTP ユーザーが書き込み可能なディレクトリを作成する必要があります。
#anon_upload_enable=はい
#
# 匿名FTPユーザーが作成できるようにするには、このコメントを外します
# 新しいディレクトリ。
#anon_mkdir_write_enable=はい
#
# ディレクトリメッセージを有効にする - リモートユーザーが
# 特定のディレクトリに移動します。
dirmessage_enable=はい
#
# 有効にすると、vsftpdは時刻とともにディレクトリリストを表示します
# ローカルタイムゾーンで表示します。デフォルトではGMTで表示されます。
# MDTM FTPコマンドによって返される時間もこの影響を受けます
# オプション。
ローカルタイムを使用する=はい
#
# アップロード/ダウンロードのログ記録を有効にします。
xferlog_enable=はい
#
# PORT 転送接続がポート 20 (ftp-data) から発信されていることを確認します。
ポート20からの接続=はい
#
# 必要に応じて、アップロードされた匿名ファイルの所有者を
# 別のユーザー。注意!アップロードしたファイルに「root」を使用するのは
# 推奨!
#chown_uploads=はい
#chown_username=誰でも
#
# 必要に応じてログファイルの保存場所を変更できます。デフォルトは
# 下に。
xferlog_file=/var/log/vsftpd.log
#
# 必要に応じて、ログ ファイルを標準の ftpd xferlog 形式で保存できます。
# この場合、デフォルトのログ ファイルの場所は /var/log/xferlog であることに注意してください。
xferlog_std_format=はい
#
# アイドル セッションのタイムアウトのデフォルト値を変更できます。
#アイドルセッションタイムアウト=600
#
# データ接続のタイムアウトのデフォルト値を変更できます。
#データ接続タイムアウト=120
#
# システム上で一意のユーザーを定義することをお勧めします。
# ftp サーバーは完全に分離された権限のないユーザーとして使用できます。
#nopriv_user=ftpsecure
#
# これを有効にすると、サーバーは非同期ABORリクエストを認識します。
# セキュリティ上推奨(コードは単純ではありません)。有効にしないと、
# ただし、古い FTP クライアントを混乱させる可能性があります。
#非同期処理を有効にする=はい
#
# デフォルトでは、サーバーはASCIIモードを許可するように見せかけますが、実際には無視します
# リクエスト。以下のオプションをオンにすると、サーバーは実際にASCIIコードを実行します。
# ASCII モードの場合のファイルのマングリング。
# 一部のFTPサーバーではASCIIサポートによりサービス拒否攻撃が発生する可能性があるので注意
# ASCII モードでコマンド「SIZE /big/file」を使用して攻撃 (DoS) を実行します。vsftpd
#はこの攻撃を予測し、常に安全であり、
# 生のファイル。
# ASCII マングリングはプロトコルの恐ろしい機能です。
#ascii_upload_enable=はい
#ascii_download_enable=はい
#
# ログインバナー文字列を完全にカスタマイズできます:
ftpd_banner=blah FTP サービスへようこそ。
#
# 許可しない匿名の電子メールアドレスのファイルを指定できます。どうやら
# 特定の DoS 攻撃に対抗するのに役立ちます。
#電子メールの拒否を有効にする=はい
# (デフォルトは以下)
#banned_email_file=/etc/vsftpd.banned_emails
#
# ローカルユーザーをホームディレクトリに制限することができます。
# chroot_local_user を使用する前に、これに伴うリスクを検討してください。
# chroot_list_enable は以下を参照してください。
#chroot_local_user=はい
#
# ローカルユーザーのホームにchroot()する明示的なリストを指定できます
# ディレクトリ。chroot_local_userがYESの場合、このリストは
# ユーザーに chroot() しないように指示します。
# (警告!chrootは非常に危険です。chrootを使用する場合は、
# ユーザーは、
# chroot)
chroot_local_user=はい
chroot_list_enable=はい
# (デフォルトは以下)
chroot_list_file=/etc/vsftpd.chroot_list
#
# 組み込みlsに「-R」オプションを有効にすることができます。これは、
# リモートユーザーが大規模なネットワークで過剰なI/Oを引き起こすのを防ぐため、デフォルト
# サイト。ただし、「ncftp」や「mirror」などの一部の壊れたFTPクライアントは、
# 「-R」オプションが存在するため、これを有効にすることが強く推奨されます。
#ls_recurse_enable=はい
#
# カスタマイズ
#
# vsftpdの設定の一部はファイルシステムのレイアウトに適合しません。
# デフォルト。
#
# このオプションは空のディレクトリ名である必要があります。また、
# ディレクトリはFTPユーザーによる書き込みが禁止されています。このディレクトリは
# 安全なchroot() jailとしてvsftpdはファイルシステムを必要としない場合があります
# アクセス。
secure_chroot_dir=/var/run/vsftpd/空
#
# この文字列は、vsftpd が使用する PAM サービスの名前です。
pam_service_name=ftp
#
# このオプションはSSLに使用するRSA証明書の場所を指定します
# 暗号化された接続。
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=いいえ

#
# これをコメント解除して、vsftpd が utf8 ファイルシステムを使用していることを示します。
utf8_ファイルシステム=はい

編集モードを終了したら、:wq を使用して vim を保存して終了します。

FTPユーザーの作成

ここでの操作には root 権限が必要です。操作が拒否された場合は、sudo を使用します。

sudo mkdir /home/ftpdir
sudo useradd ftpdir -d /home/ftpdir -m
sudo パスワード ftpdir
sudo mkdir /home/ftpdir/ftp
sudo chmod 777 -R /home/ftpdir/ftp
usermod -s /sbin/nologin ftpdir

設定が完了したら、ユーザーを追加します。

sudo vim /etc/vsftpd.chroot_list

ファイルに ftpdir を追加します。

ftpdir

ここまでで、FTP のセットアッププロセス全体は完了しており、次のステップはそれをどのように使用するかです。

ftpを開始または再起動する

ftp を開始または再起動します。

サービス vsftpd 開始サービス vsftpd 再起動

FTP ステータスを確認します。

サービス vsftpd ステータス

ftp サービスをシャットダウンするには、次のコマンドを使用します。

サービス vsftpd 停止

サーバーのIPを表示

コマンドターミナルを開く

ロボット@ロボット:~$ ifconfig
enp4s0f2 リンク encap:イーサネット HWaddr 74:d0:2b:ec:fa:f9 
   アップブロードキャストマルチキャストMTU:1500メトリック:1
   RXパケット:0 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
   TX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
   衝突:0 トランザクションキュー数:1000 
   RXバイト: 0 (0.0 B) TXバイト: 0 (0.0 B)

lo リンクカプセル化:ローカルループバック 
   inet アドレス:127.0.0.1 マスク:255.0.0.0
   inet6 アドレス: ::1/128 スコープ:ホスト
   アップループバック実行中 MTU:65536 メトリック:1
   RXパケット:12840 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
   TXパケット:12840 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
   衝突:0 トランザクションキュー数:1000 
   RX バイト:1174976 (1.1 MB) TX バイト:1174976 (1.1 MB)

wlp3s0 リンク encap:イーサネット HWaddr 24:fd:52:85:42:0c 
   inet アドレス:192.168.1.110 Bcast:192.168.1.255 マスク:255.255.255.0
   inet6 アドレス: fe80::c13c:b38e:69c7:cdf2/64 スコープ:リンク
   アップブロードキャスト 実行中マルチキャスト MTU:1500 メトリック:1
   RXパケット:99764 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
   TXパケット:95225 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
   衝突:0 トランザクションキュー数:1000 
   RX バイト:98718687 (98.7 MB) TX バイト:14326894 (14.3 MB)

ここでの接続は WiFi なので、wlp3s0 で見つかった対応する IP アドレスは 192.168.1.110 です (ネットワーク ケーブルに接続されている場合は、最初のセクションで IP を見つけます。各コンピューターの構成は異なるため、実際の状況に応じて検討できます)

ログイン

FileZillaを使用するか、ファイルマネージャを開いてftp://ipaddressと入力します。

コンピュータを開き、サーバーのIPアドレスftp://192.168.1.110を入力します。
ここに画像の説明を挿入

ユーザー名とパスワードを入力します。ここで使用するユーザー名はftpdir 、パスワードは123456です。

ここに画像の説明を挿入

最後に、サーバー上に作成されたフォルダーを確認できます。

ここに画像の説明を挿入

Ubuntu 上のファイルの場所

FTP サーバーの構築とテストが完了したら、ファイルはサーバーのどこに保存され、どのように見つけるのでしょうか?
ユーザーの作成セクションでは、 /homeディレクトリにftpdirフォルダが作成されます。ftpdir フォルダには、読み取りおよび書き込み可能なフォルダftpdir ftp作成されます。以降のファイル転送では、 ftpフォルダに切り替えてファイルを検索できます。ここでの操作では、権限を取得するためにsudoを使用する必要があります。

robot@robot:~$ cd /home/ftpdir/ftp
ロボット@ロボット:/home/ftpdir/ftp$ ls
ルービックキューブ.zip

この時点で、全体のプロセスは終了です。構築プロセス中、インターネット上の他の先人の経験を参考にしました。これは学習の途中でのメモにすぎません。記載されている内容に誤りがある場合は、ご指摘ください。

要約する

上記は、Ubuntu 16.04 環境で FTP サーバーを構築する方法に関するチュートリアルです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Linux (Ubuntu) で FTP を使用するチュートリアル
  • UbuntuでFTPサーバーを設定する詳細な説明
  • Ubuntuにvsftpd FTPをインストールする詳細な手順
  • クラウド サーバー上で IIS を使用して FTP サイトを構築する方法の図
  • Windows で FTP サーバーへの匿名アクセスを構成する方法
  • Linux 上で FTP サーバーを構築する
  • Linux環境でFTPサーバーを素早く構築する方法の紹介
  • Windows Server 2008R2 FTP サーバーのインストール グラフィック チュートリアル

<<:  MySQL プロンプト「通信パケットの読み取り中にタイムアウトになりました」の解決方法

>>:  Vue での Vue.prototype の使用に関する詳細な説明

推薦する

MySQLデータベースの基礎知識

目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...

MySQL で日付を保存するためのベスト プラクティス ガイド

目次序文時間型を保存するのに文字列を使用しないでくださいMySQL の日付型日時タイムスタンプTIM...

HTML における DTD の使用法の概要

DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...

jQueryは画像追従効果を実現します

この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

CSS ロリポップを描くサンプルコード

背景: 毎日少しずつ進歩し、少しずつ積み重ねていけば、どんどん良くなっていきますコード: <!...

MySQL Innodbの主な機能挿入バッファ

目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...

JavaScript でフロントエンドのカウントダウン効果を実装する

この記事では、フロントエンドのカウントダウン効果を実現するためのJavaScriptの具体的なコード...

フレックスレイアウトによるシームレスなスクロールのサンプルコード

この記事では、シームレスなスクロールを実現するためのフレックスレイアウトのサンプルコードを主に紹介し...

vscodeを使用してuniappを開発する方法

私はフロントエンド プロジェクトの開発に常に vscode を使用してきたため、現在ではいくつかの小...

JavaScript の useRef と useState の紹介

目次1. useStateフック2. useRefフック3. useRef と useState 4...

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...

docker-compose を使用して mongodb と mysql を構築する詳細なプロセス

docker-compose で mongodb と mysql を構築する詳細な方法を見てみましょ...

MySQL の起動時に InnoDB エンジンが無効になる問題の解決方法

問題を見つける今日、仕事中に、ローカル データベースから仮想マシン CentOS 6.6 上のデータ...

node.js で Web サーバーを作成する手順の詳細な説明

序文node.js でサーバーを作成するのは非常に簡単です。小さいながらも完全な Web サーバーを...

弾幕効果を実現するためのjQuery

この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...