vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

導入

この章では、主に Linux で FTP サーバーを構築するプロセスを紹介します。習得すべき重要なポイントは、構成ファイルの適切な構成です。

知識ポイント

Linuxで使用されるFTPはvsftpです
FTP には 3 つのログイン方法があります。

  • 匿名ログイン: ユーザーパスワードは不要
  • ローカルユーザーログイン: ローカルユーザー名とパスワードを使用してログインします
  • 仮想ユーザーモード: ログインにはユーザー名とパスワードも使用しますが、そのユーザーは Linux で作成されたユーザーではありません。

FTPをインストールする

YUMを使用してインストールする

yum -y vsftpdをインストールします

ファイル構成

インストール後、/etc/vsftpd/ パスに 3 つの設定ファイルが作成されます。

vsftpd.conf: メイン設定ファイル

ftpusers: FTP サーバーにアクセスできないユーザーを指定します。ここでのユーザーには、root などの重要なユーザーが含まれます。

user_list: 指定されたユーザーが FTP サーバーにアクセスできるかどうかは、vsftpd.conf ファイルの userlist_deny 設定によって決まります。userlist_enable=YES、userlist_deny=YES、userlist_file=/etc/vsftpd/user_list。これらの 3 つの設定により、ファイル内のユーザーは FTP にアクセスできます。

メイン設定ファイルのデフォルト設定を表示する

cat /etc/vsftpd/vsftpd.conf |grep -v '^#';

anonymous_enable=YES #匿名ユーザーを許可する

local_enable=YES #ローカルユーザーアカウントを使用したログインを許可する

write_enable=YES #FTP ユーザーがデータを書き込めるようにする

connect_from_port_20=YES #ポート20経由でデータを送信

匿名を有効にする=はい
ローカル有効=はい
書き込み有効=はい
ローカル_umask=022
dirmessage_enable=はい
xferlog_enable=はい
ポート20からの接続=はい
xferlog_std_format=はい
聞く=はい

pam_service_name=vsftpd
tcp_wrappers=はい
chroot_local_user=はい

その他のパラメータの説明は次のとおりです。

ftpd_banner=FTPサービスへようこそ: サーバーに接続した後のウェルカムメッセージを設定します

idol_session_timeout=60: リモートクライアント接続を制限した後、確立された制御接続は、一定時間操作が行われないと切断されます (秒単位)

data_connection_timeout=120: クライアントがデータを送信しているときのアイドルデータ中断時間を設定します

accept_timeout=60は、接続が自動的に確立されるまでの時間を設定します。

connect_timeout=60 は、データ接続の最大アクティブ化時間、つまり切断されて他のユーザーが使用するまでにかかる時間を設定します。

max_clients=200 は、サーバーへの同時クライアント接続の総数が 200 であることを示します。

max_per_ip=3は、クライアントあたりの最大接続数が3であることを示します。

local_max_rate=50000 (50kbytes/sec) ローカルユーザーの最大転送速度制限

anon_max_rate=30000 匿名ユーザーの最大送信速度制限

pasv_min_port=ポート

pasv-max-prot=ポート番号は最大ポートと最小ポートを定義し、0 は任意のポートを意味します。これはクライアント接続のポートを指定します。

listen_address=IP アドレスは、FTP サービスがリッスンするアドレスを設定します。このアドレスは、クライアントが接続に使用できます。

listen_port=ポート番号はFTP作業用のポート番号を設定します。デフォルトは21です。

local_root=path は、ログインできるすべてのユーザーのログイン アカウントのホーム ディレクトリを定義します。指定しない場合は、各ユーザーは個人のホーム ディレクトリに入ります。

chroot_local_user=yes/no ローカル システム アカウント ユーザーのホーム ディレクトリをロックするかどうか (すべて)。ロック後、ユーザーはユーザーのホーム ディレクトリ /home/user にのみアクセスできます。

chroot_list_enable=yes/no ホームディレクトリ内のユーザーリストをロックしないようにする

chroot_list_file=/etc/vsftpd/chroot_list はリストファイルを指定します

