Debian 8.0, pam 1.1.8-3.1, sshd 1: 6.7p1-5.
Я пытаюсь постоянно увеличить максимальное количество открытых файлов.
В /etc/pam.d/
У меня есть:
/etc/pam.d# grep pam_limits.so *
atd:session required pam_limits.so
common-session:session required pam_limits.so
common-session-noninteractive:session required pam_limits.so
cron:session required pam_limits.so
login:session required pam_limits.so
runuser:session required pam_limits.so
sshd:session required pam_limits.so
su:session required pam_limits.so
В /etc/security/limits.conf
:
* hard nofile 20000500
* soft nofile 20000500
В /etc/ssh/sshd_config
:
UsePAM yes
В /etc/sysctl.conf
:
fs.file-max = 20000500
Я перезагрузил ОС и что вижу в /var/log/auth.log
является:
sshd [807]: pam_limits (sshd: session): не удалось установить ограничение для 'nofile' на soft = 20000500, hard = 20000500: операция не разрешена; uid = 0, euid = 0
То же самое пытаюсь сделать ulimit -Hn 20000500
так как root
:
bash: ulimit: открытые файлы: невозможно изменить предел: операция не разрешена
Методом проб и ошибок я нашел максимальное число, которое я могу назвать ulimit -Hn
непременно: 1048576. Почему именно этот номер и откуда он взялся?
P.S. Когда там написано «операция запрещена», как я узнаю, кто принимает решение? Я предполагаю, что код в pam_limits.so пытается установить ограничения, но кто на самом деле отказывается? Может быть, система PAM берет на себя всю систему безопасности в ОС?
Ничего жестко запрограммированного, просто установите sysctl_nr_open через fs.nr_open = 5242880 и повторно выполните sysctl -p / login, теперь ваш лимит составляет 5 м. file-max должно быть таким же значением.
Я бы хотел сказать, что это не рекомендация, вы не можете этого сделать. если вы ищете этот другой ответ.
не могу войти в систему, если для nofile установлено значение unlimited в /etc/security/limits.conf
man proc
/proc/sys/fs/file-max
This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-
process limit, RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages in the kernel log about running out of file handles
(look for "VFS: file-max limit <number> reached"), try increasing this value:
echo 100000 > /proc/sys/fs/file-max
The kernel constant NR_OPEN imposes an upper limit on the value that may be placed in file-max.
If you increase /proc/sys/fs/file-max, be sure to increase /proc/sys/fs/inode-max to 3-4 times the new value of /proc/sys/fs/file-max, or you will run out
of inodes.
Privileged processes (CAP_SYS_ADMIN) can override the file-max limit.
ulimit
- это ограничение для пользователя, не установлено ли нормальное значение в глобальных настройках, это похоже на то, что пользователь может использовать все файлы в системе.