Ext4的最大文件系统大小为1EB,最大文件大小为16 of。
但是,在文件系统级别是否有可能使最大文件大小变小呢?例如,我不希望允许创建大于指定值的文件(例如,1MB)。如何在ext4上实现这一点?
如果不是ext4,那么其他任何现代文件系统都支持这种特性吗?
发布于 2016-08-31 10:03:53
ext4有一个max_dir_size_kb挂载选项来限制目录的大小,但是对于普通文件却没有类似的选项。
但是,可以阻止进程使用setrlimit()或某些shell的ulimit或limit内置的限制来创建大于限制的文件。大多数系统还将允许您在系统范围内为每个用户设置这些限制。
当进程超过该限制时,它将接收SIGXFSZ信号。当它忽略该信号时,将导致超过该文件大小的操作(如write()或truncate()系统调用)将失败,从而导致EFBIG错误。
要将该限制移至文件系统,您可以使用fuse (用户空间中的文件系统)文件系统,其中用户空间处理程序是以该限制设置启动的。bindfs是一个很好的候选人。
如果运行bindfs dir dir (即将dir绑定到自身),则bindfs启动为(zsh语法):
(limit filesize 1M; trap '' XFSZ; bindfs dir dir)那么,任何在dir中创建大于100万的文件的尝试都将失败。bindfs将EFBIG错误转发给写入文件的进程。
请注意,该限制仅适用于常规文件,这不会阻止目录超过该限制(例如,通过在其中创建大量文件)。
发布于 2016-08-31 09:52:31
您必须将其设置在系统级别。
对于Ubuntu编辑/etc/security/limits.conf
添加一行,如:
timb hard fsize 10000您也可以使用通配符。
除非将session required pam_limits.so添加到/etc/pam.d/common-session中,否则AFAIK不适用于根用户。
https://unix.stackexchange.com/questions/306913
复制相似问题