Training M7D-SISINTRO01
Training M7D-SISINTRO01
org
Training and Consulting
Audience and prerequisites • An electronic copy of the trainer’s book, The Linux Pro-
The primary audience comprises designers and programmers gramming Interface
building privileged applications, container applications, and • Numerous example programs written by the course trainer
sandboxing applications. Systems administrators who man-
age such applications will also find the course of benefit. Course duration and format
Participants should have working knowledge of the fun-
damental system programming topics covered in the Linux Two days, with around 40% of the course time devoted to
System Programming Essentials (M7D-SPESS01) course. practical sessions.
This includes file descriptors and file I/O, signals, and the
process lifecycle (fork(), exec(), wait(), exit()). In addi- Course inquiries and bookings
tion, participants should have a reading knowledge of the
C programming language. (Note, however, that the course For inquiries about courses and consulting, you can contact
exercises do not require writing any programs.) us in the following ways:
Related courses
• Email: [email protected]
The Linux Security and Isolation APIs (M7D-SECISOL02) • Phone: +49 (89) 2155 2990 (German landline)
course covers the same topics as this course, but in greater
depth.
Prices, dates, and further details
Course materials For course prices, upcoming course dates, and further infor-
• Course books (written by the trainer) that include all slides mation about the course, please visit the course web page,
and exercises presented in the course http://man7.org/training/secisolintro/.
1. Course Introduction • Namespace types and APIs • User namespaces and capabilities
2. Classical Privileged Programs • What does it mean to be
6. Mount Namespaces and Shared
• A simple set-user-ID program superuser in a namespace?
Subtrees
• Saved set-user-ID and and saved 11. Cgroups: Introduction
• Mount namespaces
set-group-ID
• Shared subtrees • Preamble
• Changing process credentials
• A few guidelines for writing 7. PID Namespaces • What are control groups?
privileged programs 8. Namespaces APIs • An example: the pids controller
• Creating and destroying cgroups
3. Capabilities • API Overview • Populating a cgroup
• Process and file capabilities • Creating a child process in new • Enabling and disabling controllers
• Permitted & effective capabilities namespaces: clone()
• Setting & viewing file capabilities • /proc/PID/ns 12. Cgroups: A Survey of the
• Capabilities-dumb and • Entering a namespace: setns() Controllers
capabilities-aware applications • Creating a namespace: unshare() • The cpu, memory, freezer, and
• Text form capabilities • PID namespaces idiosyncrasies (*) pids controllers
• Capabilities and execve() 9. User Namespaces • Other controllers (*)
• The capability bounding set
• Capabilities and UID transitions • Overview of user namespaces 13. Seccomp (*)
• Summary remarks • Creating and joining a user
• Seccomp filtering and BPF
namespace
4. Capabilities: Further Topics • The BPF virtual machine and
• User namespaces: UID and GID
BPF instructions
• Capabilities, UID 0, and execve() mappings
• BPF filter return values
• Programming with capabilities (*) • User namespaces, execve(), and
• BPF programs
5. Namespaces user ID 0
• Checking the architecture
• Use cases
• An example: UTS namespaces • Productivity aids (libseccomp and
• Combining user namespaces with
• Namespaces commands other tools)
other namespaces
• Namespaces demonstration (UTS • Applications and further
namespaces) 10. User Namespaces and Capabilities information
The following are some of the other courses taught by Michael Kerrisk. Custom courses are also available upon request. Further
details on these and other courses can be found at http://man7.org/training/. For course inquiries please email [email protected] or
phone +49 (89) 2155 2990 (German landline).