Я обновил
/etc/security/limits.conf
, как показано нижеЭто читается в pam_limits.so , поэтому он действует только для всего, что проходит через PAM, как в логине пользователя.
обновлен
/etc/sysctl.conf
Вероятно, это читается некоторыми сценариями загрузки, поэтому изменения вступают в силу только после перезагрузки ... (Там
systemd-sysctl.service
и скрипт старого стиля/etc/init.d/procps
в моем Debian.)Дело в том, что ни один из этих файлов не читается мгновенно, и изменения в ulimit никогда не применяются к запущенным процессам.
Как я могу увеличить значение «Макс. Количество открытых файлов» для этого процесса / приложения ruby?
Узнать, что запускает его, изменить там ulimit и перезапустить процесс. Если вы запустите его из командной строки, измените ограничения на оболочку и перезапустите ее, если вы запустите ее из init / systemd / something, вам может потребоваться найти правильную конфигурацию.
Добавьте это в свой ~/.bashrc
, это гарантирует, что только локальный tty
сможет запускать это программное обеспечение.
Когда пользователь входит в систему через ssh
, сервер добавляет alias
к команде, которая просто выводит «Ограничено. Может выполняться только локально».
whichtty=$( ps hotty $$ | grep pts )
if [ $? -eq 0 ]; then
alias <software_name>='echo Restricted. Can only be run locally.'
else
echo
fi
Сеанс SSH будет осуществляться на псевдо-подчиненном терминале (pts
), как показано в столбце TTY
, но не все соединения pts
являются сеансами SSH
. Например, программы, которые создают терминальное устройство псевдо -, такое как xterm
или screen
, будут отображаться как pts
. Таким образом, недостатком этого скрипта является то, что вы не можете запустить это программное обеспечение из своего локального xterm
или screen
.
Вам придется запускать программное обеспечение из панели запуска.
Вариация на тему ответа Хантера С.Томпсона:
В файле запуска оболочки:
if [ -n "$SSH_CLIENT" ]; then
alias matlab='echo "restricted to local users only, sorry"'
alias firefox='echo "restricted to local users only, sorry"'
fi
Это не мешает никому обходить эти псевдонимы, поэтому вместо этого можно создать сценарий оболочки для каждого ограниченного программного обеспечения.
Например:/usr/local/bin/matlab
:
#!/bin/sh
if [ -n "$SSH_CLIENT" ]; then
echo 'restricted to local users only, sorry' >&2
exit 1
fi
exec /real/path/to/matlab
Это не мешает пользователю сбрасывать свою SSH_CLIENT
переменную окружения или выполнять настоящую matlab
программу напрямую.