按名称限制进程数量

按名称限制进程数量

是否可以使用进程名称限制给定组或用户的进程数量?例如。我想加群遥控器只有 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

不,不能通过进程名称来限制,因为进程名称可以很容易地更改。

所以这个限制很容易被规避。

(我认为它甚至可以在运行时更改。)

相关内容