Почему он не может получить более 4096 макс. Открытых файлов для пользователя без полномочий root?

Я не могу увеличить nofile ограничение для пользователей без полномочий root в Ubuntu 14.04, несмотря на то, что они следуют каждому ответу StackExchange, связанному с этой проблемой. Пока что у меня есть:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

$ cat /proc/sys/fs/file-max
101232

Перезагрузился, залогинился и:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted

Там все еще как-то, кажется, ограничение в 4096 макс для пользователей без полномочий root.

3 ответа

Используя Ubuntu 14.04, я получил жесткое ограничение:

user@notebook:~$ ulimit -Hn 4096  

Я мог бы уменьшить его, используя ulimit, но не увеличивать его, как описывает вопрос. Как описывает руководство ulimit:

только root может увеличить жесткий предел

Поэтому я попытался установить более высокий предел в /etc/security/limits.conf как это:

user hard nofile 9999 

и свежий логин как ssh localhost -l user дал мне новый лимит:

user@notebook:~$ ulimit -Hn 9999

Надеюсь, это работает и для вас.

Эта статья, я думаю, решает вашу проблему.

В основном вы должны использовать команду ulimit для увеличения доступных ресурсов.

Например:

Используйте следующую команду для отображения максимального количества дескрипторов открытых файлов:

cat /proc/sys/fs/file-max

Чтобы увидеть жесткие и мягкие значения, введите команду следующим образом:

# ulimit -Hn
# ulimit -Sn

Чтобы увидеть жесткие и программные значения для пользователя httpd или oracle, введите следующую команду:

# su - username

Чтобы зафиксировать максимальное количество файлов, вы можете увеличить максимальное количество открытых файлов, установив новое значение в переменной ядра /proc/sys/fs/file-max следующим образом (войдите в систему как root):

# sysctl -w fs.file-max=100000

Выше команды форсирует ограничение до 100000 файлов. Вам нужно отредактировать /etc/sysctl.conf файл и поставьте следующую строку, чтобы после перезагрузки настройка оставалась как есть. Для этого добавьте директиву config следующим образом:

fs.file-max = 100000

Сохраните и закройте файл. Чтобы изменения вступили в силу, пользователям необходимо выйти и снова войти в систему или просто введите следующую команду:

# sysctl -p

Проверьте настройки с помощью команды:

# cat /proc/sys/fs/file-max

или же:

# sysctl fs.file-max

Вышеуказанная процедура устанавливает ограничения файловых дескрипторов (FD) для всей системы, однако вы можете ограничить httpd (или любых других пользователей) пользователя в определенных пределах путем редактирования /etc/security/limits.conf файл путем редактирования /etc/security/limits.conf и установите ограничения следующим образом:

httpd soft nofile 4096
httpd hard nofile 10240

Затем проверьте их по:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

Если у вас есть проблема в других дистрибутивах Linux, проверьте /etc/pam.d/login и убедитесь, что у вас есть pam_limits.so включен, например

session required pam_limits.so

Если это услуга, вы можете попытаться установить ограничение в /etc/systemd/system/{ServiceName}.service добавлять LimitNOFILE=65536

Другие вопросы по тегам