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.