単一のポートを管理できる selinux ユーザーとしてシステムを構成するサービスを作成しました。 1000人のユーザーをこのマシンにプロビジョニングしようとしています。あります)。最初の試みでは、数時間後にRAMが不足し(1GBのみ)、最終的に動作が中断されました。
だから私の質問は、ユーザーを追加すると、なぜselinuxが遅くなるのですか(特にsemanage userコマンド)。私はselinuxメーリングリストのアーカイブでメモリリークの言及を見たことがありますが、それは難解な場所でしか見えないようです。
要求どおりにここに私が呼び出したすべてのselinuxコマンドがあります(コンテキストなしでは意味がないことを知っています)。しかし、スクリプト全体を公開することには関係がないと思います。
subprocess.check_call(['make', '-f', '/usr/share/selinux/devel/Makefile'])
subprocess.check_call(['checkmodule', '-M', '-m', '-o', mod_file, te_file])
result = subprocess.check_output(['semodule_package', '-m', mod_file, '-o', pp_file])
subprocess.check_call(['semodule', '-r', mod_name])
return str(subprocess.check_output(['semanage', 'port', '-l', '-C', '-n'])).splitlines()
subprocess.check_call(["semanage", "port", "-a", "-t", selinux_portname, "-p", "tcp", str(port)])
subprocess.check_call(["chcon", "--reference", "%s/users/%s" % (selinux_context_dir, template_user), "%s/users/%s" % (selinux_context_dir, selinux_user) ])
subprocess.check_call(["semanage", "user", "-a", "-R", selinux_role, selinux_user ])
subprocess.check_call(["semanage", "login", "-a", "-s", selinux_user, user])
subprocess.check_call(["restorecon", "-RF", "/home/%s" % (user)])
約40時間実行後、ユーザー数は560人になりました。しかし、沈んだりクラッシュしたりすることなく、1時間あたり6〜7人のユーザーで安定したので、それほど良いかもしれません。