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 の使用に関する詳細な説明

推薦する

HTML iframe 使用状況の概要の収集

Iframe 使用状況の詳細な分析<iframe frameborder=0 width=17...

MySQL の 4 つのトランザクション分離レベルの詳細な説明

この実験のテスト環境: Windows 10+cmd+MySQL5.6.36+InnoDB 1. ト...

Reactイベントスロットリング効果が失敗する理由と解決策

目次ここでの問題は次の通りです:解決策1:解決策2: コンストラクタで初期化を割り当てる採掘場の概要...

nginxを使用してドメイン名ベースの仮想ホストを構成する

1. 仮想ホストとは何ですか?仮想ホストは、特殊なテクノロジーを使用して、実行中のサーバーを論理的に...

動的なデジタル時計を実装するJavaScript

この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...

MySQLのワークベンチ例の詳細な説明

MySQL Workbench - モデリングおよび設計ツール1. モデルは、最も効果的で高性能なデ...

Vue3 + TypeScript 開発の概要

目次Vue3 + TypeScript 学習1. 環境設定1.1 最新のVue scaffoldin...

Ubuntu 20.04 CUDA & cuDNN のインストール方法 (グラフィカル チュートリアル)

CUDA インストール cuda をダウンロードサポートされているcudaバージョンを表示するには...

検証コードケースのJavaScript実装

この記事では、検証コードの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

Mysqlのマージ結果と水平スプライシングフィールドの実装手順

序文最近、レポート機能に取り組んでいたのですが、ある月に各部署に入社した人と退職した人の数をカウント...

SSL で Nginx リバース プロキシを構成する簡単な手順

序文リバース プロキシは、Web 経由で行われたリクエスト (http と https の両方) を...

FirefoxのWeb開発者を使用してWebページのスタイルを無効にする方法

前提条件: Web開発者プラグインがインストールされている操作手順: [ツール] -> [We...

Trash-Cli: Linux のコマンドラインごみ箱ツール

ゴミ箱は Linux ユーザー、Windows ユーザー、Mac ユーザーにとって非常に一般的なので...

Vue Routerはバックグラウンドデータに応じて異なるコンポーネントをロードします

目次実際のプロジェクトで遭遇する要件実装が間違っているところもある私は個人的に、実装するより良い方法...

MySQL 8.0はJSONを扱えるようになりました

目次1. 概要2. JSON基本ツール3. JSONパス式4. JSONを検索して変更する序文:長い...