I remember back when I was a Linux newbie, asking on the local LUG mailing list for recommended reading in order to learn Linux. Back then, the definitive guide was O’Reilly’s Running Linux. That book was the most recommended reading in order to learn the in’s and out’s of running Linux.
Last month I received a copy of Prentice Hall’s Linux Administration Handbook, a book written by Evi Nemeth, Garth Snyder, and Trent R. Hein. If a Linux newbie asked me today to recommend a book to them, I would cite this book as an invaluable resource, for newbie and experienced Linux user alike.
This particular book is big and green, with some interesting cartoons on the cover… definitely not like your other typical Linux books. But this 890 page book packs a lot of information in a small space and is suitable for any Linux user, regardless of what distribution you are using. It covers a very large range of topics dealing with Linux, and covers specifics for three major Linux distributions: Red Hat, SuSE, and Debian. Because most other distributions are either based on or derivatives of these distributions, it will help you learn about and understand whatever distro you have chosen as your own. It will also let you learn the different quirks between the three.
The book is written in a very informative, yet light-hearted manner, with the authors including little jokes and added humor at every turn. The range of topics that it covers is very comprehensive, but keep in mind that a book covering every single aspect of a Linux system would literally be thousands of pages long. This book does a great job of covering the basics, going into good detail where required, and giving you a nice balanced overview of using Linux, and related technologies.
The book starts off by covering the background and history of Linux and UNIX, and giving some very basic essentials to learning Linux, such as discussing the differences between distributions, manpages and other sources for information on Linux, and the “essential tasks” of system administration. These include brief discussion on user and hardware management, backups and installing new software, monitoring and troubleshooting, and more.
Next, it rolls into booting and shutting down the system, covering the details of the kernel boot process and initialization. It discusses LILO and GRUB, how to multi-boot, and the various initscripts on the system, and breaks it down further into covering startup scripts for the three distributions covered.
Chapter three discusses the power of root and other pseudo-users, discussing the advantages of using sudo and su. The next chapter covers controlling processes and discusses tools like top, ps, nice and renice, and others.
After this, the filesystem is covered, discussing file types, attributes, and various commands used to manipulate files. The next chapter covers all aspects of user management and discusses in detail the /etc/passwd and related files.
The next two chapters deal primarily with hardware, the first discussing serial devices in depth, not only how they correspond with Linux, but the different types of cabling, hardware issues, and more. Then is discussed the hard drive, discussing SCSI and IDE disks, how to add and format drives, and discussing the ext2 and ext3 filesystems. I was somewhat disappointed to see no details on using other journaling filesystems such as ReiserFS or XFS, especially since ReiserFS has been in use with Linux far longer than ext3, which they chose to cover.
The ninth chapter is small, and discusses the various uses for, and how to use, cron for scheduling processes. The tenth chapter is a big one, and discusses backups on Linux. Not only that, but it discusses backup procedure, how and why to backup, and a discourse on tape drives and tape management, as well as using other devices for backup. This chapter also goes into good detail on various tools you can use for backing data up, tools like dump, restore, tar, cpio, dd, and others.
The next chapter deals with syslog and logging, the importance of logging, and how to manage your log files by rotating them, and how to design logging schemes. Next is a chapter dedicated to the kernel and drivers; how to add drivers and load modules, and so on.
Chapter thirteen starts a new section in the book and discusses TCP/IP networking, and this chapter contains all kinds of great information like a history of TCP/IP and the internet, how packets are constructed, the mystery behind IP addresses, subnetting, and netmasks, as well as security issues, using DHCP, and using PPP. After this is a chapter-long discourse on routing with the Linux kernel, discussing tools like routed and gated, various protocols, and packet forwarding. The next chapter discusses network hardware; not really anything to do with Linux exactly, but essential information for anyone planning on implementing their own LAN at home or for anyone interested in system or network administration.
Continuing on in the networking section, the next chapter discusses DNS in gory detail, particularly on using the BIND software. After this is a discussion of NFS; how to configure a NFS server and clients, using tools such as amd and autofs, and more. After this is a chapter on sharing system files and information, discussing tools like rsync, and server solutions such as NIS and LDAP.
No book would be a book on Linux if there was not a chapter devoted to the topic of email. The next chapter discusses how messages are constructed, the different steps of delivery, and then discusses sendmail in detail. Interestingly enough, there is even three pages in this chapter devoted to the Exim MTA, but no discussion of postfix or qmail, which are widely believed to be more in use than Exim. Of course, this may be due to the fact that Exim is the default MTA on Debian, one of the three distributions focused on. I’m not sure if sendmail is still the default MTA in Red Hat and SuSE, however I would have suspected that, at the very least, postfix would have been mentioned.
At any rate, after the 110 pages on sendmail and three pages on Exim, the next chapter deals with network management and troubleshooting, discussing the various tools you can use in Linux to help manage and debug your network, such as traceroute, netstat, tcpdump, and others. The next chapter deals strictly with security, discussing security policies, file permissions, security with various servers (ie. sendmail, NFS, etc.). It covers some “power tools” like nmap, tripwire, and others as well as cryptographic tools like Kerberos and SSH. Of course, the Linux firewall capabilities deserve discussion, and likewise VPNs are discussed. Finally, some important security resources are provided.
The last chapter in the networking section deals with web hosting and internet services, and basically just discusses Apache and Squid.
The next section, entitled “Bunch O’ Stuff” has the first chapter discussing software installation, package management for both rpm and deb packages, using apt-get, and localizing the system, which is simply a fancy way of saying the changes you make to your system locally. After this is a chapter on printing under Linux, discussing LPD and LPRng.
The next chapters cover hardware maintenance and the environment your system is placed in (things like temperature, static electricity, etc.), and performance analysis on your Linux system. As well, making Windows and Linux play nice with each other is covered in another chapter, which discusses not only Samba, but SSH, X Windows emulators, dual-booting, and so on.
The next chapter is one I really enjoyed, and it is a discourse on the many standard daemons that come with almost every Linux distribution, including process schedulers like cron, file service daemons like smbd and rpc.nfsd, various internet daemons like named, httpd, and others, booting and configuration daemons like dhcpd and in.tftpd, and a whole slew of others. If you don’t know what a particular service running on your Linux system is, chances are, this chapter will help you identify them.
The final chapter in the book is entitled “Policy and Politics” and discusses administrative policies, legal issues, and a collection of short “war stories” dealing with various workplace situations where ethics may be involved. While some may wonder what this has to do with a book on Linux administration (I am one of them), I did find it somewhat enlightening and a little amusing. They also discuss various organizations and resources available to the Linux community, such as LPI (Linux Professional Institute) and the LSB (Linux Standard Base).
Each chapter in the book ends with some exercises that are designed to help you obtain as much understanding of the topics presented as possible. While I did not find it necessary, or even desirable, to read the book front to back, this one has been sitting close to me in my office on the chance that I need to look something up. I like to flatter myself and think that it isn’t often, but there are times when a little refresher course is required, or I’m researching something new. And while I wouldn’t give up the rest of my library for this one book, and while it does duplicate the content provided in other books I own, this book is a refreshing read from the others, in part because of it’s light-hearted tone and also because it deviates somewhat from restricting the content specifically to Linux… I’d like to know how to build my own network cabling (even if I never do it)!
All in all, I have to say I was quite impressed with the book and would like to thank Prentice Hall for asking me to review it. My apologies that it took so long for me to get around it, but I wanted to get a good taste for the book before I decided whether or not I would recommend it to others, and I can certainly say that I will recommend it. I hope that a 2nd edition comes out in the not-to-distant future that covers more topics like other journaling filesystems, other MTAs, and perhaps some other interesting tidbits of information concerning my favorite operating system. However, until that time, I will still be recommending this book to anyone who asks about good reading material on Linux.