vsftpd のクォータ?

vsftpd のクォータ?

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 つのことを付け加えたいと思います。

  1. quotatoolは必須ではない
  2. 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

スクリーンショットとともにここに書き留めました:

http://infofreund.de/user_quotas_vsftpd_en/

答え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」オプションを追加することを忘れないでください。

関連情報