101 Linux ACL

No comments

 Here is the cleaned-up version of the Linux ACL (Access Control List) explanation without any special symbols:


What is ACL (Access Control List) in Linux?

Definition

ACL is a fine-grained permission system in Linux that allows you to grant different permissions to multiple users and groups on a single file or directory — something that traditional Unix permissions can't do.


Why Use ACL?

Traditional Linux file permissions only allow you to define:

  • One owner (user)

  • One group

  • Permissions for others

So you can only have 3 sets of permissions: user, group, others

But what if:

  • You want to give read access to another user

  • Or let a different group have write access

  • Without changing ownership or primary group

That's where ACL comes in.


ACL vs Traditional Permissions

Feature Traditional Permissions ACL
Number of users/groups 1 user, 1 group Multiple users and groups
Granularity Limited (r/w/x) Fine-grained per user/group
Inheritance No Yes (default ACL on directories)

Enabling and Using ACL

Check if filesystem supports ACL

Most modern Linux distros with ext4, xfs, or btrfs support it.

mount | grep acl

If not enabled, mount with:

mount -o remount,acl /mount/point

ACL Commands

1. Check current ACLs

getfacl filename

Example:

getfacl report.txt

Output:

file: report.txt
owner: prakash
group: devs
user::rw-
user:john:r--
group::r--
mask::r--
other::---

2. Add ACL for specific user

setfacl -m u:john:r file.txt

John gets read-only access, even if he is not the owner or in the group.


3. Add ACL for a group

setfacl -m g:designers:rw file.txt

Group 'designers' can read/write file.txt


4. Remove ACL entry

setfacl -x u:john file.txt

5. Set Default ACL on directory (for inheritance)

setfacl -d -m u:john:rw /project/folder

All new files inside /project/folder will automatically give john read/write access.


6. Remove all ACLs

setfacl -b file.txt

Example Scenario

You’re building a CI/CD pipeline and want:

  • Dev team to have read/write on app.conf

  • Ops team to have read-only access

  • Jenkins user to have write-only access

Using ACL:

setfacl -m g:dev:rw app.conf
setfacl -m g:ops:r-- app.conf
setfacl -m u:jenkins:-w- app.conf

Output Explanation (getfacl)

file: file.txt
owner: prakash
group: devs
user::rw-
user:john:r--
group::r--
group:designers:rw-
mask::rw-
other::---

Mask defines the maximum permission limit for all ACL users and groups (excluding the owner).


Interview-Ready Q and A

Q1: Why use ACL when traditional permissions exist?

A: Traditional permissions only allow one user and one group. ACL allows multiple users and groups to have different access levels on the same file or directory — useful in collaborative or enterprise environments.


Q2: What does 'setfacl -m u:john:rw file.txt' do?

A: It gives read/write access to user john on file.txt without changing ownership or default permissions.


Q3: What does 'mask::r--' mean in 'getfacl'?

A: The mask defines the maximum permission limit for all ACL users and groups (excluding the owner). Even if ACL grants rw-, a mask of r-- will reduce it to read-only.


Q4: How do you make ACL changes persistent across reboots?

A: ACLs are stored in extended attributes of files, and are persistent across reboots — provided the filesystem is mounted with acl support.


Q5: What’s the difference between default ACL and access ACL?

Type Applied to Purpose
Access ACL Files/Dirs Overrides standard permissions
Default ACL Directories Inherited by new files/dirs

Summary Cheat Sheet

Command Description
getfacl file.txt View ACLs
setfacl -m u:john:rw file.txt Set ACL for user
setfacl -m g:devs:rw file.txt Set ACL for group
setfacl -x u:john file.txt Remove ACL for user
setfacl -b file.txt Remove all ACL entries
setfacl -d -m u:john:rw dir/ Set default ACL for directory

Let me know if you want a one-page printable PDF or a Notion-ready template with examples and command cheats.

No comments :

Post a Comment