Sommario
Vuoi essere un amministratore di sistemi Linux?
Di tanto in tanto, mi viene chiesto di fornire un po' di formazione per gli amministratori di sistema in erba o per le persone sul percorso professionale per diventare un amministratore di sistema Linux qualificato o un ingegnere DevOps (o almeno la parte Ops!). Questa presentazione può essere utilizzato da solo, ma è destinato a essere somministrato in un ambiente di tipo aula. Include una serie di aree principali che sono importanti comandi da conoscere e modi per aggirare un sistema Linux. Ogni sezione è seguita da una serie di sessioni pratiche in modo che la tua classe possa provarla in prima persona.
Il miglior consiglio per il tutor :Questo ha funzionato bene per me con classi più piccole (2-3 persone). Sono entrato in una VM Ubuntu Server e ho eseguito tmux su di essa. Ho quindi chiesto a ciascuno degli studenti di entrare (come lo stesso utente studente) ed eseguire "tmux attach". In questo modo hanno condiviso tutti lo stesso terminale e il tutor può anche interagire/vedere i loro terminali mentre esegue le diapositive dal proprio laptop. Presento le diapositive su un proiettore o una TV.
Lo schema del corso include:
- Cos'è Linux, inc. storia molto breve.
- Distribuzioni.
- La shell (di nuovo Bourne).
- Il filesystem UNIX.
- Comandi/strumenti basati su file
- Comandi integrati di Bash
- Reindirizzamento e tubazioni
- Gestione dell'account utente
- Autorizzazioni
- Strumenti disco
- Processi
- Rete
- Installazione software/Pacchetti
- Log/Gestione log
NOTA:la presentazione seguente è progettata per essere presentata da un relatore esperto.
Impossibile avviare questa presentazione. Prova ad aggiornare la pagina o a visualizzarla in un altro browser.
Linux SysAdmin 101
Una guida per principianti all'amministrazione di un server Linux
Per chi è questa guida?
- Queste diapositive devono essere accompagnate da un relatore esperto.
- Chiunque sia interessato a una carriera come professionista Linux o Unix
- Avanzare le tue competenze Linux da utente desktop a utente avanzato
- Persone che vogliono lavorare di più dalla riga di comando
- Impara comandi di cui potresti non essere a conoscenza
Cos'è Linux?
Per una rapida panoramica di Linux stesso e della sua cronologia, dai un'occhiata a:
https://www.linuxnewbieguide.org
In breve, tuttavia, Linux è un sistema operativo basato su UNIX costituito dai seguenti componenti principali:
- Il kernel
- The Shell (bash nel caso di questo tutorial)
- Il set di strumenti GNU di base
- E tutte le altre app, Firefox, ViM, ecc.
Distribuzioni
- Esistono diverse versioni di Linux.
- La maggior parte di ciò differisce dal modo in cui il sistema confeziona il software.
- La configurazione tra le distribuzioni può essere leggermente diversa.
- Le distribuzioni più conosciute sono:
- Debian e Ubuntu
- Red Hat, CentOS e Fedora
- Altre distribuzioni come Linux Mint, openSuSE ed elementari sono spesso basate sulle piattaforme di cui sopra.
Il guscio (di nuovo Bourne)
- Prende i comandi dall'utente
- Può essere utilizzato come linguaggio di scripting (come un file batch)
- Può usare espressioni regolari (es. A* corrisponde a qualsiasi cosa che inizi con A).
- Le espressioni regolari sono trattate in sessioni più avanzate.
Il filesystem
Ecco un esempio. Tutto inizia alla radice ( / ):
/ |-- bin | |-- bash | |-- touch |-- etc | |-- service.conf | `-- networking | |-- eth0.conf | `-- eth1.conf |-- home |-- var
Strumenti per i file
- cd (cambia directory, es. cd /home/ajross, cd ../.. )
- pwd (stampa directory di lavoro)
- ls (directory elenco, ad es. ls -l /home/ajross/Desktop)
- tocca (crea un file vuoto)
- tar (comprime un file o una directory, ad es. tar cvfpz file.tar *.txt)
- cat (mostra il contenuto di un file)
- meno e più (mostra un file pagina per pagina)
- cp (copia, ad es. file cp /home/ajross )
- mv (sposta o rinomina)
- mkdir (crea una directory)
- rm (rimuove uno o più file)
- rmdir (rimuove una directory vuota)
Pratico:
- Mostra i file in qualsiasi directory
- Crea un file vuoto chiamato test.txt
- Mostra il contenuto di /etc/fstab e descrivi cosa stai vedendo
- Rinomina test.txt in un altrotest.txt
- Crea una nuova cartella chiamata myfolder
- Sposta un altrotest.txt nella mia cartella
Strumenti file (cont.)
- ln – collegamento simbolico (es. ln -s /sourcefile /destination-alias-file)
- quale (quale versione di un comando verrà eseguita), ad esempio quale -a vim
- whereis (basato sul percorso, fornisce la posizione di un file – es. whereis vim).
- whatis, file (cosa fa un comando, file – cosa fa il file)
- trova (es. trova . -user ajross –max-depth=2)
- testa, coda (mostra la parte superiore e inferiore di un file)
- unisciti, dividi (es. unisciti a.txt b.txt)
- ordina (es. du -h /home | ordina -h)
- du -h (mostra l'utilizzo della dimensione del disco, ad esempio:du -h /home –max-depth=2)
- df -h (mostra quanto spazio è libero su un file system)
- uniq (es:uniq files.txt o cat /var/log/error.log | uniq)
- wc, nl (conteggio parole, es:cat /var/log/error.log | wc -l , nl foo.txt)
- grep (cerca contenuto all'interno di un file, ad esempio:grep -i foo /var/log/error.log)
- lsof (elenca i file aperti sul sistema, ad esempio lsof -n).
Pratico:
- Trova un file chiamato sysctl.conf dalla cartella /etc
- Mostra il contenuto di un file una pagina alla volta
- Mostra quanto spazio occupa la cartella /var sull'unità
- Spiega cos'è un collegamento simbolico
- Cerca nel contenuto di /var/log/kern.log la parola usb
Incorporati di Bash
- alias
- set / env (eco $PATH)
- Esci/Esci
- eco
- riavvio/arresto/arresto/spegnimento
- cronologia (mostra gli ultimi comandi eseguiti)
- se, altrimenti, mentre ecc..
- tra gli altri...
Pratico:
- Scrivi le parole "hello world" sull'output standard.
- Mostra un elenco degli ultimi comandi eseguiti.
Reindirizzamento e tubazioni
- Standard produzione (stdout – 1):
- echo ciao> miofile.txt
- eco lì>> miofile.txt
- Standard Inserimento (stdin):
- cat
un altrofile.txt
- cat
- Standard Errore (stderr – 2):
- se esegui ls /crapola, ricevi un errore (la directory non esiste)
- ls /crapola 2> out.txt (reindirizza l'errore a un file chiamato out.txt)
- Se si desidera uscita standard e errore standard:uscite stderr (2) combinate con (e &) stdout (1).
- ls /crapola> out.txt 2>&1
- se esegui ls /crapola, ricevi un errore (la directory non esiste)
Reindirizzamento e tubazioni (cont.)
- Tubo
- Inserisce l'output di un comando nell'input di un altro. Molto utile.
- ls -l /ecc | meno
- Tee ti permette di mettere l'output in un file e lo schermo
- ls -l | tee out.txt
- Inserisce l'output di un comando nell'input di un altro. Molto utile.
Pratico:
- Mostra il numero di parole in /var/log/kern.log usando una pipe
- Metti l'output di ls /var in un file di testo chiamato ls.txt
- Aggiungi l'output di ls /var/log nello stesso file (cioè, non eliminare le cose che sono già lì).
Gestione utenti
- L'account 'root' è il superutente del sistema.
- Molti file di configurazione e di sistema possono essere modificati/visualizzati solo da root.
- Le autorizzazioni sono la chiave per proteggere i file
- Determinano quali utenti (e gruppi di utenti) possono lavorare sui file.
- Gli utenti locali sono archiviati in /etc/passwd, con il file delle password in /etc/shadow
- I gruppi sono archiviati in /etc/groups
- Si consiglia di accedere a un server come utente normale, quindi eseguire l'escalation a root con sudo (o su).
- passwd (per modificare una password)
- aggiungi utente
- utentedel
Pratico:
- Guarda la password, i file shadow e di gruppo
- Prova a modificare il file shadow come un utente normale
- Scopri perché non puoi modificarlo.
- Cambia la tua password.
- Crea un utente e rimuovi un utente.
Autorizzazioni
- Spiega le autorizzazioni:utenti, gruppi, altri, attributi
- chmod (modifica i permessi del file, es. chmod u+x file.sh)
- chown (modifica la proprietà di un file, es:chown user file.sh)
- chgrp (modifica la proprietà del gruppo di un file, ad esempio:chgrp nomegruppo file.sh)
- umask (autorizzazioni predefinite per una cartella)
- setuid (radice) – usa con cura! chmod u+s o g+s file
- immutabile / appiccicoso (chmod +i, chmod +t)
Pratico:
- Crea un file chiamato test.sh con il tocco.
- Cambia i permessi a utente=lettura, scrittura, esecuzione, gruppo e altri, nessun permesso
- Cambia la proprietà invece di te stesso per essere root. Prova ad accedere al file ora.
- Ripristina la proprietà e modifica il file (nano test.sh)
- Aggiungi #!/bin/bash alla prima riga
- e fai eco ciao mondo alla seconda riga
- Esegui lo script – ./test.sh
- Rimuovi il bit eseguibile e prova a eseguire di nuovo lo script.
Strumenti disco
- e2fsck (controllo del file system)
- fdisk / cfdisk / parted (modifica della partizione)
- mkfs (crea un nuovo filesystem)
- lvm, lvdisplay, lvextend.. ecc
- Elenco di montaggio del file system:/etc/fstab
Pratico:
- Visualizza la tabella delle partizioni corrente.
- Visualizza i filesystem che verranno montati da Linux
Processi
- I processi sono solo app in esecuzione. Linux (come MacOS e Windows) è un sistema operativo multi-thread
- Su un singolo sistema CPU, tutte le app sono generalmente "inattiva" a parte un'app "in esecuzione" a intervalli di tempo.
- I processi possono essere in background o in primo piano.
- Puoi inviare segnali a processi come SIGHUP, SIGKILL e così via
- Per vedere i processi, usa il comando ps (es:ps aux, ps auxfwww per un albero).
- Puoi vedere il proprietario, lo stato, la risorsa e altre cose usando ps
- Puoi vedere i processi che richiedono più CPU utilizzando il comando 'top'. Iostat, vmstat mostra iops e virt mem.
- Puoi uccidere i processi con kill, pkill (es:kill -9 12345, pkill apache2)
Processi (cont.)
- La gentilezza del processo altera la priorità che un processo ha in generale sul sistema (ad esempio, renice, nice)
- Il filesystem /proc contiene tutte le informazioni su ogni processo in un formato non elaborato (es. cat /proc/12345/status)
- Usa Ctrl+Z per interrompere un processo, bg in background, fg in primo piano, "comando &" sfondi automatici
- jobs mostra i tuoi attuali processi in background. fg %4 metterà in primo piano il 4° comando in background.
- I processi che vengono eseguiti in modo permanente sono chiamati servizi o daemon
- Per avviare un servizio, puoi utilizzare il comando 'service' o 'systemctl'. I vecchi sistemi usano /etc/init.d.
Pratico:
- Avvia un processo, ad esempio cat (che non farà nulla).
- In background il processo.
- Trova il PID per il processo. NB:Sii intelligente e filtra l'output di ps cercando solo cat!
- Chiudi il processo utilizzando il PID che hai.
- Riavvia/arresta/avvia un servizio, ad esempio rsyslogd.
Strumenti di rete e di rete
- ifconfig / ip
- /etc/sysconfig/network (redhat) , /etc/networking (debian)
- ifconfig / ip
- percorso/percorso ip
- arp, ping, traceroute, netstat
- dhclient, dhcpd, bind
- /etc/resolv.conf
- /etc/hosts
- ssh, scp, sftp, rsync
- nfs, samba (SMB/CIFS)
- Apache, Python SimpleHTTPServer
Pratico:
- Mostra gli indirizzi IP della macchina
- Spiega cos'è l'interfaccia lo
- Dì come ripartiresti
Pacchetti software, installazione
- L'installazione del software in Linux è in realtà piuttosto semplice. Ancora più facile che in Windows.
- Red Hat e Debian mantengono entrambi grandi "repository" di software.
- Le distribuzioni basate su Debian usano i file deb (ma usa apt per installarli)
- Le distribuzioni basate su Red Hat usano rpm (ma sono installate da yum o dnf)
- .tar/.tar.gz può contenere qualsiasi file, ma spesso può contenere codice sorgente, che deve essere compilato.
- ./configura; rendere; fai installare
Pratico:
- Installa il pacchetto cowsay con apt
- Esegui Cowsay
Registri
- /var/log
- Alcune applicazioni dannose registrano dove vogliono. Grr, ad esempio:/opt/app/log
- syslog/rsyslog
- dmesg/kern.log
- auth.log, lastlog, last, w
Pratico:
- Grep auth.log per una frase, ad esempio login
- Scopri in quante righe esiste la frase nel file
- Analizza il file una riga alla volta per vedere i problemi
- Fai lo stesso per i messaggi/syslog