Webmin is a web-based graphical UNIX system administration tool written by Jamie Cameron in the Perl programming language that is designed to be lightweight, functional, and easily extensible. Webmin has been translated to over 20 languages and dialects at the time of this writing, and has been embraced by a number of hardware and operating system vendors as their default system administration tool. It is extremely portable, offering support for more than 35 different UNIX-like Operating Systems and Linux distributions. And it is very easily extended to support new features and options, due to an open and well documented API.
Webmin also happens to be a fast and easy to use tool for general UNIX system administration. This document attempts to introduce to you many of the concepts you will need to maintain a UNIX system using Webmin. While no single volume can address every aspect of UNIX system administration, a real effort has been made to provide both a solid introduction to many important tasks, and a nearly comprehensive reference to a typical UNIX server and its parts. It is my hope that with nothing more than this book, a copy of Webmin, and the documentation that accompanies your server, you will be able to configure the system to provide the most popular services, create a reasonable security policy, and manage your users and normal system maintenence tasks. Advanced topics are often covered, but I hope that it will not be at the expense of preventing you from seeing the forest for the trees.
This book is divided into chapters, with each one being devoted to a particular module or section of Webmin. Often, a short introductory section is included at the start of a chapter, that explains the purpose and design of the module and also the function of the underlying software package that is configured by the module. Also, in most cases, one or more tutorials is provided at the end of a chapter to introduce the user to some common functions of the software and how to perform those functions with the Webmin interface.
Type faces have been chosen to indicate the purpose of a word or value. The following type faces have been used in the described manner. Note that some type faces are used for multiple purposes, but context will generally clarify the intention.
Type faces
Indicates an emphasized word or concept. Also used to indicate the first use of a term in a given context.
Used to specify a module name, or an individual option within a module. The full path to a given module will be represented by separating each level in the hierarchy seperated by colons in a bold face. For example, the Squid Access Controls module, located under the Servers tab, can be specified with Servers:Squid Proxy Server:Access Control. This form will be used throughout the book.
Indicates an option value, or a directive within a text configuration file. This type face is also used for filenames and directory pathnames, as well as example input on the command line. When text console examples are used, they will also be in this font, and set off from the rest of the text on the page.
When an item is of particular interest, or is of importance for security or compatibility reasons, it will be set off from the rest of the text. A small icon will indicate the type of information and why it has been separated from the normal text. Those icons are used as follows.
![]() | Note |
|---|---|
This is a note, used to indicate some item of interest or a reference to additional documentation on a subject. Notes may be informational, anecdotal, or referential. I.e. they might make a suggestion, tell a story, or refer you to more extensive documentation on the subject. | |
![]() | Caution |
|---|---|
This is a warning, used to denote important security information or stability, compatibility, or other information on options that could lead to improper functioning of your server if configured incorrectly. Hopefully, the hammer will remind you that something could get broken if care is not taken. | |
![]() | Tip |
|---|---|
This indicates a helpful tip. Usually a short recommendation for how to best use a feature or option to make your system easier to administer. | |
While it is probably clear by now that the author of this book is a big fan of Webmin, it is worthwhile to discuss who else Webmin is good for, and why. Webmin is unique in the UNIX world, in that it provides a one-to-one graphical interface to nearly every service and action needed to maintain a UNIX system. It is universally accessible, because it only requires a web browser. It can potentially be accessed from anywhere in the world via a network connection. It is simple, concise, and consistent in its presentation across a wide array of differing services, functions, and operating systems. It is predictable, in that it does not modify files unnecessarily or in incompatible ways. Configuration with Webmin does not preclude configuration via other tools, or via the command line. Equally importantly, Webmin will not damage files if it doesn't understand a particular option or directive in your existing configuration. If Webmin does not understand a portion of your configuration, it will simply ignore it, and leave it untouched in the configuration file. Webmin is also accessible, in the sense that it can be used successfully from nearly any browser. Text mode browsers, small screen displays, and nearly anything else can be accommodated through the appropriate use of themes and numerous configurable display parameters.
Webmin is an excellent tool for both novice and experienced system administrators. As a tool for novices, it can provide a means of getting involved in system administration in a very visual way. All of the options available are presented in a clear and complete fashion. For new users, seeing the possibilities laid out so plainly can be a very effective teaching tool, as well as a helpful safety net to avoid many common pitfalls. It is possible to explore the possibilities of a system, without wading through obscure man pages (you only need wade through the pages in this book, which are perhaps less obscure).
For experienced admins, the advantages are less obvious but no less real. An administrator cannot possibly remember every option to every system function that he or she must configure and maintain. With Webmin, an administrator no longer needs to remember complex syntax, or the exact directive needed to accomplish some task. Using Webmin may not be as quick or flexible for some tasks and some users as the command line, and it should not be viewed as a complete replacement for study of traditional system administration tools and techniques. But it is an excellent helper for getting your job done without having to experiment with weird configuration file syntax.
I often tell people that Webmin doesn't make being a good system administrator easy, it just makes the problems more visible and the solutions more consistent. That fact will be a focal point of this book. We will cover precisely how the Webmin interface maps to the traditional configuration files that actually control your UNIX system. UNIX, like any sufficiently powerful and flexible system, is complex, and Webmin doesn't remove that complexity, though it can make the complexity easier to manage by presenting it in the form of a consistent interface.
This book is targeted at intermediate UNIX users as an introductory text to many complex topics, and as a reference guide for experienced system administrators who must maintain a wide array of services and operating systems. It can also be a valuable companion volume to a beginning UNIX text, for beginners who would like to learn the Webmin Way alongside more traditional methods and practices. There is no substitute for learning and understanding your operating system. But this book attempts to bring the two worlds together, so that time spent with a book covering traditional methods will map directly onto your Webmin experience, with the hope of making both more valuable and comprehensible.
If you have a desire to learn more about your system and Webmin, no matter your current level of knowledge, this book can be valuable to you. I make no assumptions of the level of experience of the user. I do assume a reader willing to read not just this book, and not just approach the system from the Webmin perspective. The reader who will gain the most from this book will be the one who reads the man page for a software package while working through the chapter on that subject. Links to other sources of information are often provided, as are notes to help you locate where on your system the actual configuration files are located. Finally, every single option in Webmin maps to some configuration file directive, command line option, or system variable value. Each of these directives, options, and values for the modules covered is pointed out and described. If Webmin has turned your system into a black box in your mind, this book seeks to pull the top from the box so you can look inside. There is nothing wrong with allowing Webmin to make your job easier, but ignorance of how it relates to the underlying system can only lead to confusion and problems.
Because Webmin itself predates the writing of this book by a couple of years, Jamie Cameron has a significant head start on this author. I'd love to cover every module in the core Webmin and a few of the better third party modules, but deadlines must be met. The book has to be called finished at some point, and I believe I've made a valiant first effort to document the core modules. This book covers all of the general system modules and functions, the Webmin configuration modules, and the modules for the Apache web server, the Sendmail mail server, the Postfix mail server, the WU-FTPD ftp server, the BIND domain name server, and the Squid proxy server. I believe these are the most common services being configured with Webmin, and therefore I considered them the most important to document completely and accurately for the first published edition of this book. At any rate, they are the most common source of questions on the Webmin mailing list, and thus those are the modules that are covered here.
![]() | Note |
|---|---|
Perhaps you've noticed that there are two mail servers in the above list of topics covered, Sendmail and Postfix, while all other services are covered by one module and chapter only. The reason is simple: I prefer Postfix to Sendmail. However, the last time I saw any data regarding the subject of mail server usage Sendmail was moving over 65% of the worlds email, while Postfix was merely a small but growing blip on the radar. So, while Postfix is an easier mail server to configure and maintain in most environments, and functionally equivalent to Sendmail in most ways, I felt compelled to address both. | |
Though the question is perhaps of little relevance to some readers, I've come to the conclusion that every technical book ought to be able to convincingly answer the question of why it was written. If an author can't answer that simple question it is quite likely the book should have never come to be, and given the alarming number of fat, empty books in the technical section at my local bookseller I'd guess that too few authors ever attempt to answer it. So, for the next few paragraphs I'm going to answer the question by explaining why a Webmin book, and more specifically a Webmin book written by me, should be on the bookshelves at your local bookseller and on the web for all to read.
I started writing the Webmin book just over two years ago in late 2000, for entirely selfish reasons, though reasons unrelated to making money on the book in any direct way. Some time before that in 1999 I co-founded a company to build appliance servers based on the Linux operating system and a number of other Open Source software packages. Starting Linux-based technology companies was very much the thing for nerds like me to do at the time, just as two years later it was equally popular for Linux-based technology companies to fold into bankruptcy and oblivion just as enthusiastically as they had started, if with somewhat less fanfare and revolutionary talk. The company, Swell Technology, was founded on a lot of high ideals about how a hardware vendor ought to behave towards customers and towards the Open Source community, plus a little money that I had made in the stock market before the Internet bubble burst. After all, no matter how high the ideals or how vibrant the Linux server market potential appears at the time it still takes a little money to start a company. But, unlike a lot of other Linux-based technology startups, Swell Technology still exists three years later, possibly partly because we didn't bother with venture capital or a hyped IPO as was the standard operating procedure for most Linux-based technology companies of the time.
In 1999 when we founded Swell, we focused on one small niche market and developed a web caching appliance product based on the previously mentioned Linux, Squid, and a still young but rapidly developing Webmin. The choice of Webmin was mostly an easy one, because at the time it was either Webmin or text editing of configuration files with vi or emacs. Luckily, Webmin was already an exceedingly solid piece of work with a quite wide feature set. So I built the product, packaged the product, marketed the product (with some help on all counts), and even sold a few of the product by the middle of 2000. I also wrote a lot of documentation, to the tune of a few hundred pages. First in LinuxDoc, and then in the far more capable and flexible DocBook. However, most of this documentation was mostly written for users of our products. It contained a large amount of information that would be useful to a general reader using Webmin and not just our clients, but that information was interspersed with occasional information that was only useful to a user logged into one of our servers. Thus, no one was reading it except our customers who, at the time, did not make an exceedingly large audience.
Also during this time, I was reading and answering questions on the Webmin mailing lists whenever I knew the answer. As on all technical mailing lists, there are questions that come up every few days or weeks no matter how many times they are answered. On some lists this is particularly annoying because the documentation for a project usually answers those sorts of questions in vivid detail. Perhaps there is a FAQ with the answers, or a nice man page. Webmin, however, had very little in the way of documentation. At the time, the Webmin FAQ consisted of about five questions and answers and online help only existed for a few modules (I had already written the online help for the Squid module, and still maintain those help files today). So the questioners couldn't simply be referred to the documentation, because there was none that answered their question. So, out of a profound desire to be lazy, I started writing a book. I'm sure there is an apparent contradiction in that statement to many readers, but probably not to anyone who regularly contributes to an Open Source project mailing list. Answering the same question half-heartedly several times is far more tiring than answering it once with the thoroughness it deserves.
So I set out to answer some of those questions with a thoroughness that I hoped would severely reduce the number of repetitive questions on the mailing list, as well as answer some of the questions I found my clients often asked about Webmin on our servers. According to my revision information I posted the first 0.01 draft on October 6, 2000 on a back corner of my personal website. It contained four chapters, none of which was more than ten pages. It covered Apache, Squid and most of the Webmin related configuration options. I had taken off a long weekend from Friday to Monday to write it and another couple days to figure out how to process DocBook SGML. Within three days of mentioning it on the Webmin list my book, if it could be called that in its diminutive early form, was receiving 1,000 hits and a few hundred unique visitors each day. Our company web server, where my homepage is hosted, had never seen that much traffic in its entire existence. Interesting. Free stuff draws visitors, and free, useful stuff draws a lot of visitors. This discovery was very exciting for me because, as a devout capitalist and businessman, I like to give stuff away. Or maybe I'm merely a little less than humble and enjoy knowing folks have read my book and find it useful. Either way, I enjoyed the popularity my book was gaining among Webmin users.
A lot of people seemed to like the early versions of the book, and I was enjoying writing it because it gave me a structured way to learn a lot of things that I didn't already know and reinforced things I did. Thus, the book grew whenever I had a weekend to spare and a subject that I wanted to write about. Somewhere along the way, I began to receive requests to buy the book, and as the book grew these requests came more frequently. So in a fit of brilliance unmatched by any of my previous intellectual revelations (which number in the hundreds on a good day), I decided to publish the book myself. I began the process of preparing it for printing via a print-on-demand publisher, and trying to figure out all of the complexities of transferring digital words onto paper cost-effectively and with a high quality resulting product. Luckily, this madness was interrupted by a phone call from Bill Pollock of No Starch Press, a real book publisher with a well-earned reputation for quality production, who was interested in publishing a book about Webmin. He had spoken to Jamie Cameron who referred him to me as a possible choice for doing the writing. After a brief discussion about licensing (since I insisted on being able to offer a free version on my website) we came to an agreement. Several months later by way of magic and editors and printers this book has found its way to your local bookseller with an attractive cover and in a nice binding. Or I suppose I should say I think it will find its way to your local bookseller with an attractive cover and nice binding...one can never be sure about the future. It was a brief discussion, because I've been a fan of No Starch since reading The Book of Javascript by Thau! with its brilliant cover design and very nice presentation overall. Also, the terms of the boilerplate contract were quite fair and more generous than most similar agreements from other publishers. Adding Bill's immediate agreement to allow me to publish a free version online, it was a quick and painless process. If all publishers were this nice to work with, I would probably become a full-time writer and rid myself of the complexities and uncertainties of running a business in a highly volatile market.
Now that the story of the book and how it came to be is out, I will wrap up by saying I hope you enjoy my first book and find it a valuable addition to your bookshelf. I've attempted, with possibly varying degrees of success, to strike a balance between a comprehensive reference to the options found in Webmin and a valuable learning tool for UNIX and Webmin users who may not have extensive system administration experience. More succintly, I hope this book answers your questions.
I've done my best to make this book a useful and accurate desktop reference guide for administering a UNIX system with Webmin. If you have ideas about what would make this a more useful guide in future editions, or if you find an error in the text, please feel free to contact me. Email is the preferred method of contact, at webmin-book@swelltech.com. I will maintain a list of errata online at the Book of Webmin Homepage.
This book could not have been completed without the extreme patience and helpfulness of Jamie Cameron, the author of Webmin. Not only did he go to the trouble to create Webmin to start with, but he managed to fix every bug this author could find, and explain every detail I could not figure out on my own during the course of writing the book. He also maintains a breakneck pace of development, which has only accelerated in the time that I've been using Webmin. The Webmin community could not hope for a more benevolent or productive leader.
Thanks also are due to the regulars on the Webmin users and Webmin developers mailing lists. Many patient individuals helped me learn the ropes of Webmin long ago. The fine users of Webmin have continued to provide support and assistance to me throughout the writing of this book by spotting the problems, and complaining loudly. It is surely a better book because of the criticisms of every person who sent emails detailing my failings. It could be said that this book has been continuously edited by the Webmin community from the day of its first publication on the web. Of particular note for sharing their in-depth knowledge of Webmin, Perl, and Linux systems in general, are Ryan W. Maple and Tim Niemueller.
Because Webmin would not be very useful without the many underlying system and service components which Webmin configures so effectively, the developers of those components are also owed a debt of gratitude. I've relied upon the mailing lists and the documentation of the Apache, Sendmail, Postfix, BIND, WU-FTPD, and Squid projects for timely advice and answers to questions about best practices and configuration details. Each project is large, impressive, and thoroughly useful in its own right, worthy of praise an gratitude.
Much thanks are also due to members of the docbook-apps mailing list, where all of my SGML and DocBook questions were answered. The book would not be as nice to look at or read without the guidance of the kind individuals there. In particular, Norman Walsh deserves praise for his modular DocBook stylesheets and the prompt attention to my questions regarding them, and Sebastian Rahtz is due thanks for his JadeTeX and PDFJadeTeX macro package as well as the great work he does in helping to compile the TeXLive CD, all of which were instrumental in producing the HTML, PostScript and PDF variants of the book. There seems to be a small revolution in the world of open tools for publishing, and the folks involved in making all of these technologies possible are due my highest praise and appreciation. I couldn't have prepared a book for publication without their hard work on PDFJadeTeX, Jade and OpenJade, teTeX, and probably others that I don't even realize are involved in the process. My next book will be in XML DocBook, so I'm hopeful they will still be around to help me through the process.
Finally, the screenshots within this text have been made using the Swell Technology Webmin theme. The icons in this theme were created primarily by me, but with early assistance and guidance by Youngjin Hahn (aka Artwiz), a very talented young artist who is perhaps best known for his excellent icon and theme work at the original Themes.org (unfortunately the new themes.org at Freshmeat.net lacks any of the design elements of the original). Other design elements, including the theme colors and titles, were created with assistance from Charity Baessell, the webmistress and graphic designer at Swell Technology and of the PenguinFeet project. Thanks also go to Jamie for making Webmin themeable to start with. Not to say the original theme was ugly or anything, but...well, I'm just happy Webmin is themeable.
![]() | Note |
|---|---|
The latest version of the Swell Technology Webmin theme can be downloaded from the Open Source Projects page at swelltech.com. | |