프로세스 이름을 사용하여 특정 그룹이나 사용자의 프로세스 수를 제한할 수 있습니까? 예를 들어. 그룹에 가입하고 싶어요리모콘동시에 5개만SSH내 서버에서 실행 중인 프로세스입니다. 옵션이 표시되지 않습니다.pam_restrictions(프로세스 이름에 관계없이 사용자 또는 그룹당 프로세스 수만 제한할 수 있습니다.) 기능이 표시되지 않습니다.cgroup.
이것을 달성하는 방법에 대한 아이디어가 있습니까? (크론의 스크립트는 내 대답이 아닙니다 :))
답변1
이름으로 프로세스 수를 제한하는 방법은 모르지만 pam_limits를 통해 사용자 로그인 수를 제한하면 전반적인 목표를 달성할 수 있습니다.
/etc/security/limits
다음 과 같은 항목
@remotes hard maxlogins 5
원격 그룹의 사용자는 시스템에서 5개 이상의 로그인 세션을 가질 수 없습니다. SSH 세션의 멀티플렉싱을 방지하기 위해 sshd_config에서 MaxSessions=1과 페어링할 수 있습니다.
또 다른 옵션은 시작되는 서비스 인스턴스를 제한할 수 있도록 서비스 관리자, 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
아니요. 프로세스 이름은 쉽게 변경할 수 있으므로 프로세스 이름으로 제한할 수 없습니다.
따라서 이 제한은 쉽게 피할 수 있습니다.
(런타임에도 바뀔 수 있다고 생각합니다.)