Linux server vs desktop
Both Linux servers and desktops run on the same kernel, shells, etc... Desktops provide graphical desktop user interface for ease of use. Servers can offer this but are generally used through the terminal (or more access) and primarily operate without user interaction.
Services are server programs that provide shared resources to one or more clients, typically available all the time.
Launching Services
Background processes that run constantly and listen for requests Spawned processes that are started by a "parent" program or process listening for requests
Daemons
These are the constantly running background processes. Their program names typically end with the letter d to indicate they're a daemon process.
Examples:
- mysqld is the mySQL daemon
- sshd is the ssh daemon
- crond is the job scheduler for cron job
- inetd is the internet daemon, which is a super-server: it listens for different requests and launches the service relevant to the request.
Network protocols and ports to route requests to Daemons
| Port | Protocol | Description |
|---|---|---|
| 20, 21 | FTP | File Transfer Protocol |
| 22 | SSH | Secure Shell protocol for sending encrypted data to a server |
| 23 | Telnet | Unsecure protocol to interacting with a server shell |
| 25 | SMTP | Simple Mail Transport Protocol |
| 53 | DNS | Domain Na ming System to match IP addresses to computer names |
| 67 | DHCP | Dynamic Host Configuration Protocol |
| 80 | HTTP | Hypertext Transfer Protocol |
| 109, 110 | POP | Post Office Protocol |
| 137, 138 | SMB | Server Message Block protocol for Microsoft servers to share files and printers |
| 143, 220 | IMAP | Internet Message Access Protocol provides advanced mailbox services for clients |
| 389 | LDAP | Lightweight Directory Access Protocol provides access to directory services to authenticate users, workstations and other network devices |
| 443 | HTTPS | A secure, encrypted connection to web servers |
| 2049 | NFS | Network File System provides file sharing between Unix and Linux systems |
All ports for Linux services are defined in /etc/services

Basic Linux services
Most popular Linux services:
- Web services
- Database services
- Email services
Web servers
Main two are:
-
Apache Server
- Modular: every feature is a plug-in Modular
- Main configuration file is httpd.conf, typically found at /etc/httpd
- Additional config files typically found at /etc/httpd/conf.d
- Default page to serve is DocumentRoot found at /var/www/html
-
nginX Server
- More modern than Apache, released in 2004
- Adds native web proxy, mail proxy, web page cache, and load-balancing
- Smaller memory footprint than Apache
- Can handle 10,000 simultaneous client connections
- Main configuration file is nginx.conf typically found at /etc/nginx/
- Additional config files typically found at /etc/nginx/conf.d
- DocumentRoot is the default folder for web pages & apps, found at /var/www/nginx-default
-
lighthttpd Package
- Lightweight alternative that uses little memory and computer
- Has an included database
Database servers
Main options:
- PostgreSQL
- Started as a university project and went open source in 1996.
- Follows standard ACID (atomicity, consistency, isolation and durability) industry guidelines
- mySQL
- Started as a simple, fast database
- Commonly used in the LAMP platform: Linux, Apache, MySQL, PHP)
- Owned by Oracle; open source replica is MariaDB
- MongoDB
- A NoSQL system
- Stores data as documents with JSON elements
Mail servers
Most Linux distros come with some type of email server package, which are made up of small programs:
- MTA, or Mail Transfer Agent
- MDA, or Mail Delivery System
- MUA, or Mail User Agent (these typically run on the client side)
- Evolution
- K-Mail
Mail Transfer Agent
- Handles both incoming and outgoing messages on the server
- Determines the destination host of the recipient addresses
- If host is a remote mail server, MTA connects with that mail server to communicate
- Main MTA packages:
- sendmail
- Very complex to configure
- Default config file is at /etc/mail/sendmail.cf
- Recommended not to use that file but instead make changes at /etc/mail/sendmail.mc
- Postfix
- Exim
- Monolithic like sendmail
- Config files found at /etc/exim.cf
- sendmail
Mail Delivery Agent
- Receives messages for local users from the MTA and determines how to deliver them
- Two common MDA packages:
- Binmail
- Most used
- Location is the name: /bin/mail
- By default can read messages stored in /var/spool/mail/
- Can be pointed to an alternative mailbox
- Procmail
- Many distros install it by default
- Takes advantage of user-configured recipies allowing user to direct how server processes incoming mail
- User can create a personal .procmailrc file in the $HOME directory to direct messages based on regular expressions to control where messages are sent, i.e.: separate mailbox files, forwarded to another mailbox or to /dev/null to automatically trash messages.
- Binmail
Mail User Agent
Most remote mail Linux clients use IMAP4 to communicate with a mail server. Dovecot is a popular IMAP4 server package. - Main configuration files are found at /etc/dovecot/dovecot.conf - Additional config is found in the /etc/dovecot/conf.d folder
File Servers
Linux typically supports NFS (Network File System) or SMB (Samba) to serve and access shared files. Note: gvfs-nfs is a lighter, more temporary method and runs in userspace so it's not as quick or persistent as NFS which runs at the kernel level.
- The NFS protocol uses the nfs-utils package.
- SMB uses the samba package on the server and a few additional supporting packages for clients.
Print Servers
CUPS, or Common Unix Printing System is the standard Linux print sharing package. It uses the IPP (Internet Printing Protocol). Samba also supports printer sharing on Microsoft networks.
Network Resource Servers
IP addresses
- DHCP or Dynamic Host Configuration Protocol assigns unique IP addresses for every device on the network that requests one. A central DHCP server maintains this data to ensure there are no IP address conflicts.
-
DHCPd is the most popular DHCP server package. Clients need a DHCP package to request IP addresses:
- dhclient Most Debian and RedHat distros use this
- dhcpcd
- pump
-
Configuration of DHCP on the client is typically found at /etc/dhcp/dhcp.conf although on my personal system it's found at /etc/dhcpcd.conf
-