In a file system overlay, each layer is a separate file system, and changes made to the topmost layer do not affect the underlying layers. This allows for a number of use cases, such as: * **Live updates**: A new version of a file system can be mounted as an overlay on top of the existing file system, allowing for live updates without disrupting the running system. * **Versioning**: Multiple versions of a file system can be maintained, with each version being a separate layer in the overlay. * **Testing and development**: A test or development environment can be created as an overlay on top of a production file system, allowing for testing and development without affecting the production environment. * **Read-only base image**: A read-only base image can be used as the bottom layer, with a writable overlay on top, allowing for customization and modification of the file system without modifying the base image. File system overlays are commonly used in Linux and other Unix-like operating systems, and are supported by file systems such as OverlayFS, AuFS, and UnionFS. Some key benefits of file system overlays include: * **Flexibility**: File system overlays provide a flexible way to manage multiple file systems and versions. * **Efficiency**: File system overlays can reduce storage requirements by allowing multiple layers to share the same underlying storage. * **Isolation**: File system overlays provide isolation between layers, allowing for testing and development without affecting the production environment. However, file system overlays can also introduce additional complexity, and may require additional management and maintenance to ensure data consistency and integrity.
* EUID (Effective User ID): ID used to determine the process's permissions and access rights (can be different from UID if the process has been started with elevated privileges, e.g., using `sudo`). * EGID (Effective Group ID): The effective group ID of the process, which is used to determine the process's group membership and access rights.
* **Tools**: cgroups are managed using tools like `cgcreate`, `cgset`, and `cgexec`, as well as through APIs and libraries like libcgroup and systemd