我编辑了/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