Я отредактировал файл /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
Почему мне разрешено создавать файлы такого размера ? В команде dd я могу описать максимальный размер как bs = 1KB count = 2049 . Разве это не должно быть bs = 1KB count = 2001 , поскольку я поместил «2001» в /etc/security/limits.conf ?
Значение ulimit
отображается в кибибайтах (2001 x 1024 = 2049024 байт), тогда как bs=1 КБ
равно килобайтам (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