====== Administering Linux servers skills ====== ### Basic System Administration 1. **Installation and Configuration** - Installing Linux server distributions (e.g., Ubuntu Server, CentOS, Debian). - Initial system configuration: setting hostname, network settings, and updating the system. 2. **User and Group Management** - Commands: `useradd`, `usermod`, `userdel`, `groupadd`, `passwd` - Managing user permissions and groups. - Using `sudo` to delegate administrative rights. 3. **File System Management** - Mounting and unmounting file systems. - Commands: `mount`, `umount`, `df`, `du` - Managing file systems with tools like `mkfs`, `fsck`, `resize2fs`, `xfs_growfs`. 4. **Package Management** - Using package managers to install, update, and remove software. - Debian/Ubuntu: `apt`, `dpkg` - RedHat/CentOS: `yum`, `dnf`, `rpm` ### Networking 1. **Network Configuration** - Configuring network interfaces: `ifconfig`, `ip`, `nmcli` - Managing network services: DHCP, DNS, NTP 2. **Firewall Configuration** - Using `iptables`, `firewalld`, or `ufw` to configure firewall rules. - Ensuring security by restricting access to services. 3. **SSH and Remote Access** - Configuring and securing SSH: `/etc/ssh/sshd_config` - Setting up SSH keys for password-less login. ### Service and Process Management 1. **Systemd and Init Systems** - Managing services with `systemctl` (start, stop, enable, disable). - Creating and managing custom service units. 2. **Process Monitoring** - Commands: `ps`, `top`, `htop`, `kill`, `nice`, `renice` - Understanding and managing system load. ### Security 1. **User and Group Security** - Implementing best practices for user account security. - Configuring `sudo` for administrative tasks. 2. **Security Policies** - Implementing SELinux or AppArmor for mandatory access control. - Regularly updating the system and installed packages to patch vulnerabilities. 3. **Auditing and Logging** - Configuring and managing system logs: `rsyslog`, `journalctl` - Using tools like `auditd` for auditing system activities. ### Backup and Recovery 1. **Backup Solutions** - Implementing backup strategies using tools like `rsync`, `tar`, `dd`, `Bacula`, `Amanda`. 2. **Disaster Recovery** - Creating and restoring from backups. - Understanding and implementing RAID configurations for data redundancy. ### Performance Monitoring and Tuning 1. **Monitoring Tools** - Using tools like `top`, `htop`, `iostat`, `vmstat`, `netstat`, `dstat`, `sar` to monitor system performance. - Implementing monitoring solutions like Nagios, Zabbix, Prometheus. 2. **Performance Tuning** - Tuning system parameters for optimal performance: `sysctl`, kernel tuning. - Managing resource limits with `ulimit`. ### Automation and Scripting 1. **Shell Scripting** - Writing and debugging shell scripts to automate routine tasks. - Understanding `bash`, `sh`, and other shell environments. 2. **Configuration Management** - Using tools like Ansible, Puppet, Chef, or SaltStack for automating system configuration and management. ### Database Management 1. **Database Servers** - Installing and configuring database servers: MySQL, PostgreSQL, MongoDB. - Performing routine database administration tasks: backups, restores, user management. ### Web Server Administration 1. **Web Servers** - Installing, configuring, and managing web servers: Apache, Nginx. - Securing web servers and managing SSL/TLS certificates. ### Cloud and Virtualization 1. **Virtualization** - Setting up and managing virtual machines with KVM, VirtualBox, VMware. - Using containerization technologies like Docker. 2. **Cloud Platforms** - Understanding and managing instances on cloud platforms like AWS, Google Cloud, Azure. - Using infrastructure-as-code tools like Terraform.