TL;DR: The design and implementation of LSM are presented and the challenges in providing a truly general solution that minimally impacts the Linux kernel are discussed.
Abstract: The access control mechanisms of existing mainstream operating systems are inadequate to provide strong system security. Enhanced access control mechanisms have failed to win acceptance into mainstream operating systems due in part to a lack of consensus within the security community on the right solution. Since general-purpose operating systems must satisfy a wide range of user requirements, any access control mechanism integrated into such a system must be capable of supporting many different access control models. The Linux Security Modules (LSM) project has developed a lightweight, general purpose, access control framework for the mainstream Linux kernel that enables many different access control models to be implemented as loadable kernel modules. A number of existing enhanced access control implementations, including Linux capabilities, Security-Enhanced Linux (SELinux), and Domain and Type Enforcement (DTE), have already been adapted to use the LSM framework. This paper presents the design and implementation of LSM and discusses the challenges in providing a truly general solution that minimally impacts the Linux kernel.
TL;DR: Beginning Linux Programming delivers an excellent overview of the world of Linux development with an appealing range of essential tools and APIs, and serves as a valuable primer on languages and tools such as Tcl, Perl, and CGI.
Abstract: Provided you have some previous basic exposure to C and Unix, Beginning Linux Programming delivers an excellent overview of the world of Linux development with an appealing range of essential tools and APIs. The standout feature of Beginning Linux Programming is its wide-ranging coverage of important topics in basic Unix programming. In a series of short chapters, the authors discuss the basics of writing Unix programs in C, with material on basic system calls, file I/O, interprocess communication (for getting programs to work together), and advanced topics such as socket programming and how to create Unix device drivers. Parallel to this, the book introduces the toolkits and libraries for working with user interfaces, from simpler terminal mode applications to X and GTK+ for graphical user interfaces. While you won't be an authority on X or GTK+ after reading this book, you will certainly be able to explore real Linux development on your own after the capable introductory guide provided here. (The book's main example, a CD-ROM database, gets enhanced in subsequent chapters using new APIs and features as the book moves forward.) This text also serves as a valuable primer on languages and tools such as Tcl, Perl, and CGI. (There's even a section that explains the basics of the Internet and HTML.) More than ever, there is no shortage of specific information on Linux programming, but few titles provide such a wide-ranging tour of what you need to know to get serious with Linux development. In all, Beginning Linux Programming gives the reader an intelligent sampling of essential topics in today's Linux. It's a wise choice for aspiring Unix C developers or folks seeking to extend the range of their Linux knowledge. --Richard Dragan Topics covered: Linux overview, compiling C programs, shell programming, pipes, script keywords and functions, Unix file I/O in C, Unix system functions, terminal interfaces (termios, keyboard input, the curses library), memory management, file locking, dbm databases, make and source control basics, man pages, debugging with gdb, processes and signals, POSIX threads and synchronization, IPC and pipes, semaphores, queues and shared memory, sockets, Tcl basics, X Windows and GTK+ for GNOME, Perl basics, HTML and CGI, writing Unix device drivers.
TL;DR: While this book will focus mostly on the Application Programming Interface provided by the Linux kernel and the C library, a preliminary introduction to the development tools available will allow all who purchase the book to make immediate use of Linux.
Abstract: From the Publisher:
Advanced Linux Programming is divided into two parts. The first covers generic UNIX system services, but with a particular eye towards Linux specific information. This portion of the book will be of use even to advanced programmers who have worked with other Linux systems since it will cover Linux specific details and differences. For programmers without UNIX experience, it will be even more valuable. The second section covers material that is entirely Linux specific. These are truly advanced topics, and are the techniques that the gurus use to build great applications. While this book will focus mostly on the Application Programming Interface (API) provided by the Linux kernel and the C library, a preliminary introduction to the development tools available will allow all who purchase the book to make immediate use of Linux.
Written by recognized leaders in the open source community! Learn what they've learned from working with well-known groups like Advanced Computing Laboratory of Los Alamos National Laboratory and the GCC Open Source Group.Author Mark Mitchell is the award winning lead developer and manager for the GCC 3.0 release (the compiler used when programming with Linux). Learn the advanced aspects of Linux programming from the best.The ultimate guide to creating, compiling, running, and debugging Linux code.
TL;DR: The Linux Programming Interface as discussed by the authors is the most comprehensive single-volume work on the Linux and UNIX programming interface, and a book that's destined to become a new classic for programming.
Abstract: The Linux Programming Interface is the definitive guide to the Linux and UNIX programming interfacethe interface employed by nearly every application that runs on a Linux or UNIX system. In this authoritative work, Linux programming expert Michael Kerrisk provides detailed descriptions of the system calls and library functions that you need in order to master the craft of system programming, and accompanies his explanations with clear, complete example programs. You'll find descriptions of over 500 system calls and library functions, and more than 200 example programs, 88 tables, and 115 diagrams. You'll learn how to: Read and write files efficiently Use signals, clocks, and timers Create processes and execute programs Write secure programs Write multithreaded programs using POSIX threads Build and use shared libraries Perform interprocess communication using pipes, message queues, shared memory, and semaphores Write network applications with the sockets API While The Linux Programming Interface covers a wealth of Linux-specific features, including epoll, inotify, and the /proc file system, its emphasis on UNIX standards (POSIX.1-2001/SUSv3 and POSIX.1-2008/SUSv4) makes it equally valuable to programmers working on other UNIX platforms. The Linux Programming Interface is the most comprehensive single-volume work on the Linux and UNIX programming interface, and a book that's destined to become a new classic. Praise for The Linux Programming Interface "If I had to choose a single book to sit next to my machine when writing software for Linux, this would be it." Martin Landers, Software Engineer, Google "This book, with its detailed descriptions and examples, contains everything you need to understand the details and nuances of the low-level programming APIs in Linux . . . no matter what the level of reader, there will be something to be learnt from this book." Mel Gorman, Author of Understanding the Linux Virtual Memory Manager "Michael Kerrisk has not only written a great book about Linux programming and how it relates to various standards, but has also taken care that bugs he noticed got fixed and the man pages were (greatly) improved. In all three ways, he has made Linux programming easier. The in-depth treatment of topics in The Linux Programming Interface . . . makes it a must-have reference for both new and experienced Linux programmers." Andreas Jaeger, Program Manager, openSUSE, Novell "Michael's inexhaustible determination to get his information right, and to express it clearly and concisely, has resulted in a strong reference source for programmers. While this work is targeted at Linux programmers, it will be of value to any programmer working in the UNIX/POSIX ecosystem." David Butenhof, Author of Programming with POSIX Threads and Contributor to the POSIX and UNIX Standards ". . . a very thoroughyet easy to readexplanation of UNIX system and network programming, with an emphasis on Linux systems. It's certainly a book I'd recommend to anybody wanting to get into UNIX programming (in general) or to experienced UNIX programmers wanting to know 'what's new' in the popular GNU/Linux system." Fernando Gont, Network Security Researcher, IETF Participant, and RFC Author ". . . encyclopedic in the breadth and depth of its coverage, and textbook-like in its wealth of worked examples and exercises. Each topic is clearly and comprehensively covered, from theory to hands-on working code. Professionals, students, educators, this is the Linux/UNIX reference that you have been waiting for." Anthony Robins, Associate Professor of Computer Science, The University of Otago "I've been very impressed by the precision, the quality and the level of detail Michael Kerrisk put in his book. He is a great expert of Linux system calls and lets us share his knowledge and understanding of the Linux APIs." Christophe Blaess, Author of Programmation systeme en C sous Linux ". . . an essential resource for the serious or professional Linux and UNIX systems programmer. Michael Kerrisk covers the use of all the key APIs across both the Linux and UNIX system interfaces with clear descriptions and tutorial examples and stresses the importance and benefits of following standards such as the Single UNIX Specification and POSIX 1003.1." Andrew Josey, Director, Standards, The Open Group, and Chair of the POSIX 1003.1 Working Group "What could be better than an encyclopedic reference to the Linux system, from the standpoint of the system programmer, written by none other than the maintainer of the man pages himself? The Linux Programming Interface is comprehensive and detailed. I firmly expect it to become an indispensable addition to my programming bookshelf." Bill Gallmeister, Author of POSIX.4 Programmer's Guide: Programming for the Real World ". . . the most complete and up-to-date book about Linux and UNIX system programming. If you're new to Linux system programming, if you're a UNIX veteran focused on portability while interested in learning the Linux way, or if you're simply looking for an excellent reference about the Linux programming interface, then Michael Kerrisk's book is definitely the companion you want on your bookshelf." Loic Domaigne, Chief Software Architect (Embedded), Corpuls.com
TL;DR: This article presents the available programs that can provide, with different technology, a virtualization of Linux computers and defines some usage criteria that allows the reader to chose the relevant virtualization technology according to its specific needs.
Abstract: This article presents the available programs that can provide, with different technology, a virtualization of Linux computers. We define some usage criteria that allows the reader to chose the relevant virtualization technology according to its specific needs. We focus on the Linux-VServer technology, which is a very lightweight and effective technology for the regular Linux user not interested in Kernel hacking. The Linux-VServer project also supports additional security options and resources limitation that can be very useful. This is also the most mature open-source technology and several users have production servers using this technology for years now.