Webmin is a program that simplifies the process of managing a Linux or Unix system. Traditionally, you have needed to manually edit configuration files and run commands to create accounts, set up Web servers, or manage email forwarding. Webmin now lets you perform these tasks through an easy-to-use Web interface, and automatically updates all of the required configuration files for you. This makes the job of administering your system much easier.
This article is excerpted from the newly published book Managing Linux Systems with Webmin.
Some of the things that you can do with Webmin include:
- Creating, editing, and deleting Unix login accounts on your system
- Exporting files and directories to other systems with the NFS protocol
- Setting up disk quotas to control how much space users can take up with their files
- Installing, viewing, and removing software packages in RPM and other formats
- Changing your system's IP address, DNS settings, and routing configuration
- Setting up a firewall to protect your computer or give hosts on an internal LAN access to the Internet
- Creating and configuring virtual Web sites for the Apache Web server
- Managing databases, tables, and fields in a MySQL or PostgreSQL database server
- Sharing files with Windows systems by configuring Samba
These are just a few of the available functions. Webmin lets you configure almost all of the common services and popular servers on Unix systems using a simple Web interface. It protects you from the syntax errors and other mistakes that are often made when editing configuration files directly, and warns you before potentially dangerous actions.
Because Webmin is accessed though a Web browser, you can log in to it from any system that is connected to yours through a network. There is absolutely no difference between running it locally and running it remotely, and it is much easier to use over the network than other graphical configuration programs.
Webmin has what is known as a modular design. This means that each of its functions is contained in a module that can generally be installed or removed independently from the rest of the program. Each module is responsible for managing some service or server, such as Unix users, the Apache Web server, or software packages.
If you have been manually configuring your system up till now, any existing settings will be recognized by Webmin. It always reads the standard configuration files on your system and updates them directly, instead of using its own separate database. This means that you can freely mix Webmin, manual configuration, and other programs or scripts that work in the same way.
Even though the book from which this article is excerpted is written for Linux users, Webmin can be used on many other flavors of Unix as well, such as Solaris, FreeBSD, and HP/UX. One of its biggest strengths is its understanding of the differences between all these operating systems and the way it adjusts its user interface and behavior to fit your OS. This means that it can often hide the underlying differences between each Unix variant and present a similar or identical interface no matter which one you are using.
Webmin on its own is not particularly useful though -- it is only a configuration tool, so you must have programs installed for it to configure. For example, the Apache module requires that the actual Apache Web server be installed. Fortunately, all of the services and servers that Webmin manages are either included with most Linux distributions as standard, or can be freely downloaded and installed.
Who should use Webmin?
Webmin was written for use by people who have some Linux experience but are not familiar with the intricacies of system administration. Even though it makes the process of creating Unix users or managing the Squid proxy server easy, you must first have some idea of what a Unix account is and what Squid does. The average Webmin user is probably someone running it on their Linux system at home or on a company network.
The program assumes that you are familiar with basic TCP/IP networking concepts, such as IP addresses, DNS servers, and hostnames. It also assumes that the user understands the layout of the Unix filesystem, what users and groups are, and where user files are located. If you use Webmin to manage a server like Apache or Sendmail, you should first have an idea of what they can do and what kind of configuration you want completed.
Webmin itself runs with full Unix root privileges, which means that it can edit any file and run any command on your system. This means that it is quite possible to delete all of the files on your system or make it un-bootable if you make a mistake when using the program, especially if you are configuring something that you don't understand. Even though Webmin will usually warn you before performing some potentially dangerous action, there is still plenty of scope for causing damage.
Even though it can be used on a system with no connection to the Internet, Webmin does benefit if your Linux system is on a network. It can download new software packages, Perl modules, or even new versions of Webmin for you, if connected. A permanent high-speed connection is best, but even a dial-up connection is good enough for most purposes.
Because Webmin runs with root privileges, you must be able to log in to your system as root to install and start it. This means that it cannot be used on a system on which you have only a normal Unix account, such as a virtual Web server that is shared with other people. You might, however, be able to get your system administrator to install and configure it for you.
If you are already an experienced Unix system administrator, Webmin may not feel like the tool for you because using it is generally slower than directly editing configuration files and running commands. However, even the experts can benefit from its automatic syntax checking and the actions that it can perform automatically.
It is also possible to give different people different levels of access to Webmin, so that an experienced administrator can use it to safely delegate responsibility to less-skilled subordinates. For example, you might want someone to be only able to manage the BIND DNS server and nothing else, while giving yourself full access to the system and all of Webmin's functions.
How and why was it developed?
I started writing Webmin when I was the administrator for a system running a DNS server and was spending a lot of time updating the server's configuration files to add new host records requested by users. Giving them the root password was not an option -- they did not have the experience to properly edit the zone files and re-start the server. The solution was a simple Web interface that would display existing DNS records and allow them to be edited, created, and deleted. Users could then safely be given access to this interface to make the changes that they needed.
DNS management was just the start though. Once I saw the possibilities for simplifying the configuration of a Unix system though a Web interface, I started adding other features to the program and putting them into modules. Next came modules for Unix users, Samba, mounting filesystems, NFS, and cron jobs. I thought up the name Webmin, made it available for anyone to download, and announced it on a few mailing lists. The initial feedback was good, so I kept on writing.
Over the years, the program has gone through three different user interfaces, grown to 83 modules, added support for non-English languages, provided advanced access control, included lots more operating systems, and offered many other features. Many users have made contributions of code patches, modules, translations, and suggestions. In addition to the standard modules, over 100 have been written by other people and are available to be added to Webmin on your system once you have installed the program.