userlist_enable=YES/NO ユーザーリストファイルを読み込むかどうか。

userlist_deny=YES は、上記でロードされたユーザーがログインできることを意味します。

userlist_file=/etc/vsftpd/user_list リストファイルを指定します

FTP接続ユーザーを作成する

ユーザーftpuserを作成する
ユーザー追加 ftpusr

ユーザーにFTPアクセスのみを許可し、ログインは許可しないように設定する
usermod -s /sbin/nologin ftpuser

ユーザーパスワードの設定
パスワード ftpusr

ユーザーのデフォルトのホーム ディレクトリは /home の下にあり、現在のユーザーはホーム ディレクトリにのみアクセスできます。

ユーザーのホームディレクトリを/mntに変更する

usermod -d /mnt ftpuser

FTPサービスを開始する

service vsftpd start

テスト

/mntディレクトリにテストファイルを作成する

touch /mnt/test

FTPに接続

よくあるFTPログイン失敗の問題を解決する

Linux にはデフォルトでセキュリティ機構が備わっています。通常の FTP ポート 21 を使用して FTP サーバーに接続することはできませんが、sftp を使用することはできます。この時点で、selinux をオフにし、構成ファイルを変更してサーバーを再起動する必要があります。

vim /etc/sysconfig/selinux

selinux=disabledに変更

サーバーを再起動しない方法:

強制0を設定する

setenforce 1 : SELinux を強制モードに設定する
setenforce 0 : SELinux を permissive モードに設定する

SELinux ステータスを確認する

/usr/sbin/sestatus -v

要約する

現時点ではここに記載されていない他の設定方法がいくつかあります。ご興味があれば、詳しく調べてみてください。

以下もご興味があるかもしれません:
  • Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法
  • LINUX Centos7 ビルド vsftpd サービス
  • Linux で vsftpd をインストールして設定するための詳細な手順 (推奨)
  • Linux での VSFTP サービスのセットアップ プロセス
  • Linux sftp コマンドの使用法の概要

<<:  mysql5.7.20 のインストールと設定方法のグラフィック チュートリアル (mac)

>>:  JavaScript デザインパターン コマンドパターン

推薦する

CSS3 で複数のカスタムフォントを導入する

今日、HTML に問題を発見しました。多くのデフォルト フォントが提供されていますが、「Bold」、...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...

MySQLの共有ロックと排他ロックの使用例の分析

この記事では、例を使用して MySQL の共有ロックと排他ロックの使用方法を説明します。ご参考までに...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

20200804追記:記事の内容に誤りがある可能性があります。他の回答を検索することもできます。 d...

電子メールの HTML ページを作成するための原則の概要

HTML メールはこのサイト上の独立したホスト ページではないため、他の誰かによってホストされていま...

ノードでシェルスクリプトを使用する方法

背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...

MySQL データ型 DECIMAL の詳細な分析

序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...

JavaScriptは双方向リンクリストプロセス分析を実装します

目次1. 二重連結リストとは何か2. 双方向リンクリストのカプセル化3. 双方向リンクリストの一般的...

MySQLプロセス関数の一般的な使用例の分析

この記事では、例を使用して MySQL プロセス関数の一般的な使用方法を説明します。ご参考までに、詳...

Vueは小さなカウントダウン機能を実装します

多くのプロジェクトでは、検証コードの送信など、カウントダウン機能を実装する必要があります。ここで、簡...

Vuex でゲッターとアクションを使用するための追加手順

予備的注釈1.Vue2.xとVue3.xの違い: Vue 3.x にはヘルパー関数はありません。 V...

SQLクエリの実行順序をゼロから学ぶ

SQL クエリ ステートメントの実行順序は次のとおりです。 (7)選択 (8) DISTINCT &...

MySQL 外部キー制約の無効化と有効化コマンド

MySQL 外部キー制約の無効化と有効化: MySQL 外部キー制約が有効になっているかどうかは、グ...

Ubuntu 向け VMware Tools のインストールと構成のチュートリアル

以前、ブロガーは VMware 仮想マシンに Ubuntu システムをインストールしました。まだイン...