我嘗試為 vsftpd 設定用戶磁碟配額。
我使用 debian 上的“quota”套件為 ftp 虛擬用戶配置了配額(你知道,透過編輯 /etc/fstab 和所有這些東西)。網路告訴我,這是 vsftpd 的唯一解決方案。
問題是:當檔案上傳到 ftp 伺服器上時,其擁有者是 ftp:nogroup,因此配額不適用於我的用戶,例如 bob:bob。
我還嘗試 chown ftp:bob 目標資料夾,並在 bob 組上使用群組配額,但我沒有成功
所以我直接去常見問題解答並沒有找到這個:)對於這個配額問題你有什麼解決方案嗎?
乾杯,邁赫迪
答案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 正在運行,您應該更新它。在底行添加以下內容,並確保上面的用戶未列出(即僅列出您想要透過 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
第一個值是軟限制,第二個值是硬限制。請注意,如果使用者嘗試載入 100Mb 的文字文件,並且已經超出軟限制 20Mb,則其文字檔案將被截斷 20Mb,以使其保持在 200Mb 硬限制以下。
檢查配額:
#repquota /home
如果您希望刪除使用者的配額,只需將其硬限制和軟限制設為「0」即可。
我知道很多,但應該可以了!為了確定起見,我在發布此內容之前從頭開始完成了整個過程。
答案2
派崔克做了一個很好的指南。我想添加兩件事。
- 配額工具不是強制性的
- 如果您沒有自己的實體分割區用於 ftp 資料夾,您可以使用循環檔案。我這樣做了,效果非常好
mkdir /usr/loop_device
建立一個50MB的檔案fe
dd if = /dev /zero of = /usr/loop_device/ld1 bs = 1024 count = 50000
在其上建立檔案系統
mkfs.ext4 /usr/loop_device/ld1
為ftp使用者建立目錄
mkdir /home_ftp
安裝Loopdevice
將以下條目新增至 /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”設定配額。不要忘記將“userquota”選項新增到您的 fstab 中。