Linux Capabilities and Namespaces course outline
 
        - Course Introduction
- Classical privileged Programs
            
                - A simple set-user-ID program
- Saved set-user-ID and saved set-group-ID
- Changing process credentials
- A few guidelines for writing privileged programs
 
- Capabilities
            
                - Process and file capabilities
- Permitted and effective capabilities
- Setting and viewing file capabilities
- Capabilities-dumb and capabilities-aware applications
- Text-form capabilities
 
- Capabilities and execve()
            
                - Capabilities and execve()
- The capability bounding set
- Inheritable capabilities
- Summary of process capability sets (so far)
- Ambient capabilities
- An alternative summary of process capability sets
- Summary remarks
 
- Capabilities and UID 0
            
                - Capabilities and UID transitions
- Capabilities, UID 0, and execve()
- Making a capabilities-only environment: securebits (*)
 
- Programming with capabilities (*)
            
                - Programming with capabilities
 
- Namespaces
            
                - An example: UTS namespaces
- Namespaces commands
- Namespaces demonstration (UTS namespaces)
- Namespace types and APIS
- Namespaces, containers, and virtualization
 
- Mount Namespaces and Shared Subtrees
            
                - Mount namespaces
- Shared subtrees
- Bind mounts
 
- PID Namespaces
            
        
- Other Namespaces
            
                - IPC namespaces
- Time namespaces
- Cgroup namespaces
- Network namespaces
 
- Namespaces APIs
            
                - API Overview
- Creating a child process in new namespaces: clone()
- /proc/PID/ns
- Entering a namespace: setns()
- Creating a namespace: unshare()
- PID namespaces idiosyncrasies
- Namespace lifetime (*)
 
- User Namespaces
            
                - Overview of user namespaces
- Creating and joining a user namespace
- User namespaces: UID and GID mappings
- Accessing files (and other objects with UIDs/GIDs)
- Security issues
- Combining user namespaces with other namespaces
- Use cases
 
- User namespaces, execve(), and user ID 0
                - User namespaces, execve(), and user ID 0
- User Namespaces and Capabilities
            
                - User namespaces and capabilities
- What does it mean to be superuser in a namespace?
- Discovering namespace relationships
- File-related capabilities (*)
 
- User Namespaces and Privileged Programs (*)
            
                - User namespace "set-UID-root" programs
- Namespaced file capabilities
 
- Mount Namespaces: Further Details (*)
            
                - Peer groups
- Private mounts
- Slave mounts
- Unbindable mounts
- Mounting a container filesystem
 
    (*) Topics marked with an asterisk may be
    covered, if time permits.
Return to the course overview