
以前は、FTPサーバーを複数回構成する必要があり(数分で完了 )、どういうわけかProFtpdが無条件の候補であることが判明しました。 この同志はそれほど前に問題を抱えていなかったので、彼は何か他のものを試すことに決め、後悔しませんでした
私の選択はすばらしいPure-FTPd FTPサーバーでした。
インストール後、次の一連の機能を受け取ります。
- 各ユーザーの速度制御のダウンロードとアップロード
- ユーザーUIDおよびGUIDの選択
- 指定されたIPアドレスからのみのユーザーのアクセシビリティFTP
- ユーザーアカウントの有効化と無効化
使用されている OSはFreeBSDです。 さあ、行こう! DBMS MySqlがインストールおよび構成されていることを前提としています。 ポートからPure-FTPdをインストールします(以前のアップグレード)
cd /usr/ports/ftp/pure-ftpd make install clean
次のオプションを選択しました

インストール後、デフォルトファイルから設定を作成します
cd /usr/local/etc/ cp pureftpd-mysql.conf.sample pureftpd-mysql.conf cp pure-ftpd.conf.sample pure-ftpd.conf
メイン構成ファイルの編集
pure-ftpd.conf
#フォルダー内のすべてのユーザーをChroot`
ChrootEveryone yes
#前のオプションで「いいえ」が選択された場合、次のオプションのメンバー
#グループはchrootしません。 残りはすべてです。 したくない場合
#全員にchrootし、ChrootEveryoneとTrustedGIDのコメントを外します。
#TrustedGID 100
#顧客曲線の互換性機能を有効にする
BrokenClientsCompatibilityいいえ
#同時ユーザーの最大数
MaxClientsNumber 50
#バックグラウンドで動作(デーモン)
はい、デーモン化する
#1つのIPからの同時接続の最大数
MaxClientsPerIP 8
#すべてのクライアントコマンドを記録する場合は、これ
#ポイントは「はい」でなければなりません。 あなたも記録する必要がある場合
#サーバー応答、そしてこのアイテムを複製します。
VerboseLog no
#クライアントがある場合でも、ピリオドで始まるファイルを表示するかどうか
#明らかに、オプション「-a」を使用してこれを行う必要があるとは言わない。
DisplayDotFilesはい
#認証されたユーザーを許可しない-このFTP
#匿名のお客様のみ。
匿名のみ
#匿名を拒否-登録ユーザーのFTPを最新にします。
匿名
#syslogツール(auth、authpriv、daemon、ftp、security、user、local *)
#デフォルト-「ftp」。 「なし」-ロギングを無効にします。
SyslogFacility ftp
#Cookieを表示しますか? (フォーチュンクッキーの表示)
#FortunesFile / usr / share / fortune / zippy
#ログ内のホスト名を解決しないでください。 ログはあまり有益ではなくなり、
#必要なリソースも少なくなります。 「はい」-非常に賭けるのは理にかなっています
#ロードされたサーバー、またはアイドルDNS
はい
#最大ダウンタイム(接続切断の終了時)、分単位
#(デフォルト= 15分)
MaxIdleTime 15
#LDAP構成ファイル(README.LDAPを参照)
#LDAPConfigFile /etc/pureftpd-ldap.conf
#MySQL構成ファイル(README.MySQLを参照)
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
#Postgres構成ファイル(README.PGSQLを参照)
#PGSQLConfigFile /etc/pureftpd-pgsql.conf
#PureDBユーザーデータベース(README.Virtual-Usersを参照)
#PureDB /etc/pureftpd.pdb
#pure-authdソケットへのパス(README.Authentication-Modulesを参照)
#ExtAuth /var/run/ftpd.sock
#PAM認証を有効にする必要がある場合は、コメントを外します
#次の行
#PAMAuthenticationはい
#システム、Unix認証(/ etc / passwd)が必要な場合、
#次の行のコメントを外します
#UnixAuthenticationはい
#LDAPConfigFile、MySQLConfigFile、
#PAMAuthenticationおよびUnixAuthenticationは使用のみ可能
#1回、ただし一緒に使用できます。 たとえば、あなたが
#MySQLConfigFileを使用し、次にUnixAuthenticationを使用して、リクエストを送信します
#MySQLに。 そのようなユーザーがデータベースで見つからない場合、試行されます
#/ etc / passwdおよび/ etc / shadowのシステムユーザー。 SQLの場合
#パスワードが間違っているために認証が失敗する
#さらにユーザー検索を停止します。 認証方法
#は設定された順序で使用されます
# 'ls'コマンドの再帰制限。 最初の引数はファイルの最大数です
#表示されます。 2番目はサブディレクトリの最大数です
LimitRecursion 10000 8
#匿名には新しいディレクトリを作成する権利がありますか?
AnonymousCanCreateDirsいいえ
#システムがここに示されている値よりも多くロードされている場合、
#anonymosは何もダウンロードできません
最大負荷4
#パッシブ接続用のポートの範囲。 ファイアウォールがハッキングしている場合
#標準範囲
#PassivePortRange 30,000 50,000
#PASV / EPSV / SPSV応答の強制IPアドレス。 -NATの場合。
#シンボリックホスト名は、動的IPを使用するゲートウェイでも受け入れられます
#ForcePassiveIP 192.168.0.1
#匿名のアップロード/ダウンロード率。
#AnonymousRatio 1 10
#すべてのユーザーのアップロード/ダウンロードの比率。
#このディレクティブは前のものと重複しません。
#UserRatio 1 10
#「ftp」が所有するファイルのダウンロードを禁止します。
#ファイルはアップロードされましたが、ローカル(ローカル)管理者によって承認されていません。
AntiWarezはい
#リッスンしているIPアドレス/ポート(デフォルト=すべてのIPおよびポート21)。
#192.168.254.254,21にバインド
#匿名の最大速度(KB /秒)
#AnonymousBandwidth 8
#すべてのユーザー(匿名ユーザーを含む)の最大速度(KB / s)
#AnonymousBandwidthまたはUserBandwidthを使用し、両方を使用します。
#意味がありません。
#UserBandwidth 8
#作成されたファイルのマスク。 <ファイルのumask>:<ディレクトリのumask>。
#177:077-妄想している場合:)
#umaskは最大値(777)から差し引かれたときの数値であり、
#適切なマスクを取得します。 つまり 以下の場合、マスクはそれぞれ次のようになります。
#ファイルには644、ディレクトリには755
Umask 133:022
#ユーザーが起動される最小のUID。
#(ネイティブバージョンでは100でした。1000を設定しました)
MinUID 1000
#許可ユーザーのFXP転送を許可します。
AllowUserFXPいいえ
#匿名および非匿名のFXP転送を許可
AllowAnonymousFXPいいえ
#ユーザーは、ピリオド( '。')で始まるファイルを削除および変更できません
#所有者であっても。 TrustedGIDが有効になっている場合、このグループには
#これらのファイルへのアクセス。
ProhibitDotFilesWrite no
#ピリオドで始まるファイルの読み取りを禁止する
ProhibitDotFilesRead no
#ファイルを上書きしないでください。 アップロードされたファイルの名前が既にある場合
#存在する場合、自動的にfile.1、file.2、file.3、...に名前が変更されます
自動名前変更
#匿名ユーザーが新しいファイルをアップロードできないようにします(no =アップロードは許可されます)
AnonymousCantUpload no
#このIPアドレスへの接続のみが匿名ではない場合があります。 あなた
#このディレクティブを使用して複数のIPを使用できます
#匿名FTPの場合、プライベートで安全なIPを残す
#リモート管理。 また、不安定を許可することができます
#認証用のローカルIP(タイプ10.xxx)およびパブリックのままにする
#(匿名用)別のIP上のFTPサーバー。
#TrustedIP 10.1.1.1
#PIDをログの各行に追加する場合、
#次の行のコメントを解除します。
#LogPIDはい
#「apache」タイプの形式のログで追加のログファイルを作成します。
#fw.c9x.org-jedi [1975年12月13日:19:36:39]「GET /icap.tar.bz2」200 21808
#このログファイルは、次のプログラムで処理できます。
#Apacheログの分析。
#AltLog clf:/var/log/pureftpd.log
#最適化された形式で追加のログファイルを作成する
#統計レポート(このようなHZ。私は見る必要があります)
#AltLogの統計:/var/log/pureftpd.log
#W3C標準で転送されたファイルを使用して別のログを作成します
#(多くの市販のアナライザーと互換性があります)
#AltLog w3c:/var/log/pureftpd.log
#CHMODコマンドを無効にします。 ユーザーは権限を変更できません
#ファイルへ。
#NoChmodはい
#ユーザーにファイルのアップロードを許可しますが、ファイルの削除は許可しません。
#KeepAllFilesはい
#ユーザーのホームディレクトリを自動的に作成し、
#存在しない場合
#CreateHomeDir yes
#仮想クォータを有効にします。 最初の数は、ファイルの最大数です。
#2番目の数値は、メガバイト単位の最大サイズです。
#だから1000:10は各ユーザーを1000ファイルと10メガに制限します。
#クォータ1000:10
#スタンドアロンモードサポートを使用してpure-ftpdがコンパイルされている場合は、変更できます
#pidファイルの場所。 デフォルトの位置-/var/run/pure-ftpd.pid
#PIDFile /var/run/pure-ftpd.pid
#pure-ftpdがpure-uploadscriptサポートでコンパイルされている場合、
#次に、この項目を使用すると、新しくダウンロードした情報を書き込むことができます
#/var/run/pure-ftpd.upload.pipe内のファイルなので、pure-uploadscriptは
#それらを読み、ダウンロードしたファイルを処理します。
#CallUploadScript yes
#このオプションは、アップロードが匿名で許可されているサーバーで役立ちます。
#/ var / ftpが別の/ varセクションにある場合、これにより
#空き容量を節約し、ログファイルを保護します。 割合
#ここで指定された数を超えると、自動アップロードが禁止されます。
MaxDiskUsage 99
#ユーザーを許可する場合は、このオプションに「yes」を設定します
#ファイルの名前を変更します。
#NoRename yes
#「顧客証明」を有効にする:「chmod 0 public_html」などの何らかのエラー
#一緒に作業するとき、chtol ...要するに、これはバグではなく機能です... :)そして
#愚かなクライアントはあなたのサポートに負担をかけませんでした。
#段落。 クライアントがUnixについて少し知識がある場合、この機能
#役に立たない。 ホスティングがある場合-オンにします。
#(翻訳はほとんど逐語的です-しかし、私は何について理解していなかったか...)
CustomerProofはい
#並列プロセスの数。 サーバーが
#オプション '--with-peruserlimits'(ここでは、
#ほとんどのバイナリディストリビューターではそのままです)。
#形式:<ユーザーごとの最大セッション>:<匿名の最大セッション>
#たとえば、3:20は、認証されたユーザーが3つ持つことができることを意味します
#アクティブセッション。 すべての匿名アカウント-最大20セッション。
#PerUserLimits 3:20
#ファイルがサーバーにアップロードされ、以前のバージョン(同じ名前)がある場合、
#その後、古いファイルは削除または切り捨てられません。 ダウンロードが行われます
#アトミックロードの完了時に一時ファイルに
#ファイルの新しいバージョンに切り替えます。 たとえば、大きなPHPをロードする場合
#スクリプト、Apacheは完全にロードされるまで古いバージョンで動作します
#すぐに新しいものに切り替わります。現在のものは完全に転送されます
#このオプションは仮想クォータと互換性がありません。
#NoTruncate yes
#このオプションには次の3つの値を指定できます。
#0-SSL / TLS暗号化を無効にします(デフォルト)。
#1-暗号化された接続と通常の接続の両方を受け入れます。
#2-SSL / TLSを使用しない接続を拒否する、
#匿名接続を含む。
#これについて盲目的にコメントしないでください。 以下を確認してください:
#1)SSL / TLSサポートでコンパイルされたサーバー(--with-tls)、
#2)有効な証明書を入力し、
#3)互換性のある顧客のみがログインします。
#TLS 1
#SSL / TLS接続で受け入れられる暗号のリスト
#プレフィックス-S:SSLを完全に無効にしますが、TLSは無効にしません。
#TLSCipherSuite HIGH:中:+ TLSv1 :! SSLv2:+ SSLv3
#スタンドアロンモードで現在のIPv4アドレスをリッスンします(つまり、IPv6は無効になっています)
#デフォルトでは、IPv4とIPv6が含まれています。
IPV4のみはい
#スタンドアロンモードで現在のIPv6アドレスをリッスンします(つまり、IPv4は無効です)
#デフォルトでは、IPv4とIPv6が含まれています。
#IPV6のみはい
#ファイル名のUTF-8サポート(RFC 2640)
#サーバーファイルシステムのエンコーディングを定義し、オプションで、
#UTF-8を使用しないクライアントのデフォルトエンコーディング。
#pure-ftpdが '--with-rfc2640'でコンパイルされている場合、現在動作しています
FileSystemCharset utf-8
ClientCharset cp1251
ChrootEveryone yes
#前のオプションで「いいえ」が選択された場合、次のオプションのメンバー
#グループはchrootしません。 残りはすべてです。 したくない場合
#全員にchrootし、ChrootEveryoneとTrustedGIDのコメントを外します。
#TrustedGID 100
#顧客曲線の互換性機能を有効にする
BrokenClientsCompatibilityいいえ
#同時ユーザーの最大数
MaxClientsNumber 50
#バックグラウンドで動作(デーモン)
はい、デーモン化する
#1つのIPからの同時接続の最大数
MaxClientsPerIP 8
#すべてのクライアントコマンドを記録する場合は、これ
#ポイントは「はい」でなければなりません。 あなたも記録する必要がある場合
#サーバー応答、そしてこのアイテムを複製します。
VerboseLog no
#クライアントがある場合でも、ピリオドで始まるファイルを表示するかどうか
#明らかに、オプション「-a」を使用してこれを行う必要があるとは言わない。
DisplayDotFilesはい
#認証されたユーザーを許可しない-このFTP
#匿名のお客様のみ。
匿名のみ
#匿名を拒否-登録ユーザーのFTPを最新にします。
匿名
#syslogツール(auth、authpriv、daemon、ftp、security、user、local *)
#デフォルト-「ftp」。 「なし」-ロギングを無効にします。
SyslogFacility ftp
#Cookieを表示しますか? (フォーチュンクッキーの表示)
#FortunesFile / usr / share / fortune / zippy
#ログ内のホスト名を解決しないでください。 ログはあまり有益ではなくなり、
#必要なリソースも少なくなります。 「はい」-非常に賭けるのは理にかなっています
#ロードされたサーバー、またはアイドルDNS
はい
#最大ダウンタイム(接続切断の終了時)、分単位
#(デフォルト= 15分)
MaxIdleTime 15
#LDAP構成ファイル(README.LDAPを参照)
#LDAPConfigFile /etc/pureftpd-ldap.conf
#MySQL構成ファイル(README.MySQLを参照)
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
#Postgres構成ファイル(README.PGSQLを参照)
#PGSQLConfigFile /etc/pureftpd-pgsql.conf
#PureDBユーザーデータベース(README.Virtual-Usersを参照)
#PureDB /etc/pureftpd.pdb
#pure-authdソケットへのパス(README.Authentication-Modulesを参照)
#ExtAuth /var/run/ftpd.sock
#PAM認証を有効にする必要がある場合は、コメントを外します
#次の行
#PAMAuthenticationはい
#システム、Unix認証(/ etc / passwd)が必要な場合、
#次の行のコメントを外します
#UnixAuthenticationはい
#LDAPConfigFile、MySQLConfigFile、
#PAMAuthenticationおよびUnixAuthenticationは使用のみ可能
#1回、ただし一緒に使用できます。 たとえば、あなたが
#MySQLConfigFileを使用し、次にUnixAuthenticationを使用して、リクエストを送信します
#MySQLに。 そのようなユーザーがデータベースで見つからない場合、試行されます
#/ etc / passwdおよび/ etc / shadowのシステムユーザー。 SQLの場合
#パスワードが間違っているために認証が失敗する
#さらにユーザー検索を停止します。 認証方法
#は設定された順序で使用されます
# 'ls'コマンドの再帰制限。 最初の引数はファイルの最大数です
#表示されます。 2番目はサブディレクトリの最大数です
LimitRecursion 10000 8
#匿名には新しいディレクトリを作成する権利がありますか?
AnonymousCanCreateDirsいいえ
#システムがここに示されている値よりも多くロードされている場合、
#anonymosは何もダウンロードできません
最大負荷4
#パッシブ接続用のポートの範囲。 ファイアウォールがハッキングしている場合
#標準範囲
#PassivePortRange 30,000 50,000
#PASV / EPSV / SPSV応答の強制IPアドレス。 -NATの場合。
#シンボリックホスト名は、動的IPを使用するゲートウェイでも受け入れられます
#ForcePassiveIP 192.168.0.1
#匿名のアップロード/ダウンロード率。
#AnonymousRatio 1 10
#すべてのユーザーのアップロード/ダウンロードの比率。
#このディレクティブは前のものと重複しません。
#UserRatio 1 10
#「ftp」が所有するファイルのダウンロードを禁止します。
#ファイルはアップロードされましたが、ローカル(ローカル)管理者によって承認されていません。
AntiWarezはい
#リッスンしているIPアドレス/ポート(デフォルト=すべてのIPおよびポート21)。
#192.168.254.254,21にバインド
#匿名の最大速度(KB /秒)
#AnonymousBandwidth 8
#すべてのユーザー(匿名ユーザーを含む)の最大速度(KB / s)
#AnonymousBandwidthまたはUserBandwidthを使用し、両方を使用します。
#意味がありません。
#UserBandwidth 8
#作成されたファイルのマスク。 <ファイルのumask>:<ディレクトリのumask>。
#177:077-妄想している場合:)
#umaskは最大値(777)から差し引かれたときの数値であり、
#適切なマスクを取得します。 つまり 以下の場合、マスクはそれぞれ次のようになります。
#ファイルには644、ディレクトリには755
Umask 133:022
#ユーザーが起動される最小のUID。
#(ネイティブバージョンでは100でした。1000を設定しました)
MinUID 1000
#許可ユーザーのFXP転送を許可します。
AllowUserFXPいいえ
#匿名および非匿名のFXP転送を許可
AllowAnonymousFXPいいえ
#ユーザーは、ピリオド( '。')で始まるファイルを削除および変更できません
#所有者であっても。 TrustedGIDが有効になっている場合、このグループには
#これらのファイルへのアクセス。
ProhibitDotFilesWrite no
#ピリオドで始まるファイルの読み取りを禁止する
ProhibitDotFilesRead no
#ファイルを上書きしないでください。 アップロードされたファイルの名前が既にある場合
#存在する場合、自動的にfile.1、file.2、file.3、...に名前が変更されます
自動名前変更
#匿名ユーザーが新しいファイルをアップロードできないようにします(no =アップロードは許可されます)
AnonymousCantUpload no
#このIPアドレスへの接続のみが匿名ではない場合があります。 あなた
#このディレクティブを使用して複数のIPを使用できます
#匿名FTPの場合、プライベートで安全なIPを残す
#リモート管理。 また、不安定を許可することができます
#認証用のローカルIP(タイプ10.xxx)およびパブリックのままにする
#(匿名用)別のIP上のFTPサーバー。
#TrustedIP 10.1.1.1
#PIDをログの各行に追加する場合、
#次の行のコメントを解除します。
#LogPIDはい
#「apache」タイプの形式のログで追加のログファイルを作成します。
#fw.c9x.org-jedi [1975年12月13日:19:36:39]「GET /icap.tar.bz2」200 21808
#このログファイルは、次のプログラムで処理できます。
#Apacheログの分析。
#AltLog clf:/var/log/pureftpd.log
#最適化された形式で追加のログファイルを作成する
#統計レポート(このようなHZ。私は見る必要があります)
#AltLogの統計:/var/log/pureftpd.log
#W3C標準で転送されたファイルを使用して別のログを作成します
#(多くの市販のアナライザーと互換性があります)
#AltLog w3c:/var/log/pureftpd.log
#CHMODコマンドを無効にします。 ユーザーは権限を変更できません
#ファイルへ。
#NoChmodはい
#ユーザーにファイルのアップロードを許可しますが、ファイルの削除は許可しません。
#KeepAllFilesはい
#ユーザーのホームディレクトリを自動的に作成し、
#存在しない場合
#CreateHomeDir yes
#仮想クォータを有効にします。 最初の数は、ファイルの最大数です。
#2番目の数値は、メガバイト単位の最大サイズです。
#だから1000:10は各ユーザーを1000ファイルと10メガに制限します。
#クォータ1000:10
#スタンドアロンモードサポートを使用してpure-ftpdがコンパイルされている場合は、変更できます
#pidファイルの場所。 デフォルトの位置-/var/run/pure-ftpd.pid
#PIDFile /var/run/pure-ftpd.pid
#pure-ftpdがpure-uploadscriptサポートでコンパイルされている場合、
#次に、この項目を使用すると、新しくダウンロードした情報を書き込むことができます
#/var/run/pure-ftpd.upload.pipe内のファイルなので、pure-uploadscriptは
#それらを読み、ダウンロードしたファイルを処理します。
#CallUploadScript yes
#このオプションは、アップロードが匿名で許可されているサーバーで役立ちます。
#/ var / ftpが別の/ varセクションにある場合、これにより
#空き容量を節約し、ログファイルを保護します。 割合
#ここで指定された数を超えると、自動アップロードが禁止されます。
MaxDiskUsage 99
#ユーザーを許可する場合は、このオプションに「yes」を設定します
#ファイルの名前を変更します。
#NoRename yes
#「顧客証明」を有効にする:「chmod 0 public_html」などの何らかのエラー
#一緒に作業するとき、chtol ...要するに、これはバグではなく機能です... :)そして
#愚かなクライアントはあなたのサポートに負担をかけませんでした。
#段落。 クライアントがUnixについて少し知識がある場合、この機能
#役に立たない。 ホスティングがある場合-オンにします。
#(翻訳はほとんど逐語的です-しかし、私は何について理解していなかったか...)
CustomerProofはい
#並列プロセスの数。 サーバーが
#オプション '--with-peruserlimits'(ここでは、
#ほとんどのバイナリディストリビューターではそのままです)。
#形式:<ユーザーごとの最大セッション>:<匿名の最大セッション>
#たとえば、3:20は、認証されたユーザーが3つ持つことができることを意味します
#アクティブセッション。 すべての匿名アカウント-最大20セッション。
#PerUserLimits 3:20
#ファイルがサーバーにアップロードされ、以前のバージョン(同じ名前)がある場合、
#その後、古いファイルは削除または切り捨てられません。 ダウンロードが行われます
#アトミックロードの完了時に一時ファイルに
#ファイルの新しいバージョンに切り替えます。 たとえば、大きなPHPをロードする場合
#スクリプト、Apacheは完全にロードされるまで古いバージョンで動作します
#すぐに新しいものに切り替わります。現在のものは完全に転送されます
#このオプションは仮想クォータと互換性がありません。
#NoTruncate yes
#このオプションには次の3つの値を指定できます。
#0-SSL / TLS暗号化を無効にします(デフォルト)。
#1-暗号化された接続と通常の接続の両方を受け入れます。
#2-SSL / TLSを使用しない接続を拒否する、
#匿名接続を含む。
#これについて盲目的にコメントしないでください。 以下を確認してください:
#1)SSL / TLSサポートでコンパイルされたサーバー(--with-tls)、
#2)有効な証明書を入力し、
#3)互換性のある顧客のみがログインします。
#TLS 1
#SSL / TLS接続で受け入れられる暗号のリスト
#プレフィックス-S:SSLを完全に無効にしますが、TLSは無効にしません。
#TLSCipherSuite HIGH:中:+ TLSv1 :! SSLv2:+ SSLv3
#スタンドアロンモードで現在のIPv4アドレスをリッスンします(つまり、IPv6は無効になっています)
#デフォルトでは、IPv4とIPv6が含まれています。
IPV4のみはい
#スタンドアロンモードで現在のIPv6アドレスをリッスンします(つまり、IPv4は無効です)
#デフォルトでは、IPv4とIPv6が含まれています。
#IPV6のみはい
#ファイル名のUTF-8サポート(RFC 2640)
#サーバーファイルシステムのエンコーディングを定義し、オプションで、
#UTF-8を使用しないクライアントのデフォルトエンコーディング。
#pure-ftpdが '--with-rfc2640'でコンパイルされている場合、現在動作しています
FileSystemCharset utf-8
ClientCharset cp1251
MySqlデータベースを使用したPure-FTPdの構成と同様に
pure-ftpd.conf
#pureftpdのMySQL構成
#オプション:MySQLサーバーの名前またはIP。 これを聞かないで
#ローカルUNIXソケットが使用される場合の項目。
#MYSQLServer 127.0.0.1
#オプション:MySQLがハングするポート。 これを聞かないで
#ローカルUNIXソケットが使用される場合の項目。
#MYSQLPort 3306
#オプション:MySQLが同じホスト上にある場合、mysql.sockソケット名が設定されます。
MYSQLSocket /tmp/mysql.sock
#必須:データベースで使用するユーザー。
MYSQLUser pure-ftpd
#必須:MySQLにアクセスするユーザーのパスワード。
MYSQLPassword pure-ftpd
#必須:作業しているデータベース。
MYSQLDatabase pureftpd
#必須:パスワードをデータベースに保存する方法
#設定可能な値:「cleartext」、「crypt」、「md5」、「password」
#( "パスワード" = MySQLパスワード()関数)
#「any」を使用して「crypt」、「md5」、「password」を試すことができます
MYSQLCryptクリアテキスト
#後続のディレクティブでは、行の一部が最大で置き換えられます
#クエリ実行:
#
#\ Lは、ログインするユーザー名に置き換えられます。
#\ユーザーがクロールするサーバーのIPアドレスに置き換えられます
#\ Pは、ユーザーが接続しているポート番号に置き換えられます。
#\ Rは、ユーザーのIPアドレスに置き換えられます。
#\ Dは、長い10進数の形式のユーザーのIPアドレスに置き換えられます。
#(例:192.168.254.1 == 3232300545)。
#
#次を使用して、比較的複雑なデータベースクエリを計画できます。
#この変数セット。 1つのデータベースが複数のサーバーで使用されている場合、
#その「\ I」により、ユーザーがサーバーを壊しているかどうかを判断できます。
#データベースからパスワードを取得するクエリ:
MYSQLGetPW SELECT `password` FROM` users` WHERE` user` = "\ L" AND` active` = '1'
#システムユーザー名またはUIDを取得するクエリ
MYSQLGetUID SELECT `uid` FROM` users` WHERE` user` = "\ L"
#オプション:デフォルトのUID-取得を要求する代わりにMYSQLGetUID
#MYSQLDefaultUID 1000
#グループまたはgidの名前を取得するためのデータベースへのリクエスト
MYSQLGetGID SELECT `gid` FROM` users` WHERE` user` = "\ L"
#オプション:デフォルトのGID-クエリMYSQLGetGIDの代わり
#MYSQLDefaultGID 1000
#ハムスターのリクエスト
MYSQLGetDir SELECT `home` FROM` users` WHERE` user` = "\ L"
#オプション:ユーザーからの最大ファイル数のリクエスト
#(私は疑問に思う-これの深い意味は何ですか?
#サーバーchtolを起動しませんでしたか? :))
#「仮想クォータサポート」でコンパイルする必要があります。
MySQLGetQTAFS SELECT `QuotaFiles` FROM` users` WHERE` user` = "\ L"
#オプション:クォータ要求(ディスク使用量)
#メガバイト単位の数値。
#Pure-FTPdは「仮想クォータサポート」でコンパイルする必要があります。
MySQLGetQTASZ SELECT `QuotaSize` FROM` users` WHERE` user` = "\ L"
#オプション:関係。 ダウンロード/アップロード率のリクエスト。
#ドル; この関数でコンパイルしないでください。
MySQLGetRatioUL SELECT `ULRatio` FROM` users` WHERE` user` = "\ L"
MySQLGetRatioDL SELECT `DLRatio` FROM` users` WHERE` user` = "\ L"
#オプション:ユーザーのチャンネル幅。 サーバーは
#このオプションでコンパイル。 KB /秒の値。
MySQLGetBandwidthUL SELECT `ULBandwidth` FROM` users` WHERE` user` = "\ L"
MySQLGetBandwidthDL SELECT `DLBandwidth` FROM users WHERE` user` =" \ L "
#ハムスターからユーザーを解放します(〜)。 次の場合は絶対にしないでください:
#1)自分が何をしているかを正確に知っている。
#2)実ユーザーと仮想ユーザーは一致します。
#MySQLForceTildeExpansion 1
#テーブルをトランザクションに更新した場合(Gemini、
#BerkeleyDB、Innobase ...)、SQLトランザクションを有効にできます
#MyISAMデータベースを使用している場合はコメントを残し、
#またはMySQLの古いバージョン(<3.23.x)。
#MySQLTransactions On
#オプション:MySQLサーバーの名前またはIP。 これを聞かないで
#ローカルUNIXソケットが使用される場合の項目。
#MYSQLServer 127.0.0.1
#オプション:MySQLがハングするポート。 これを聞かないで
#ローカルUNIXソケットが使用される場合の項目。
#MYSQLPort 3306
#オプション:MySQLが同じホスト上にある場合、mysql.sockソケット名が設定されます。
MYSQLSocket /tmp/mysql.sock
#必須:データベースで使用するユーザー。
MYSQLUser pure-ftpd
#必須:MySQLにアクセスするユーザーのパスワード。
MYSQLPassword pure-ftpd
#必須:作業しているデータベース。
MYSQLDatabase pureftpd
#必須:パスワードをデータベースに保存する方法
#設定可能な値:「cleartext」、「crypt」、「md5」、「password」
#( "パスワード" = MySQLパスワード()関数)
#「any」を使用して「crypt」、「md5」、「password」を試すことができます
MYSQLCryptクリアテキスト
#後続のディレクティブでは、行の一部が最大で置き換えられます
#クエリ実行:
#
#\ Lは、ログインするユーザー名に置き換えられます。
#\ユーザーがクロールするサーバーのIPアドレスに置き換えられます
#\ Pは、ユーザーが接続しているポート番号に置き換えられます。
#\ Rは、ユーザーのIPアドレスに置き換えられます。
#\ Dは、長い10進数の形式のユーザーのIPアドレスに置き換えられます。
#(例:192.168.254.1 == 3232300545)。
#
#次を使用して、比較的複雑なデータベースクエリを計画できます。
#この変数セット。 1つのデータベースが複数のサーバーで使用されている場合、
#その「\ I」により、ユーザーがサーバーを壊しているかどうかを判断できます。
#データベースからパスワードを取得するクエリ:
MYSQLGetPW SELECT `password` FROM` users` WHERE` user` = "\ L" AND` active` = '1'
#システムユーザー名またはUIDを取得するクエリ
MYSQLGetUID SELECT `uid` FROM` users` WHERE` user` = "\ L"
#オプション:デフォルトのUID-取得を要求する代わりにMYSQLGetUID
#MYSQLDefaultUID 1000
#グループまたはgidの名前を取得するためのデータベースへのリクエスト
MYSQLGetGID SELECT `gid` FROM` users` WHERE` user` = "\ L"
#オプション:デフォルトのGID-クエリMYSQLGetGIDの代わり
#MYSQLDefaultGID 1000
#ハムスターのリクエスト
MYSQLGetDir SELECT `home` FROM` users` WHERE` user` = "\ L"
#オプション:ユーザーからの最大ファイル数のリクエスト
#(私は疑問に思う-これの深い意味は何ですか?
#サーバーchtolを起動しませんでしたか? :))
#「仮想クォータサポート」でコンパイルする必要があります。
MySQLGetQTAFS SELECT `QuotaFiles` FROM` users` WHERE` user` = "\ L"
#オプション:クォータ要求(ディスク使用量)
#メガバイト単位の数値。
#Pure-FTPdは「仮想クォータサポート」でコンパイルする必要があります。
MySQLGetQTASZ SELECT `QuotaSize` FROM` users` WHERE` user` = "\ L"
#オプション:関係。 ダウンロード/アップロード率のリクエスト。
#ドル; この関数でコンパイルしないでください。
MySQLGetRatioUL SELECT `ULRatio` FROM` users` WHERE` user` = "\ L"
MySQLGetRatioDL SELECT `DLRatio` FROM` users` WHERE` user` = "\ L"
#オプション:ユーザーのチャンネル幅。 サーバーは
#このオプションでコンパイル。 KB /秒の値。
MySQLGetBandwidthUL SELECT `ULBandwidth` FROM` users` WHERE` user` = "\ L"
MySQLGetBandwidthDL SELECT `DLBandwidth` FROM users WHERE` user` =" \ L "
#ハムスターからユーザーを解放します(〜)。 次の場合は絶対にしないでください:
#1)自分が何をしているかを正確に知っている。
#2)実ユーザーと仮想ユーザーは一致します。
#MySQLForceTildeExpansion 1
#テーブルをトランザクションに更新した場合(Gemini、
#BerkeleyDB、Innobase ...)、SQLトランザクションを有効にできます
#MyISAMデータベースを使用している場合はコメントを残し、
#またはMySQLの古いバージョン(<3.23.x)。
#MySQLTransactions On
次に、データベース自体( pureftpd )とユーザー( users )を含むテーブルを作成します
CREATE TABLE `users` ( `User` varchar(50) NOT NULL DEFAULT '', `Password` varchar(250) DEFAULT '', `Uid` int(11) DEFAULT '10000', `Gid` int(11) DEFAULT '10000', `Dir` varchar(250) DEFAULT '', `QuotaFiles` int(11) DEFAULT NULL, `QuotaSize` int(11) DEFAULT '0', `ULRatio` int(11) DEFAULT '0', `DLRation` int(11) DEFAULT NULL, `ULBandwidth` int(11) DEFAULT '0', `DLBandwidth` int(11) DEFAULT '0', `Comment` tinytext, `active` int(11) DEFAULT '0', PRIMARY KEY (`User`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/etc/rc.confに追加します
pureftpd_enable="YES"
FTPサーバーを起動します
/usr/local/etc/rc.d/pure-ftpd start Starting pureftpd. Running: /usr/local/sbin/pure-ftpd -g/var/run/pure-ftpd.pid -A -c50 -B -C10 -D -fftp -I15 -lmysql:/usr/local/etc/pureftpd-mysql.conf -L10000:8 -m4 -s -U133:022 -u80 -k99 -Z -8utf-8 -9cp1251
それがすべてでしょう。 ユーザーテーブルにユーザーを入力し(ユーザー名、パスワード、ホームディレクトリを指定)、接続を試行します。 しかし、私はユーザーのIPアドレスによってアクセスを制限する問題に悩まされていました。 古典的なケースでは、ipフィールドがユーザーテーブルに追加され、pureftpd-mysql.confのMYSQLGetPWのsqlクエリは次の形式を取ります。
SELECT Password FROM users WHERE User='\L' AND ip='\R'
しかし、彼は私に適していない。 まず、ユーザーごとに、接続元のIPアドレスを指定する必要があります。次に、単一のIPのみを指定できます。 実際には、特定のユーザーのみにIP'shnikをバインドする必要があり、1人のユーザーにn番目のIPアドレスを設定する機能が必要です。
MySqlの構文にはプログラム制御フロー関数が含まれており、その中にはIF関数が必要です
IPテーブルを作成する
CREATE TABLE `ip` ( `user` varchar(200) DEFAULT NULL, `ip` varchar(16) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
MYSQLGetPWのsqlクエリを次の形式にします。
SELECT IF((SELECT COUNT(`user`) FROM ip WHERE user='\L')=0, (SELECT Password FROM users WHERE User='\L'), (SELECT users.Password FROM users,ip WHERE users.User='\L' AND ip.ip='\R' AND ip.user='\L'))
最終的に、IPテーブルのエントリが設定されていないすべてのユーザーはIPアドレスをチェックせずに認証され、IPテーブルに登録されているユーザーは接続しようとしているIPアドレスからチェックされ、設定できます1回のログインで無制限のIPアドレス