Access List
An Access Control List (ACL) in an operating system is a security mechanism attached to a system object—such as a file, directory, or peripheral device—that specifies which users or system processes are granted access to that object, as well as what specific operations (read, write, execute, delete) they are allowed to perform. Whenever a subject attempts an action, the OS checks this list to verify permissions before granting access.
<h3>Definition & Key Points</h3><h2><!--StartFragment--><p>An Access Control List implements a column-based approach to the conceptual Access Matrix in operating system security. Instead of keeping a massive global table of every user and every resource, the OS attaches an individualized permissions list directly to each resource.</p><ul><li><p><b>Object-Centric:</b> Each ACL belongs to a specific resource (e.g., <code data-path-to-node="4,0,0" data-index-in-node="63">file.txt</code> owns an ACL specifying rules for Alice, Bob, and Guests).</p></li><li><p><b>Access Control Entries (ACEs):</b> Every line in an ACL is an entry containing two parts: the identifier (user or user group) and the permitted access rights (e.g., <code data-path-to-node="4,1,0" data-index-in-node="161">Alice: Read/Write</code>).</p></li><li><p><b>Default Deny:</b> Most modern operating systems operate on the principle that if a user is not explicitly granted permission in the ACL, access is denied.</p></li><li><p><b>Granular Control:</b> Allows fine-grained permission assignments beyond simple ownership models (e.g., granting read access to three specific users without making the file world-readable).</p></li></ul></h2><h3>Significance</h3><h2><ul><li><p><b>Enforces the Principle of Least Privilege:</b> Ensures users and background services only have access to the exact resources necessary to do their work.</p></li><li><p><b>Protects Data Integrity & Privacy:</b> Prevents unauthorized viewing, alteration, or accidental deletion of system files and personal user data.</p></li><li><p><b>Scalable Administration:</b> Enables system administrators to manage resource permissions for distinct groups rather than assigning individual rights across the entire system.</p></li></ul></h2><h3>Advantages</h3><h2><ul><li><p><b>Simple Resource Auditing:</b> It is easy to see who has access to a specific file simply by inspecting that file's ACL.</p></li><li><p><b>Immediate Revocation:</b> Removing a user's rights to a resource takes effect instantly because the OS checks the ACL on the object directly at the time of access.</p></li><li><p><b>Flexible Sharing:</b> Supports complex collaborative workflows where different users require varying levels of read, write, append, or execute permissions.</p></li><li><p><b>Group Management:</b> Allows rules to apply to entire roles or groups (e.g., <code data-path-to-node="10,3,0" data-index-in-node="73">Developers</code>, <code data-path-to-node="10,3,0" data-index-in-node="85">HR</code>), streamlining administration.</p></li></ul></h2><h3>Disadvantages</h3><h2><ul><li><p><b>Performance Overhead:</b> The OS must traverse and evaluate entries in the ACL every time a resource is opened or executed, introducing minor latency.</p></li><li><p><b>Difficult User Revocation:</b> Determining every single file a specific user can access across the entire system requires scanning the ACL of every file on disk.</p></li><li><p><b>Storage Footprint:</b> Storing a list of entries alongside each file metadata block consumes additional disk space, especially on systems with millions of files.</p></li><li><p><b>Configuration Drift & Complexity:</b> Large, nested ACLs can quickly become difficult to maintain, leading to unintended permission leaks or conflicts.</p></li></ul></h2>
