// the find
iamjineshmodi/Role_Based_Access_Control_Optimization
An implementation of a research paper's algorithm for role-based access control (RBAC) mining that creates optimal role assignments while adhering to user and permission cardinality constraints.
A single-file C implementation of a role-mining algorithm for RBAC, meant to take a user-permission matrix and produce a minimal set of roles under cardinality constraints. It's aimed at people studying RBAC role mining research, not at anyone needing a production access-control tool.
It ships several real benchmark datasets (firewall1, firewall2, domino, americas_small, healthcare) that are recognizable from the role-mining literature, so you can actually run it against non-trivial inputs instead of toy examples. The two-phase approach — minimal-coverage roles first, then alternating user-centric and permission-centric formation for the remainder — matches how these heuristics are usually described in papers, and the UPA-in/UA+PA-out file format is simple enough to script around.
There's no way to check correctness: no reference role counts for the included datasets, no tests, and the README doesn't even name the paper it's reproducing, so you can't verify the output is actually close to optimal. It's one file (plus a stray 'Main_code.c' that duplicates or shadows main.c — unclear which is canonical) with no header separation or build script beyond a bare gcc command. The interactive scanf-based prompt for filename and constraints makes it unusable for batch experiments or scripting. Stated limits of 5000 users/roles/permissions strongly suggest fixed-size static arrays rather than dynamic allocation, with no mention of bounds checking if you exceed them.