Linux system administration
Linux system administration is the process of configuring and maintaining a Linux system, which can be a server, a desktop, a laptop, a mobile device, or any other device that runs Linux. Linux system administration involves various tasks and tools, such as:
* Adding and removing users and groups: Linux system administration requires managing the users and groups on the system, which are the entities that can access and use the system resources, such as files, directories, processes, and devices. Users and groups have unique names and IDs, and they can belong to one or more groups. Users and groups also have passwords, home directories, shells, and other attributes. Linux system administration involves adding and removing users and groups, changing their attributes, assigning them permissions and quotas, and monitoring their activities.
* Setting up permissions and quotas: In Linux system administration, configuring permissions and quotas is essential. These permissions and quotas dictate the actions users and groups can perform on the system. Permissions define access rights to files and directories, encompassing actions like read, write, and execute. Quotas, on the other hand, impose limitations on users and groups concerning disk space usage and the number of files and directories. Linux system administration involves the manipulation of permissions and quotas, employing commands and tools such as chmod, chown, chgrp, umask, setfacl, getfacl, edquota, repquota, quota, and quotacheck.
* Installing and updating software packages: In Linux system administration, a fundamental task is the installation and update of software packages. These packages, comprised of files and programs, deliver a multitude of functionalities and services, including web servers, databases, editors, and more. Installation and updates can be sourced from diverse outlets such as online repositories, local files, or removable media. Linux system administration encompasses the installation and updating of software packages, facilitated by commands and tools like apt, apt-get, apt-cache, dpkg, yum, rpm, dnf, zypper, pacman, snap, flatpak, and others.
* Configuring services and daemons: Administering a Linux system involves the setup and management of services and daemons. These are background programs responsible for executing diverse tasks like networking, printing, logging, and more. System administrators wield control over these services and daemons, being able to initiate, halt, restart, enable, disable, and monitor them. This control is exercised through various commands and tools, including but not limited to: service, systemctl, init, runlevel, chkconfig, update-rc.d, ps, top, htop, and others.
* Monitoring system performance and logs: Administering a Linux system involves overseeing both system performance and logs, crucial indicators and records reflecting the system's activity and status. These encompass metrics like CPU usage, memory allocation, disk operations, network activity, processes, errors, warnings, and more. Vigilant monitoring of these elements empowers the system administrator to promptly detect and address system issues, optimize resource utilization, and enhance overall system security. Various commands and tools facilitate this monitoring process, including but not limited to: free, vmstat, iostat, sar, mpstat, pidstat, dstat, sysstat, top, htop, glances, nmon, lsof, netstat, ss, tcpdump, wireshark, ping, traceroute, dig, nslookup, curl, wget, telnet, nc, journalctl, dmesg, syslog, logrotate, and others.
* Backing up and restoring data: Effective Linux system administration involves the crucial tasks of backing up and restoring data, encompassing files and directories housing information and content such as documents, images, videos, databases, and more. By executing backup and restoration processes, the system administrator can safeguard against and recover from potential data loss, corruption, or damage resulting from various factors like hardware failure, human error, malware attacks, and others. An array of commands and tools, including but not limited to cp, mv, rsync, tar, gzip, bzip2, xz, dd, cpio, dump, restore, rdiff-backup, duplicity, rsnapshot, bacula, amanda, and others, facilitate these essential data management functions.
* Securing the system: Administering a Linux system necessitates fortifying the system, a process focused on shielding it from unauthorized access, use, modification, or destruction posed by threats such as hackers, malware, and viruses. This entails implementing various measures and practices, including the establishment of robust passwords, encryption, firewall configurations, antivirus solutions, authentication mechanisms, authorization controls, auditing protocols, system hardening, and more. To carry out these security measures, system administrators utilize commands and tools like passwd, chage, ssh, ssh-keygen, ssh-copy-id, openssl, gpg, iptables, ufw, nftables, firewalld, clamav, rkhunter, chroot, sudo, pam, selinux, apparmor, auditd, lynis, and others.
For those looking to dive deeper into Linux System administration, here are some recommended materials: