vsftpd のユーザー ディスク クォータを設定しようとしました。
私は、Debian の「quota」パッケージを使用して ftp 仮想ユーザーのクォータを設定しました (/etc/fstab などを編集して)。インターネットで調べたところ、これが vsftpd の唯一の解決策だそうです。
問題は、ファイルが FTP サーバーにアップロードされると、その所有者が ftp:nogroup になるため、クォータがユーザー (例: bob:bob) に適用されないことです。
また、ターゲットフォルダを ftp:bob で chown し、bob グループでグループクォータを使用しようとしましたが、うまくいきませんでした。
そこで、すぐに FAQ にアクセスしましたが、これを見つけることができませんでした :) このクォータの問題に対する解決策はありますか?
乾杯、メディ
答え1
これを設定するには、次の手順に従います。
VSFTPd
/etc/vsftd.confファイルを作成する
#nano /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
download_enable=yes
guest_enable=NO
write_enable=yes
#If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot()
chroot_local_user=no
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
次に、ユーザーがホームディレクトリ外を閲覧できないようにchrootリストを作成します。
#nano /etc/vsftpd.chroot_list
someusernamehere
パスワード
このユーザーはシステム上に実際のアカウントを持っているため (ディスク クォータは仮想ユーザーでは機能しません)、SSH が実行中の場合は更新する必要があります。 一番下の行に次の内容を追加し、上記のユーザーがリストされていないことを確認します (つまり、SSH 経由でサーバーにアクセスしたいユーザーのみをリストします)。
#nano /etc/ssh/sshd_config
AllowUsers username1 username2
マウントポイントの準備
クォータをインストールして有効にします
これは、ユーザーごとおよびグループごとにこれを行う方法を示しています。ところで、ファイル システムがマウントされるとクォータ サポートが有効になるため、次の手順を完了したらサーバーを再起動する必要があります。何をしているのか正確に理解していない限り、リモート マシンで実行しないでください。
root として以下を実行するか、sudo を使用します。
#nano /etc/fstab
fstab ファイル (usrquota または grpquota) に次の内容を含める必要があります。Ubuntu サーバーのインストール方法に応じた例をいくつか示します。
/dev/hda1 /home ext2 defaults,usrquota 1 1
または
# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home ext4 defaults,usrquota 0 2
または
# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home ext4 defaults,usrquota,grpquota 0 2
再起動するか、次の例を使用して再マウントできます。
#mount -o remount,usrquota /home
マウントを確認してください:
#mount | grep quota
クォータ カーネル モジュールをロードします。
#modprobe quota_v2 echo 'quota_v2' >> /etc/modules
クォータの設定
クォータ パッケージをインストールします。
#apt-get install quota quotatool
次のファイルが存在しない場合は作成します。これらのファイルにはクォータ制限が保存されます。
#touch /home/aquota.user
#touch /home/aquota.group
#chmod 600 /home/aquota.user /home/aquota.group
再起動せずにquatacheckをオンにします。
# quotacheck -vagum
カーネルがジャーナリング クォータをサポートしているのにそれを使用していない場合は、おそらくエラーが発生します。その場合は次のコマンドを使用します。
# quotacheck -fvagum
ユーザーの制限を設定する:
#quotatool -u someusername -bq 100M -l '200 Mb' /home
最初の値はソフト リミット、2 番目の値はハード リミットです。ユーザーが 100 MB のテキスト ファイルをロードしようとしたときに、すでにソフト リミットを 20 MB 超えている場合は、200 MB のハード リミット以下に抑えるために、テキスト ファイルは 20 MB 切り捨てられることに注意してください。
クォータの確認:
#repquota /home
ユーザーの割り当てを削除したい場合は、ハード制限とソフト制限を「0」に設定するだけです。
たくさんあることは承知していますが、これで十分でしょう。念のため、これを公開する前にプロセスを最初から実行しました。
答え2
Patrick は良いハウツーを作成しました。私は 2 つのことを付け加えたいと思います。
- quotatoolは必須ではない
- FTPフォルダ用の物理パーティションがない場合は、ループファイルを使用できます。私はこれを試しましたが、とてもうまくいきました。
mkdir /usr/loop_device
50MBのファイルを作成する
dd if = /dev /zero of = /usr/loop_device/ld1 bs = 1024 count = 50000
そこにファイルシステムを作成する
mkfs.ext4 /usr/loop_device/ld1
FTPユーザー用のディレクトリを作成する
mkdir /home_ftp
ループデバイスをマウントする
/etc/fstabに次のエントリを追加します
/usr/loop_device/ld1 /home_ftp/ ext4 rw,loop,usrquota,grpquota 0 0
スクリーンショットとともにここに書き留めました:
答え3
クォータはシステム ユーザーに対してのみ機能します。したがって、システム ユーザーを使用するように vsftp を構成する必要があります。仮想ユーザーは使用できません。
編集:
以下に、動作する簡単な設定を示します。
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
download_enable=yes
anon_mkdir_write_enable=yes
guest_enable=NO
anon_world_readable_only=no
anon_upload_enable=yes
write_enable=yes
chroot_local_user=no
anon_other_write_enable=yes
次に、「quotacheck」を使用してクォータを設定します。fstab に「userquota」オプションを追加することを忘れないでください。