limits.conf 中设置的文件大小限制

limits.conf 中设置的文件大小限制

我编辑了/etc/security/limits.conf文件来限制用户“学生”可以创建的文件的大小:

@student        hard    fsize           3001
@student        soft    fsize           2001

现在,当我以“学生”身份登录并尝试创建一些文件以查看可以创建多大的文件时,我遇到了这种奇怪的行为:

student@node1:~$ ulimit -f
2001

student@node1:~$ dd if=/dev/zero of=file1 bs=1KB count=2049
2049+0 records in
2049+0 records out
2049000 bytes (2.0 MB, 2.0 MiB) copied, 0.0127504 s, 161 MB/s


student@node1:~$ dd if=/dev/zero of=file2 bs=1KB count=2050
File size limit exceeded (core dumped)

然后我检查它们的尺寸:

student@node1:~$ ls -l
-rw-rw-r--  1 student student 2049000 Dec  4 16:56 file1
-rw-rw-r--  1 student student 2049024 Dec  4 16:57 file2

为什么我可以创建这么大的文件?在命令我可以将最大尺寸描述为bs=1KB 计数=2049. 难道不应该bs=1KB 计数=2001因为我把“2001”输入了/etc/security/limits.conf

答案1

ulimit值似乎以千字节 (2001 x 1024 = 2049024 字节) 为单位,而bs=1KB是千字节 (2049 x 1000 = 2049000 字节)。dd千字节的后缀只是K(或k) 而不是KB

所以

:~$ ulimit -f
2001

:~$ dd if=/dev/zero of=file1 bs=1k count=2001
2001+0 records in
2001+0 records out
2049024 bytes (2.0 MB, 2.0 MiB) copied, 0.0210431 s, 97.4 MB/s

:~$ dd if=/dev/zero of=file2 bs=1k count=2002
File size limit exceeded (core dumped)

:~$ ls -l file1 file2
-rw-rw-r-- 1 username username 2049024 Dec  4 13:15 file1
-rw-r--r-- 1 username username 2049024 Dec  4 13:15 file2

相关内容