是否可以使用进程名称限制给定组或用户的进程数量?例如。我想加群遥控器只有 5 个同时SSH在我的服务器上运行的进程。我没有看到任何选项pam_限制(我只能限制每个用户或组的进程数量,无论进程名称如何)并且我看不到能力cgroups。
您有什么想法如何实现这一目标吗? (cron 中的脚本不是我的答案:))
答案1
虽然我不知道通过名称限制进程数量的方法,但您也许可以通过 pam_limits 通过限制用户登录数量来实现总体目标。
一个条目,/etc/security/limits
例如
@remotes hard maxlogins 5
将确保remotes组的用户在系统上的登录会话不能超过5个。您可能需要将其与 sshd_config 中的 MaxSessions=1 配对(以防止多路复用 SSH 会话)。
另一种选择是在服务管理程序、init 系统或超级服务器下运行 sshd 服务,这样您就可以限制它启动的服务实例。 edvinas.me 提到了 xinetd。如果您在 xinetd 下运行 sshd,下面完全未经测试的 xinetd 配置片段会将您的 ssh 实例总数限制为 20:
service ssh
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/sshd
server_args = -i
per_source = UNLIMITED
instances = 20
}
通过使用带有 的 systemd 套接字单元可以获得类似的效果MaxConnections=20
。
答案2
不,不能通过进程名称来限制,因为进程名称可以很容易地更改。
所以这个限制很容易被规避。
(我认为它甚至可以在运行时更改。)