Я пытаюсь поднять максимальный дескриптор открытого файла для всех пользователей на машине ubuntu.
Этот вопрос является своего рода продолжением этого вопроса.
параметр open file descriptor limits.conf не читается ulimit, даже если требуется pam_limits.so
за исключением того, что я добавил необходимые "корневые" записи в limits.conf
Вот записи
* soft nofile 100000
* hard nofile 100000
root soft nofile 100000
root hard nofile 100000
Линии, относящиеся к pam_limits.so
не прокомментированы во всех соответствующих файлах в /etc/pam.d/ и fs.file-max
правильно установлен в /etc/sysctl.conf
Однако я все еще вижу
abc@machine-2:/etc/pam.d$ ulimit -n
1024
после перезагрузки.
В чем может быть проблема?
Моя оболочка по умолчанию - / bin / sh, и я не могу использовать chsh для изменения оболочки по умолчанию, поскольку мой пользователь на машине аутентифицирован с помощью некоторой распределенной схемы аутентификации.
У меня была аналогичная проблема, но только с логинами SSH. Локальные входы (через консоль) соблюдали /etc/security/limits.conf
.
Как оказалось, при установке:
UsePrivilegeSeparation yes
в /etc/ssh/sshd_config
файл, затем sshd разветвляет непривилегированного ребенка для настройки env учетной записи. Поскольку этот дочерний элемент является непривилегированным, установка верхних пределов pam_limits.so не имеет никакого эффекта.
Как только я установил
UsePrivilegeSeparation no
в /etc/ssh/sshd_config
и отказался от службы SSH, тогда файл limits.conf был соблюден с логинами SSH.
На сервере Redhat авторизован как root
/etc/security/limits.conf
user01 - nofile 2048
команда strace зарегистрирована как root
strace -o loglimit su - user01
с другой оболочкой open loglimit
grep "limit" loglimit
open("/lib64/security/pam_limits.so", O_RDONLY) = 6
..........
..........
open("/etc/security/limits.conf", O_RDONLY) = 3
read(3, "# /etc/security/limits.conf\n#\n#E"..., 4096) = 1823
open("/etc/security/limits.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
setrlimit(RLIMIT_NOFILE, {rlim_cur=2*1024, rlim_max=2*1024}) = 0
Таким образом, я знаю, что pam_limits был загружен и limits.conf был прочитан, если ваш pam_limits был загружен, но вы все еще видите другие значения, используя ulimit -n, проверьте свой профиль оболочки, как сказал @etherfish
Я подозреваю, что ulimit применяется в / etc / profile или ~ / .bashrc. Тот факт, что ваша система имеет сложную память, я подтверждаю, что что-то не так.
Я также подтверждаю, что в /etc/security/limits.d/ нет ошибочного файла, который анализируется, как указано в pam_limits (8).
Я бы добавил параметр отладки в строку pam_limits.conf, необходимую для сеанса, а затем смотрел /var/log/auth.log, когда вы входите в систему.
Если ваш мягкий лимит равен 1024, каков ваш жесткий лимит?
su должен предоставить вам свежий, новый вход в систему с помощью su с аргументом -l.
su -l -s / bin / bash
Удачи.
У меня была такая проблема, вот что я сделал.
Команда strace распечатает все взаимодействия, которые процесс делает с внешними библиотеками, поэтому с ее помощью мы можем видеть, загружена наша конфигурация или нет.
Итак, я делаю, как предложено выше:
root:/etc/pam.d$ strace -o ~/loglimit su - glaudiston
glaudiston:~$ exit
logout
root:/etc/pam.d$ cat ~/loglimit | grep limits.conf
В моей проблеме в журнале strace (strace -o log su - username) нет экземпляра текста ограничений, поэтому файл limits.conf НЕ был загружен.
Сначала я убеждаюсь, что pam_limits.so ищет /etc/security/limits.conf
root:/etc/pam.d$ strings /lib/security/pam_limits.so | grep limits.conf
/etc/security/limits.conf
Итак, я убеждаюсь, что модуль pam_limits.so загружен в операции auth в файлах, расположенных в /etc/pam.d ... например, в /etc/pam.d/su, я добавил:
session required pam_limits.so
Теперь я могу отправить своему пользователю «su», и ограничения будут загружены. Вы можете повторить шаг strace, чтобы убедиться в этом.
Мой linux - это LFS, поэтому я виноват в отсутствии pam_limits.so в файлах /etc/pam.d. В других дистрибутивах я не думаю, что это именно та проблема.
Но надеюсь, что это поможет.
В моем случае (Centos 6.10) strace показал, что после того, как предел был установлен с /etc/security/limits.conf позже в процессе входа в систему он был сброшен с /etc/security/limits.d/90-nproc.conf для всех пользователей без полномочий root:
* soft nproc 1024
root soft nproc unlimited