Как установить постоянные ограничения пользователю на размер файлов? (Или как на самом деле сохрнаить файл /etc/security/limits.conf)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Как установить постоянные ограничения пользователю на размер файлов?

Сообщение жучара »

Друзья! Здесь
Как работает утилита ulimit -u <ограничение>?

Мы выяснили, как устанавливать ограничения для процессов, порождённых bash. А как определённому пользователю на все процессы установить ограничения, а не только для процессов, запускаемых из консоли? Попытаемся ограничить, к примеру, размер создаваемых файлов.

Пользователь user0 смотрит свои ограничения:

Shell

user0@astra:~$ prlimit | grep FSIZE
FSIZE max file size 25600000000 51200000000 байты
user0@astra:~$
Ещё раз, хорошо бы, чтобы вновь введённые ограничения действовали на все процессы (для этого пользователя).

А вот есть такой файл /etc/security/limits.conf Он для этого всего и нужен. Из-по рута добавляю в него две строчки (ограничение на размер файла введу):
user0 hard fsize 131072
user0 soft fsize 131072
Сохраню. Файл /etc/security/limits.conf полностью

Shell

user@astra:~$ cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
# - NOTE: group and wildcard limits are not applied to root.
# To apply a limit to the root user, <domain> must be
# the literal username root.
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
# - chroot - change root to directory (Debian-specific)
#
#<domain> <type> <item> <value>
#

#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4

# End of file




* hard fsize 50000000
* soft fsize 25000000
* hard nofile 4096
* soft nofile 2048
* hard nproc 2000
* soft nproc 1000
* hard core 0

user0 hard fsize 131072
user0 soft fsize 131072

user@astra:~$
Посмотрим, действую ли вновь введённые ограничения.

Shell

user0@astra:~$ prlimit | grep FSIZE
FSIZE max file size 134217728 134217728 байты
user0@astra:~$
Уже хорошо. Попытаемся создать файл нужного размера.

Shell

user0@astra:~$ dd of=sparse_file_1 bs=4K seek=32768 count=0
0+0 записей получено
0+0 записей отправлено
0 байт скопировано, 3,8622e-05 s, 0,0 kB/s
user0@astra:~$
user0@astra:~$ dd of=sparse_file_1 bs=4K seek=32769 count=0
Превышен лимит размера файла
user0@astra:~$
Казалось бы, живи да радуйся. Но нужно ещё испытать, как действуют ограничения на процессы, не порождённые bash. Короче, после перезагрузки все введёные ограничения, напомню
user0 hard fsize 131072
user0 soft fsize 131072
удаляются из файла /etc/security/limits.conf, как их и не было. ЧЯДНТ? Спасибо, кто откликнется. Астралинукс Орёл 2.12
Я просто читаю маны.
Спасибо сказали:
Ответить