我正在尝试使用以下命令为我的系统上的一群用户设置文件系统配额:
setquota -b /mntpnt < /file/with/quotas
这似乎适用于几乎所有用户。但是,当我这样做时:
getent passwd
| awk -F: '{ if ($3 >=1000 && $3 < 2000) print $1 }'
| xargs quota -u
| grep 'none'
| awk '{print $5}'
为了打印那些没有为其设置配额的用户的名称,此管道会报告名称包含在/file/with/quotas
.我什至尝试通过以下命令手动设置配额:
setquota -u user 1024 1024 0 0 /mntpnt
这不会报告任何内容(如预期)并给出零退出状态。但是,quota -u user
仍然报告该用户没有启用配额。
据我所知,这两个恶意账户并没有什么特别之处。
我可以说得更setquota
详细吗?我尝试strace
了它,但这没有产生任何新信息。关于为什么它会出现这样的行为有什么建议吗?
内核配额版本:6.5.1
操作系统:Debian Squeeze 6.0.1
FS:ext4
更新
我已删除/mntpnt/aquota.user
并重新创建它,quotacheck -c /mntpnt
因为我有其他原因认为它已损坏。上述所有症状均发生在全新的产品上aquota.user
。
答案1
我过去在 ext3 上也遇到过类似的问题。配额文件被悄悄损坏,并造成了这种奇怪的情况。将该用户的配额设置为零并返回也无法解决问题。
有问题的文件是/path/to/mountpoint/aquota.user。
我们最终所做的是关闭配额、删除该文件、重新打开配额并重新扫描系统以使配额数据再次正确。自从我们这样做以来,这个问题已经三年多没有再出现了。
执行此操作后重新扫描报价的命令是quotacheck -cuvf /path/to/mountpoint
。
这确实是一种令人震惊和敬畏的做法。这确实是一个上游错误,但经过两周的尝试修复后,这种做法非常合理。