Lab 4: Implementing Access Control and Debugging Refresher
Linux Extended ACLs
In lecture we discussed how UNIX systems tend to implement Access Control Lists to enable fine-grained access control beyond the default abbreviated ACL (permission bits) which are unable to express more complex per-user protection states.
In today’s lab, you will get the opportunity to work with Linux’s Extended ACLs to see how they can be used to implement fine-grained access control in a practical setting.
Linux Extended ACLs are generally not installed by default and require file system support to enable; however, once they are available, each file and directory’s ACL can be read using getfacl and modified using setfacl.
Refer to the lecture notes again to review the behavior of extended ACLs.
Some other useful links:
- Glen Newell. An introduction to Linux Access Control Lists (ACLs). 2/6/2020. redhat.com
- nawazadhandala. How to Use setfacl and getfacl for Extended ACL Permissions on Ubuntu. 3/2/2026. oneuptime.com
- Andreas Gruenbacher. acl(5) - Linux man page. 3/32/2002. linux.die.net
Debugging Refresher
In the next unit, we will be getting into program security, and your labs will be about binary exploitation—finding and exploiting vulnerabilities like buffer overflows in programs by inspecting them at runtime and crafting a malicious input.
To prepare for that, we’ll be going through the “Debugging Refresher” so that you can familiarize yourself with gdb, the GNU Project Debugger, and its capabilities.
Make sure to read all the instructions on pwn.college as these provide helpful context and links to the documentation.
The challenges in this module are completed entirely within a debugger after they are initiated by invoking the embryogdb challenge script.
You might find these cheatsheets helpful for future reference as well: