Назад | Перейти на главную страницу

pam_limits: операция не разрешена для sshd

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 - это ограничение для пользователя, не установлено ли нормальное значение в глобальных настройках, это похоже на то, что пользователь может использовать все файлы в системе.