linux中匿名用户实为映射的系统用户(如ftp),限制其存储容量需先确认映射关系,再在对应文件系统启用用户配额并为该uid设置硬软限制。

Linux 系统中没有“匿名用户”这一原生账户概念,Samba 或 FTP 服务中所谓的“匿名用户”(如 ftp、nobody、guest)实际是映射到一个真实存在的本地系统用户(例如 ftp 用户或 nobody)。因此,限制其存储容量,本质是对该映射用户配置磁盘配额,而非针对虚拟身份。
要实现对 Samba/FTP 匿名上传用户的磁盘空间限制,需分两步走:先确保该用户有明确的 UID 和家目录归属,再在其挂载点上启用并配置用户配额。以下是关键操作要点:
明确匿名用户所映射的真实系统用户
以 Samba 为例,检查 /etc/samba/smb.conf 中的 guest account 设置:
[shared] path = /srv/samba/anonymous guest ok = yes guest account = ftp
此时所有匿名访问都以系统用户 ftp 身份执行。确认该用户存在且主目录设为共享路径或其父分区:
id ftp grep "^ftp:" /etc/passwd # 查看其 home 目录和 UID df /srv/samba/anonymous # 确认该路径所在文件系统(如 /dev/sdb1)
在共享目录所在分区启用用户配额
配额绑定的是文件系统挂载点,不是目录本身。假设 /srv/samba/anonymous 挂在 /srv 分区(如 /dev/sdb1 /srv ext4 defaults,usrquota 0 2):
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 编辑
/etc/fstab,为该行添加,usrquota; - 执行
sudo mount -o remount /srv; - 初始化配额数据库:
sudo quotacheck -cugm /srv(生成/srv/aquota.user); - 启用配额:
sudo quotaon /srv。
为映射用户(如 ftp)设置硬软限制
运行:
sudo edquota -u ftp
在编辑器中修改 blocks 行(单位 KB):
#<file system> blocks soft hard inodes soft hard /dev/sdb1 0 524288 536870 0 0 0</file>
→ 表示软限 512 MB、硬限 524 MB(536870 KB ≈ 524 MB),超出硬限后无法写入新文件。
验证与注意事项
- 查看效果:
sudo quota -u ftp,确认Block limits显示设定值; - 测试上传:用匿名方式向共享目录写入大文件,达到硬限时会报错
Disk quota exceeded; -
不支持直接对
nobody配额? → 可新建专用用户(如sambaguest),改guest account = sambaguest,再对其配额,更清晰可控; - FTP(vsftpd/proftpd)同理:确认
ftp_username或guest_username对应的本地用户,再配额; - XFS 文件系统请改用
xfs_quota,不适用quotacheck/quotaon。
配额生效的前提是:该用户对共享目录有写权限,且所有写操作由其 UID 执行。若服务配置了 force user = nobody 却未启用配额,或使用 root 权限写入,则配额完全失效。










