GNU/Linux >> Linux Esercitazione >  >> Linux

Laboratorio Linux:SysAdmin 101

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:
  1. Mostra i file in qualsiasi directory
  2. Crea un file vuoto chiamato test.txt
  3. Mostra il contenuto di /etc/fstab e descrivi cosa stai vedendo
  4. Rinomina test.txt in un altrotest.txt
  5. Crea una nuova cartella chiamata myfolder
  6. 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:
  1. Trova un file chiamato sysctl.conf dalla cartella /etc
  2. Mostra il contenuto di un file una pagina alla volta
  3. Mostra quanto spazio occupa la cartella /var sull'unità
  4. Spiega cos'è un collegamento simbolico
  5. 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:
  1. Scrivi le parole "hello world" sull'output standard.
  2. 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
  • 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

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

Pratico:
  1. Mostra il numero di parole in /var/log/kern.log usando una pipe
  2. Metti l'output di ls /var in un file di testo chiamato ls.txt
  3. 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:
  1. Guarda la password, i file shadow e di gruppo
  2. Prova a modificare il file shadow come un utente normale
  3. Scopri perché non puoi modificarlo.
  4. Cambia la tua password.
  5. 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:
  1. Crea un file chiamato test.sh con il tocco.
  2. Cambia i permessi a utente=lettura, scrittura, esecuzione, gruppo e altri, nessun permesso
  3. Cambia la proprietà invece di te stesso per essere root. Prova ad accedere al file ora.
  4. Ripristina la proprietà e modifica il file (nano test.sh)
    1. Aggiungi #!/bin/bash alla prima riga
    2. e fai eco ciao mondo alla seconda riga
  5. Esegui lo script – ./test.sh
  6. 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:
  1. Visualizza la tabella delle partizioni corrente.
  2. 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)
    • 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



Linux
  1. Autorizzazioni Linux 101

  2. Che cos'è un utente Linux?

  3. Come modificare un nome utente in Linux

  4. I miei 5 strumenti di amministrazione di sistema Linux preferiti

  5. Servizio del sistema operativo Linux "winbind"

Su Command in Linux (Cambia utente)

Comando ID in Linux

Comando Usermod in Linux

su Comando in Linux

Introduzione di un amministratore di sistema Linux a cgroups

Come cambiare utente su Linux