LINUX-UBUNTU - ISIS Facchinetti 2014-2018
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Note di utilizzo del sistema operativo Linux-Ubuntu 4 Linux............................................................................................................................................................................ 4 Kernel...................................................................................................................................................................... 5 Distribuzioni................................................................................................................................................................. 6 Organizzazione del sistema – Il File System............................................................................................................... 7 / - root...................................................................................................................................................................... 8 /bin......................................................................................................................................................................... 9 home....................................................................................................................................................................... 9 usr........................................................................................................................................................................... 9 /etc.......................................................................................................................................................................... 9 /lib........................................................................................................................................................................... 9 Device......................................................................................................................................................................... 9 /cdrom................................................................................................................................................................... 10 /dev....................................................................................................................................................................... 10 Organizzazione degli utenti....................................................................................................................................... 10 Superutenti............................................................................................................................................................ 10 Utenti e gruppi....................................................................................................................................................... 10 Ubuntu 11 La dotazione software di UBUNTU............................................................................................................................ 11 Interfaccia.................................................................................................................................................................. 11 Terminale e comandi 15 Utente normale................................................................................................................................................. 16 Utente root........................................................................................................................................................ 17 Comandi di uso generale...................................................................................................................................... 18 Operazioni di Gestione (file e cartelle).................................................................................................................. 21 Accedere ad una cartella o ad una directory................................................................................................ 21 Visualizzare il contenuto della cartella.......................................................................................................... 22 Creare una cartella....................................................................................................................................... 22 Rinominare una cartella................................................................................................................................ 22 Tagliare ed incollare una cartella.................................................................................................................. 22 Copiare ed incollare una cartella.................................................................................................................. 22 Cancellare una cartella vuota....................................................................................................................... 22 Cancellare una cartella non vuota................................................................................................................ 22 Rinominare un file......................................................................................................................................... 22 Tagliare ed incollare un file........................................................................................................................... 23 Copiare ed incollare un file........................................................................................................................... 23 Cancellare un file.......................................................................................................................................... 23 Cercare una stringa in un file........................................................................................................................ 23 Cambiare i permessi di lettura, scrittura ed esecuzione...............................................................................23 Scaricare un file da Internet.......................................................................................................................... 24 Esercizio....................................................................................................................................................... 25 Compilazione e lancio di un file............................................................................................................................. 25 Operazioni su utenti.............................................................................................................................................. 26 Comandi composti................................................................................................................................................ 26 Esempio Sort................................................................................................................................................ 26 Esempio Pipe............................................................................................................................................... 27 Reti........................................................................................................................................................................ 27 Editor......................................................................................................................................................................... 27 VI.......................................................................................................................................................................... 27 gedit...................................................................................................................................................................... 29 nano...................................................................................................................................................................... 29 Shell 30 Bash...................................................................................................................................................................... 30 Costruzione di semplici script (http://www.math.unipd.it/~burattin/tutorial/bash-scripting )...................................30 Esecuzione di uno script................................................................................................................................... 30 Esempi.............................................................................................................................................................. 31 Esempio 1- Input - Output redirection........................................................................................................... 32 esempio sort e wc......................................................................................................................................... 32 ..................................................................................................................................................................... 32 Le variabili................................................................................................................................................................. 33 PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 2
Esempi.............................................................................................................................................................. 34 I parametri posizionali........................................................................................................................................... 34 Operatori Aritmetici............................................................................................................................................... 35 Strutture di controllo.................................................................................................................................................. 37 If............................................................................................................................................................................ 37 Comando_di_condizione: Spesso come comando di condizione è necessario inserire un’espressione. Per fare ciò è utile il comando test espressione...................................................................................................... 37 Confronto numeri e stringhe............................................................................................................................. 39 Stringhe............................................................................................................................................................ 40 Test for files and directories.............................................................................................................................. 41 Multilevel if-then-else........................................................................................................................................ 42 case...................................................................................................................................................................... 42 for.......................................................................................................................................................................... 44 while...................................................................................................................................................................... 44 Loops........................................................................................................................................................................ 46 for loops................................................................................................................................................................ 46 while loops............................................................................................................................................................ 47 La sfida................................................................................................................................................................. 48 Sistemi operativi basati su Kernel Linux.................................................................................................................... 49 Android.................................................................................................................................................................. 49 iOS........................................................................................................................................................................ 50 BlackBerry Tablet OS............................................................................................................................................ 51 True microkernel OS......................................................................................................................................... 52 Multicore migration........................................................................................................................................... 52 Bibliografia................................................................................................................................................................ 52 Appendice 53 Questo testo è pubblicato sotto licenza Creative Commons - Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported - Per le condizioni consulta: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it . Le utilizzazioni consentite dalla legge sul diritto d'autore e gli altri diritti non sono in alcun modo limitati da quanto sopra. Il documento è scaricabile da http://isisfacchinetti.gov.it/ , sezione download http://moodle.isisfacchinetti.it/mod/data/view.php?id=1391 di CIF2.0 http://moodle.isisfacchinetti.it/ , per fini esclusivamente didattici e non commerciali Segnalazioni di errori, critiche e consigli sono molto graditi e possono essere inoltrati a paolo.macchi@libero.it , oppure lasciando un commento al momento del download per gli studenti registrati. NOTA il documento comprende molti esempi e spiegazioni prelevate dalla Rete a cui si fa riferimento nel testo. ISIS “Cipriano Facchinetti” via Azimonti, 5 - 21053 Castellanza (VA) - http://www.isisfacchinetti.gov.it/ Tel. 0331635718 fax 0331679586 Convenzioni usate nel testo: rappresenta una nota, curiosità, un approfondimento rappresenta una esercitazione o esempio http://qrcode.kaywa.com/ link di riferimento Rappresenta un codice o dei risultati o una segnalazione storica PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 3
Note di utilizzo del sistema operativo Linux-Ubuntu Linux http://www.linuxfoundation.org/ Nel 1985 Richard Stallman fondò la FreeSoftware Foundation, il cui obiettivo era riassunto nell'acronimo ricorsivo GNU = Gnu's Not Unix. https://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Unix_timeline.en.svg/800px-Unix_timeline.en.svg.png In realtà l'obiettivo era la scrittura di un intero Sistema Operativo, analogo a UNIX, con delle caratteristiche innovative e varie applicazioni di corredo, che fosse interamente free, negando così la natura commerciale di UNIX. Nel 1991 Linus Benedict Torvalds, studente del corso di Sistemi Operativi all'Università di Helsinky, aprì la strada allo sviluppo di LINUX, che ad oggi è forse il segno più tangibile della realizzazione del progetto GNU. “Linux può essere installato su una ampia gamma di computer, dai cellulari, tablet computer e console ai mainframe e i supercomputer. Linux è anche un sistema operativo per server e fa funzionare i dieci supercomputer più veloci nel mondo. PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 4
Kernel Il kernel è il "cuore" di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della memoria, delle risorse del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione. La controparte del kernel è la shell, ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente all'hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità (scheduling) realizzando così il multitasking. L'architettura scelta da Linux Torvalds (il creatore di Linux nel 1991) per il kernel (ovvero una struttura monolitica, considerata da alcuni obsoleta a differenza della più moderna architettura a microkernel) fu causa di un dibattito molto acceso con Andrew S. Tanenbaum “ (Wikipedia) (Per approfondimenti: http://www.ubuntu-it.org/progetto/storia-filosofia http://www.di.unito.it/~vercelli/works/command-summary.html info http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1400&Itemid=229 ) Kernel Linux http://www.cyberciti.biz/tips/understanding-the-linux-kernel.html http://www.disi.unige.it/person/DelzannoG/SO1/AA0506/LibroSGG/linux.pdf http://www.ibm.com/developerworks/linux/library/l-linux-kernel/ http://www.federica.unina.it/ingegneria/sistemi-operativi/gestione-dei-processi-nei-sistemi-operativi-unixlinux-e- windows/ PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 5
La creazione di un nuovo processo si attua tramite la primitiva FORK: se il processo padre fa una “fork” genera un FIGLIO che è la copia del padre in tutto tranne che per il valore del PID (Process Identifier (parte da 0 (swapper per la gestione della memoria)) : i dati vengono duplicati e i files condivisi. Il Padre puo’ SOSPENDERSI in attesa che il figlio finisca, oppure puo’ PROSEGUIRE per conto suo. (N.B: la fork , in caso di successo, ritorna il valore 0 al proceso figlio, mentre il PID del figlio al processo padre, che cosi’ puo’ conoscere il figlio.In caso di insuccesso viene ritornato il valore -1 al padre e non viene generato il processo figlio. (Se il figlio termina e il padre non fa una wait il processo diventa Zombie (morto vivente) finchè il padre non procede alle esequie). Ex. processo padre (pippo) che genera un figlio (vi) Pippo() { int processo,stato; processo=fork(); if (processo
D'altro canto, dal punto di vista dell'utente che non deve fare amministrazione di sistema, l'una distribuzione o l'altra fa poca differenza: può percepire più che altro la quantità e l'aggiornamento degli applicativi installati. NOTA Sul sito http://www.linuxlookup.com/linux_iso è possibile reperire tutte le distribuzioni attualmente disponibili e liberamente scaricabili. Quale distribuzione scegliere? Dipende dall'uso che si pensa di fare di Linux. Esempio: se si ha un Mac, non c'è molta scelta, così come se si ha una workstation particolare. Se non ci sono motivi specifici per scegliere una particolare distribuzione, è bene scegliere secondo i propri gusti o esigenze. Ubuntu è forse la più facile da usare ed è quella a cui noi faremo riferimento nel seguito. Organizzazione del sistema – Il File System In un sistema Linux, o più in generale Unix, all'utente viene presentato un unico "dispositivo", come fosse un unico disco. Spesso per ``file system'' si intende l'organizzazione a basso livello dei file e delle directory sul corrispondente mezzo fisico di memorizzazione, che la maggior parte delle volte è una partizione di un disco rigido (fisso). Nel seguito per file system si intende l'albero delle directory corrispondente a una generica installazione: analizziamone alcune parti. Non tutte le installazioni di Linux hanno lo stesso albero delle directory, in particolare ogni distribuzione può presentare delle differenze anche significative da una release all'altra; inoltre, da questo punto di vista le varie distribuzioni di Linux possono differire anche notevolmente tra loro. Quindi, per fare un'esposizione utile e sensata, non vengono riportate tutte le directory, ma solo le più importanti, e non si scende più di un livello dentro l'albero. Ecco un riferimento a Ubuntu Linux. PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 7
fig.2 – L'organizzazione dei file in Linux Ubuntu (A sinistra della figura il file system è rappresentato con il comando “tree” che va installato con: sudo apt-get install tree) Directory principali: cfr https://drive.google.com/drive/my-drive : / - root Il file system ha origine in /, detta ``root'' o directory radice. Si nota esplicitamente che root è anche la username PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 8
dell'amministratore di sistema, la cui home directory è /root. Il file system ha origine in /, detta root o directory radice. Si nota esplicitamente che root è anche la username dell'amministratore di sistema, la cui home directory è /root. /bin è la directory che contiene i programmi principali del sistema, quelli che devono essere disponibili subito all'accensione, per poter avviare i sistema. Questa directory contiene le 'aree locali' dei singoli utenti. home Quando un utente si collega facendo login, egli non si trova nella directory principale del sistema (la root /) ma viene posizionato in genere in una directory "privata", diversa per ogni utente. Questa directory, detta home, in genere ha il nome dell'utente ed è una sottodirectory della directory home. usr In questa directory risiede la maggiorparte del sistema. In usr e nelle sue sottodirectory risiedono tutti i programmi installati, i file del manuale, la documentazione ed altroancora. Una caratteristica di usr è che i suoi file in genere possono essere solo letti. La directory /usr/man contiene delle sottodirectory in cui si trovano dei file corrispondenti alle pagine di manuale in linea. /etc La directory etc è una delle più importantidel sistema perché contiene la quasitotalità dei file di configurazione del sistema, compresi quelli che servono per la fase di accensione. /lib Questa directory contiene le librerie di sistema,cioè quegli archivi di funzioni utilizzati da tutti. Troveremo in questa directory le librerie di funzioni utilizzate dal linguaggio C, richiamate da tutti i programmi compilati in questo linguaggio, ma anche varie librerie utilizzate da altri linguaggi o sistemi. Device PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 9
/cdrom è una directory vuota, alla quale l'amministratore di sistema potrà collegare (montare) un disco inserito nel lettore CD- Rom. /dev contiene dei file speciali che vengono usati per indicare al sistema i dispositivi. Organizzazione degli utenti Esistono differenze fra i vari utenti, definite dai permessi e dall'acceso ai file e comandi che un'utente può lanciare. E' convenzione che i semplici utenti possano scrivere, leggere e modificare file solo all'interno del loro ambiente (home) e lanciare semplici comandi che non influiscono sulla configurazione del sistema. Superutenti Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema come superuser,detto root. L'utente root è l'amministratore del sistema con tutti i poteri che comporta questo ruolo, quindi è molto importante che l'accesso a root sia limitato solo al reale amministratore di sistema (sysadmin). Utenti e gruppi Prima di accedere al sistema occorre autenticarsi indicando un nome di utente conosciuto dal sistema. Gli utenti, a loro volta, appartengono a gruppi. Ogni utente deve appartenere almeno ad un gruppo, ma può appartenere a più gruppi. PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 10
Ubuntu http://www.ubuntu-it.org/ - http://www.ubuntu.com/ubuntu http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=358&Itemid=33 La dotazione software di UBUNTU In ogni distribuzione Linux vengono inclusi moltissimi software applicativi gratuiti e liberamente distribuibili (sempre secondo la licenza GNU- GPL) (cfr “Ubuntu per principianti” in Youtube) Interfaccia PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 11
Scrivania (http://help.ubuntu-it.org/8.04/ubuntu/user-guide/it/overview-desktop.html) “La scrivania risiede dietro tutti gli altri componenti presenti sullo schermo. Quando non vi è alcuna finestra visibile, la scrivania è quella parte dello schermo tra il pannello superiore e quello inferiore. Sulla scrivania è possibile posizionare file e cartelle a cui si voglia accedere con facilità. Quando si inserisce un CD, una unità flash o un altro supporto rimovibile, oppure un dispositivo contente file come un lettore musicale o una fotocamera digitale, sulla scrivania compare una icona che rappresenta quel dispositivo. I file e le cartelle posizionati sulla scrivania sono memorizzati in una cartella speciale all'interno delle propria cartella home, dal nome Desktop. Come ogni altra cartella, è possibile porre direttamente in essa file (o altre cartelle), semplicemente questi appariranno anche sulla scrivania.” In alto a destra le icone di notifica: mail, rete, volume, utente, icona di accensione (pann. Controllo , etc). A sx dello schermo : DASH: Bottone di Ubuntu ( corrisponde allo START di Win), con casella di ricerca. Si basa su Lens (lenti di ricerca (dash di base): generali, applicativi, doc privati e cartelle, musica) e Scope (motore di ricerca che puo’ cercare sul PC locale o in rete). Cfr https://launchpad.net/ per gli sviluppatori Spazi di lavoro PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 12
Cartella Home o Creazione nuove cartelle, crea nuovo file, copia incolla… o Proprietà o Permessi (http://help.ubuntu-it.org/6.10/ubuntu/desktopguide/it/permissions.html) Tutti i file in un sistema Linux hanno permessi che abilitano o meno gli utenti alla visualizzazione, mo- PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 13
difica o esecuzione. Il super utente "root" ha l'abilità di accedere a ogni file nel sistema. Ogni file pos- siede delle restrizioni di accesso, restrizioni sull'utente ed è associato con un proprietario/gruppo. Ogni file è protetto dai seguenti tre insiemi di permessi, in ordine di importanza: utente si applica all'utente proprietario del file gruppo si applica al gruppo associato con il file altro si applica a tutti gli altri utenti All'interno di questi insiemi ci sono i permessi attuali. I permessi e come si applicano a file e directory sono elencati di seguito: lettura i file possono essere visualizzati/aperti il contenuto delle directory può essere visualizzato scrittura i file possono essere modificati o cancellati il contenuto delle directory può essere modifi- cato esecuzione i file eseguibili possono essere avviati come programmi si può accedere alle directory Per visualizzare e modificare i permessi di file e directory, scegliere Home e fare clic col tasto destro del mouse su un file o una directory. Quindi scegliere Proprietà. I permessi sono disponibili all'interno della scheda Permessi ed è possibile modificarli fin tanto che si è i proprietari del file/directory. Navigazione con visualizzazione elenco Info Istallazione nuovi programmi Ubuntu software center Repository Ubuntu -> Gestore aggiornamenti PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 14
Terminale e comandi In Linux, oltre all’interfaccia grafica, è possibile utilizzare la riga di comando. L’uso del Terminale in Linux e, quindi in Ubuntu, permette di gestire l’intero sistema usando i COMANDI. (In queste note si fa riferimento ai documenti presenti in http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1543&Itemid=33 in cui è possibile trovare ampia e valida documentazione) Il “Terminale” è uno strumento importantissimo, col quale possiamo interagire direttamente col nostro sistema, senza utilizzare l’interfaccia grafica. Ubuntu permette di modificare le impostazioni del sistema e di operare senza dover mai passare dal terminale, ma è opportuno saperlo utilizzare perché può essere utile, se non indispensabile, dovere impartire comandi in maniera diretta. Da Dash troviamo il terminal che, una volta aperto si presenta come una finestra vuota che ci mostra una riga di testo (linea di comando), alla cui destra, normalmente, troviamo il simbolo $ seguito dal cursore intermittente e pronto a ricevere i nostri comandi. NOTA si può utilizzare Virtual Box per chiamare UBUNTU da Windows- “VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers, it is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2.”https://www.virtualbox.org/ When we describe VirtualBox as a "virtualization" product, we refer to "full virtualization", that is, the particular kind of virtualization that allows an unmodified operating system with all of its installed software to run in a special environment, on top of your existing operating system. This environment, called a "virtual machine", is created by the virtualization software by intercepting access to certain hardware components and certain features. The physical computer is then usually called the "host", while the virtual machine is often called a "guest". Most of the guest code runs unmodified, directly on the host computer, and the guest operating system "thinks" it's running on real machine. https://www.virtualbox.org/wiki/Virtualization PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 15
Il terminale visualizza il nome dell’utente (login) il nome host (computer), e il percorso corrente. paolo@scuola:~$ Quello che compare alla sinistra di @ è il nostro nome utente, ossia paolo (lo stesso che utilizziamo, insieme con la password, quando avviamo Ubuntu, ossia in apertura di sessione, da noi scelto durante l’installazione di Ubuntu. A destra di @ e prima dei due punti, troviamo il nome del computer, nel nostro caso scuola (anche questo lo abbiamo scelto durante l’installazione di Ubuntu). Dopo i due punti troviamo il simbolo ~ chiamato tilde . Esso significa che ci troviamo dentro la cartella “home” (qualcosa che somiglia alla cartella Documenti e setting di Windows). NOTA per usare un terminale on line si veda: https://www.tutorialspoint.com/codingground.htm Utente normale Ubuntu, anche se per entrare abbiamo dovuto digitare la password, ci considera ”utenti normali”, ossia abbiamo dei privilegi limitati. Questo vuol dire che se vogliamo effettuare delle operazioni che modificano il sistema, dobbiamo ottenere i privilegi di amministratore, fornendo la password alla richiesta. Il simbolo $, sta a significare che in quel momento siamo dei semplici utenti normali e quindi abbiamo poteri (privilegi) limitati. Per acquisire, momentaneamente, i privilegi di root, possiamo scriviamo la parolina magica: sudo. Ecco come scrivere il comando: carlo@ufficio:~$ sudo comando Questo termine (sudo), inserito prima di comando, farà scattare la richiesta della password. Solo dopo che abbiamo digitato la password il nostro comando verrà eseguito. In definitiva sudo, inserito prima di un qualsiasi comando, consente di eseguire il comando stesso con i privilegi di root (amministratore) e tali privilegi si perdono subito dopo l'esecuzione del comando. Se si lascia il terminale aperto e dopo un paio di minuti, si vuole eseguire un altro comando che prevede l'uso di sudo, non sarà necessario fornire di nuovo la password. Infatti, l'effetto "password" rimane attivo per i successivi cinque minuti. Come digitare la password - Nelle ultime versioni di Ubuntu, mentre si digita la password, non compaiono gli PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 16
asterischi e sembra che non succeda nulla, ma non è cosi’. In effetti è solo una questione di sicurezza. (NB la password in lab sistemi è “utente”) Sudoers, compiere operazioni con sudo Serve essere root o avere i permessi di sudoer (aggiungere sudo all’inizio della sintassi) affinchè il comando vada a buon fine. Il comando sudo (super user do) è una stringa di comando usata su sistemi operativi Unix-like per eseguire operazioni con privilegi di root (ovvero di amministratore). A differenza del comando su (substitute user), sudo richiede all’utente solo la propria password, e non quella dell’amministratore; perciò non occorre conoscere password altrui, con ovvi vantaggi sulla sicurezza, è sufficiente essere stati precedentemente abilitati. Il file di configurazione /etc/sudoers stabilisce chi può sostituire chi, su quali macchine, e relativamente a quali operazioni. Fonte: Wikipedia Per aggiungere un utente al gruppo di sudoer, è sufficiente loggarsi da root e lanciare il comando: visudo Potremo così modificare il file /etc/sudoers ed aggiungere i permessi di sudoer ad un utente specifico. Una volta che il nostro utente sarà come un root, potremo lanciare qualsiasi operazione di sistema che richieda permessi speciali, aggiungendo “sudo” all’inizio di ogni sintassi. Per esempio, per l’installazione di VLC: sudo apt-get install vlc Il sudoer è molto comodo, ma ovviamente comporta più rischi per la sicurezza, specialmente nel caso in cui il sistema è utilizzato da più utenti. Usatelo con discrezione. NOTA: “apt-get is the command-line tool for working with APT software packages. APT (the Advanced Packaging Tool) is an evolution of the Debian .deb software packaging system. It is a rapid, practical, and efficient way to install packages on your system. Dependencies are managed automatically, configuration files are maintained, and upgrades and downgrades are handled carefully to ensure system stability.” http://www.computerhope.com/unix/apt-get.htm Utente root Ogni volta che lo reputeremo necessario, possiamo utilizzare un altro metodo che ci consentirà di conservare, più a lungo, i nostri poteri di amministratore. Nel caso dell'esempio con nome carlo e nome del computer ufficio, ecco come daremo il comando: carlo@ufficio:~$ sudo –s ci verrà chiesta la password e subito dopo noteremo che la riga sarà diventata: root@ufficio:~# Ossia il nostro nome è cambiato in root e $ (dollaro) è diventato # (sharp o cancelletto), significa che adesso non è loggato l’utente carlo ma l’utente di root che ha i privilegi d’amministratore. Ecco ad esempio due modi diversi, ma entrambi corretti, di indicare come dare il comando ciccio: $ sudo ciccio ==> significa che al terminale dovrà esserci carlo@ufficio:~$ sudo ciccio # ciccio ==> significa che al terminale dovrà esserci root@ufficio:~# ciccio Esempio pratico PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 17
Per finire faremo un esempio pratico. Vogliamo impostare la data e l’ora del nostro computer. Useremo il comando date. Ad esempio, per il 22 luglio 2008, ore 16.30 metteremo i numeri 072216302008 (07=luglio, 22=giorno, 1630=ore e minuti, 2008=anno), quindi il comado vero e proprio sarà: date 072216302008 Il primo metodo da utilizzare, nel caso fossimo utenti normali, consiste nell'inserire sudo davanti al comando: sudo date 072216302008 Dopo avere dato il comando, ci verrà chiesta la password e quindi (se non abbiamo commesso errori di digitazione o di copia-incolla) sarà cambiata l’ora e la data. Il secondo metodo consiste nel farci riconoscere, subito, come utente root e dopo dare il comando date. Per farci riconoscere quale utente root, digitiamo sudo -s o con le solite modalità di scrittura indicate da manuali e guide: $ sudo –s Il nostro comando date sarà: date 072216302008 e dopo avere dato Invio da tastiera, la data e l'ora del nostro sitema saranno impostate come noi volevamo. Ricordiamo che fino a quando non chiuderemo il terminale, saremo utenti root, ovvero resterà il simbolo # Disconnessione da root per tornare utente con permessi normali sulla stessa finestra di terminale: exit Nota: questo comando funziona solo se in finestra si è partiti da user e ci si è loggati come root. Il comando exit può servire anche per chiudere la finestra del terminale, da riga di codice stessa. Comandi di uso generale http://a2.pluto.it/a2/esercizi_pratici.pdf http://www.ecommunication.it/ubuntu/principali-comandi-linux-riga-di- comando https://drive.google.com/drive/my-drive Un comando è composto da vari elementi. Il primo elemento è sempre il comando effettivo, seguito da parametri od opzioni. È possibile digitare un comando e modificarlo, utilizzando ←, →,
per sapere come sono allocati in /dev, che tipo di permessi di lettura e scrittura si hanno in essi, e così via, si può semplicemente lanciare da qualunque utente: mount Lista delle periferiche USB montate: Lanciare, da root o con “sudo”, il seguente comando: lsusb Lista delle schede PCI montate: lspci Cambio directory cd /usr/bin , la directory attuale dovrebbe divenire ‘/usr/bin/’. Per controllare che ciò sia avvenuto si utilizza il comando seguente (print working directory ): $ pwd Il comando pwd (Present Working Directory) fornisce il percorso assoluto della directory in cui ci si trova in quel momento. Per visualizzare il contenuto di file di testo si utilizzano generalmente i comandi ‘cat’ e ‘more’. cat mio_file . $ cat /etc/fstab cat > pippo2 , more /etc/services (per la stampa in ordine inverso tac) Lista file ls, ls -l La ridirezione dell’output può essere fatta in aggiunta, creando un file se non esiste, o aggiungendovi i dati se invece esiste già. $ ls -l /tmp >> elenco La copia dei file può essere fatta attraverso l’uso del comando ‘cp’. $ cp pippo2 pippo3 L’eliminazione dei file avviene normalmente per mezzo di ‘rm’. $ rm pippo La creazione di una directory è concettualmente simile alla creazione di un file vuoto. Una directory viene creata con il comando ‘mkdir’. $ mkdir mia (cancellazione: rmdir mia2 ) Lo spostamento di file e directory avviene per mezzo di ‘mv’ mv alfa omega creare un file vuoto è quello di usare il comando ‘touch’. $ touch pippo La pipeline, è una forma di ridirezione in cui la shell invia l’output di un comando come input del successivo. $ cat elenco | sort In questo modo, ‘cat’ legge il contenuto del file ‘elenco’, ma questo, invece di essere visualizzato sullo schermo, viene inviato dalla shell come standard input di ‘sort’ che lo riordina e poi lo emette sullo schermo. La creazione di un alias è un metodo che permette di definire un nome alternativo per un comando preesistente. $ alias elenca=’ls -l’ , elenca Ricerca di file nel sistema locate, find Se siamo alla ricerca di un determinato file all’interno del nostro computer, il mio consiglio è andare su Risorse e selezionare Cerca file. In questo modo il processo sarà più rapido e meno macchinoso, ma in questa guida siamo qui per vedere come è possibile farlo anche da terminale. Il motore di ricerca da terminale si chiama locate e possiamo installarlo normalmente digitando: apt-get install locate Esso fa uso di un database ad aggiornamenti costanti, ma non frequenti, pertanto se volessimo ricercare un file di recente creazione, spostamento o immissione nel sistema dovremo prima lanciare il comando di update per questo database. Da root o con permessi sudoer aggiungendo “sudo” prima della sintassi digitiamo: PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 19
/usr/bin/updatedb Attendiamo che l’aggiornamento sia terminato, e poi lanciamo: locate testo.txt se per esempio stiamo cercando da qualche parte nel nostro sistema il file “testo.txt”. Naturalmente, quella parte è da sostituire con il file di cui siete alla disperata ricerca. find Trova tutti i file nella directory attuale (.) e nelle sue sottodirectory con eth nel nome: find . -name “*eth*” Visualizzare lo spazio libero sulle memorie e lo stato della memoria RAM e della cache Se vogliamo avere una veloce panoramica dello spazio libero di tutti i File System montati e della RAM in uso, esistono due comandi che ci vengono in soccorso. Il primo, per gli spazi liberi, è: df Mentre il secondo, per la gestione della RAM e della cache in uso, è: free Visualizzare i processi di sistema in uso e le loro dipendenze Da terminale abbiamo anche la possibilità di avere la panoramica sui processi in uso dal sistema. ps specificato senza ulteriori opzioni ci restituisce l'elenco sintetico dei processi appartenenti all'utente e controllati mediante il terminale in uso. Potremo in ogni caso utilizzare gli argomenti ax e aux per ottenere una lista più completa: ◦ ax mostra i processi relativi a tutti gli utenti (-a) ed anche non controllati dl terminale (-x); ◦ aux identico ad ax ma permette di visualizzare anche le user (-u) degli utenti a cui appartengono i processi in esecuzione. ▪ ps PID TTY TIME CMD 21693 pts/8 00:00:00 bash 21694 pts/8 00:00:00 ps L'invocazione di ps mostra due processi. Il primo, bash, è la shell in esecuzione in questo terminale. Il secondo è l'istanza in esecuzione del programma ps stesso. La prima colonna, etichettata PID, mostra l'ID di processo di ognuno. ◦ ps al ◦ ps –e ◦ ps axl ◦ ps xf Potete anche chiedere uno schema strutturato ad albero se volete le idee più chiare sui processi aperti: ◦ pstree monitorare i processi ◦ top eliminare il processo generato $ kill 311 avviare dei comandi in background, in modo che si renda nuovamente disponibile l’invito per inserire altri comandi. $ yes > /dev/null & PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 20
Il simbolo e-commerciale (‘&’), posto alla fine del comando, dice alla shell di eseguirlo in background Forzare la chiusura di un processo kill processo (ex kill 3456) Vedere in ordine cronologico tutti i comandi digitati history Priorità nice (ex. nice -10 perl test.pl) Per poter modificare il valore nice di un certo processo si può utilizzare il comando nice Utillizando il comando nice assieme all'opzione -n permette di specificare il valore di nice desiderato per il processo che si vuole avviare. Esempio: nice -n 15 nano Nota: I valori da assegnare sono limitati dal seguente intervallo 19 e -20 Utillizando un valore negativo si aumenta la priorità del processo Utilizzando un valore positivo si diminuisce la priorità del processo Creazione di un nuovo utente Modifica della password di un user e di un root Per creare un nuovo utente da terminale, è sufficiente diventare root, e digitare il comando: ◦ adduser nomeutente Saranno richieste la password che si vuole assegnare all’utente, e in più altre piccole informazioni facoltative che potete immettere, ovvero Nome Completo, Stanza N° (?!), Numeri telefonici, ed altro. Cancellazione userdel nomeutente Modifica della password di un user e di un root Per la modifica da terminale della password di un utente, è possibile con l’uso di passwd. Possono verificarsi tre condizioni: 1) Siamo loggati come utenti normali, abbiamo i permessi sudo, e non abbiamo mai impostato una password di root (situazione tipica dopo l’installazione di Ubuntu). Ci basterà digitare: sudo passwd root E ci verrà richiesto di immettere una password e di ripeterla. Sarà la password assegnata all’utente root; 2) Siamo loggati come root, e vogliamo impostare una password diversa ad un utente normale. Basterà lanciare semplicemente: passwd nomeutente Con il nome dell’utente a cui vogliamo settare la password al posto di “nomeutente”; 3) Siamo loggati come utenti normali, non ricordiamo la password di root e non abbiamo i permessi di sudoers. Qui è un bel problema. Credo che non si possa fare null’altro che reinstallare il sistema. Operazioni di Gestione (file e cartelle) (http://vicsteele.wordpress.com/comandi/#6 Eleco comandi : http://www.istitutomajorana.it/scarica/Ubuntu_comandi_da_terminale.pdf ) Accedere ad una cartella o ad una directory Per entrare nella cartella “documenti” digitiamo: PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 21
cd documenti Per entrare nella cartella “sottocartella” presente in “cartella” in un solo comando partendo da fuori le due cartelle, digitiamo: cd cartella/sottocartella Se siamo in “sottocartella” e vogliamo tornare in “cartella” digitiamo: cd .. Se siamo in “sottocartella” e vogliamo uscire sia da lì che da “cartella”, digitiamo: cd ../.. Visualizzare il contenuto della cartella ls ls –help ls –l Vedo i permessi ls –a Si potranno visualizzare anche gli eventuali file nascosti, mentre scrivendo: ls –A Si potranno visualizzare oltre ai file nascosti anche quelli di sistema Creare una cartella mkdir cartella Se volessimo creare la cartella “cartella” e subito al suo interno la cartella “sottocartella” scriviamo: mkdir cartella/sottocartella Attenzione ai permessi. Se farete “sudo mkdir …” oppure lancerete il comando da root, da utenti normali non si avranno i permessi di scrittura. Rinominare una cartella mv cartella/ directory/ Tagliare ed incollare una cartella cd cartella mv sottocartella /home/vostronomeutente/directory Copiare ed incollare una cartella cd cartella cp -r sottocartella /home/vostronomeutente/directory Non scordatevi “-r”, altrimenti vi darà errore di directory omessa. Cancellare una cartella vuota Questo comando va bene solo se la cartella che si vuole cancellare è vuota. rmdir cartella Cancellare una cartella non vuota rm -rf cartella Per dovere di cronaca “-rf” è in grado di cancellare ogni file, se avete i permessi di root o di sudo. Rinominare un file Per rinominare un file da terminale deve essere usato, come per il Taglia e Incolla, mv. PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 22
Volendo rinominare il file “testo.txt” in “text.txt” dovremo dirigerci prima nella cartella in cui il file è presente, e poi digitare: mv testo.txt text.txt Tagliare ed incollare un file mv testo.txt /home/vostronomeutente/ Copiare ed incollare un file cp testo.txt testo.bak Cancellare un file rm testo.txt il file sarà cancellato, se si possiedono i permessi giusti. Creare un collegamento Per creare un collegamento di file o cartelle si deve usare il comando ln. ln "file da collegare" "directory di collegamento" Poniamo ad esempio che ho il file testo.txt nella home e voglio creare un collegamento in usr/bin. Scriverò: ln /home/gigi/testo.txt /usr/bin Digitate ln –help per avere la lista e le loro spiegazioni. Cercare una stringa in un file grep cercare una stringa string in file grep [options] string file dove string e' la stringa da cercare e file e' il file nel quale si cerca la stringa. NB l’opzione -i ignora il case sensitive: Il comando dell'esempio seguente ordina al sistema di elencare tutti i file che terminano in ".ps" creati nel mese di maggio (mag): $ ls -l *.ps | grep mag Cambiare i permessi di lettura, scrittura ed esecuzione. Può succedere di aver bisogno di dover cambiare i permessi ad un file, per consentire la lettura, la scrittura o l’esecuzione ad ogni utente, oppure al contrario di proteggerlo da utilizzi indesiderati e restringerlo ad un particolare utente o gruppo. Quello che si dovrà utilizzare sarà il chmod. Per cambiare i permessi, ad esempio, al file testo.txt dovremo prima farlo da autori del file (per essere sicuri che abbiamo ogni permesso di farlo), ad esempio accedendo prima da root se non possiamo interagire col file da utenti semplici, e poi digitare: chmod xxx testo.txt Al posto di XXX vanno tre numeri. I numeri che possiamo usare sono: 777 - Lettura, scrittura, esecuzione per tutti (proprietario, gruppo, altri) 755 – Lettura, scrittura, esecuzione per il proprietario, lettura, esecuzione per il gruppo ed altri utenti. 644 – Lettura, scrittura per il proprietario, lettura per il gruppo ed altri utenti. PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 23
666 – Lettura e scrittura per tutti. 700 – Lettura, scrittura, esecuzione per il proprietario, nessun permesso per il gruppo ed altri. (XXX in binario 000, 001, 010,… 111 corrisponde a 0,1,2,...7): fonte: cisco Pertanto, se volessimo assegnare qualunque permesso a tutti: chmod 777 testo.txt Per aggiungere o rimuovere permessi a un utente si può usare il comando “chmod” con “+” o “–“ per il proprietario permessi ->"r", "w","x" ->"read", "write", "execute" chmod +rwx “name of the file” chmod +x testfile -> execute chmod –wx testfile ->write e execute oppure per chiunque. Ad esempio chmod 754 myfile corrisponde a : chmod u=rwx,g=rx,o=r myfile u=user g=group o=other esempio: chmod +x testfile → execute chmod –wx testfile → write e executable permissions Scaricare un file da Internet Da terminale è possibile anche scaricare file da Internet, che siano http o ftp. Per farlo, basterà digitare wget seguito dall’url del file che si vuole scaricare. Se volessimo scaricare il file http://www.sito.it/file.rar ,ci basterà digitare: wget http://www.sito.it/file.rar Il file sarà messo in download e, una volta scaricato, piazzato nella directory in cui siamo presenti nel terminale al PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 24
momento del lancio del comando. Esercizio Conteggio wc wc effettua un conteggio e totalizza a seconda delle opzioni il numero di caratteri (“-m”), parole (“-w”), byte (“-c”) e linee (“-l”) di un file o di uno stream di input. Ad esempio per conoscere il numero di file nascosti presente in una directory, sarà sufficiente utilizzare il comando come segue: $ ls .* | wc -l 681 Lanciato senza argomenti wc restituisce tre valori: il numero di linee, di parole e di byte. $ wc elenco elenco_num 6 6 12 elenco 6 6 12 elenco_num 12 12 24 totale Compilazione e lancio di un file Per compilare un file si può utilizzare il compilatore gcc di linux: gcc nomeFileDaCompilare –o NomeFileDiOutput Per eseguire il file: ./nomeFileDiOutput esempio: PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 25
Altro (dd) find find *.c find / -name *.mp3 head Operazioni su utenti Chi sono: Time of last system boot List of users logged-in Current run level etc Comandi composti ls –al | grep ciao elenco dei file e poi filtro (grep) solo quelli che contengono la stringa “ciao” cat file.txt | parola grep Grep stamperà tutte le righe del file contenente il termine “parola” che hai chiesto a grep di cercare. mkdir nuovadir && cd nuovadir firefox & Esempio Sort #!/bin/bash $cat > sname vivek ashish zebra babu Press CTRL + D to save. $ sort < sname > sorted_names $ cat sorted_names PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 26
$ tr "[a-z]" "[A-Z]" < sname > cap_names $ cat cap_names $ sort > new_sorted_names < sname $ cat new_sorted_names Esempio Pipe l‘uscita di un programma viene messa nell’input di un altro senza file di mezzo $ ls | $ who | sort $ who | sort > user_list $ who | wc -l $ ls -l | wc -l $ who | grep chrys Reti ifconfig (ex ifconfig eth0 promisc) iwconfig (wireless) iwlist route ip (ip addr 192.168.0.1 dev eth1) ping traceroute nslookup (ex. nslookup google.com) netstat arp ethtool iptables (firewall http://wiki.ubuntu-it.org/Sicurezza/Iptables ) (ex. sudo iptables -vv –L) Il nostro server SSH usa la porta 22 (a meno che non lo abbiamo configurato diversamente), quindi dobbiamo dire a iptables di lasciare entrare il traffico tcpsulla porta 22 (il relativo traffico di risposta lo abbiamo già permesso prima), quindi: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT In ogni momento possiamo controllare come abbiamo configurato il firewall, come spiegato precedentemente. Il server web usa la porta 80 (anche qui, a meno di configurazioni personalizzate), quindi consentiamo tutto il traffico che dall'esterno chiede di entrare attraverso la nostra porta 80: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT Editor http://www.coresis.com/extra/linuxcorsobase/6-4.htm VI PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 27
L'editor VI (visual editor) è il più diffuso nell'ambiente UNIX e Linux. Per aprire vi ed editare un nuovo file basta digitare vi oppure vi nomefile nel secondo caso, se il file esiste viene aper- to, se non esiste viene creato nuovo. Ad esempio vi aaa.c VI ha due modalità di funzionamento: il modo comando (command) e il modo inserimento (input). In modalità inserimento ogni parola verrà inserita direttamente nel file. E' possibile usare molti comandi per entrare in questa modalità il più comune è i (insert). Entrare in modalità comando è possibile in qualsiasi momento premendo il tasto ESC, ogni lettera verrà interpretata come un comando. (La versione GNU di VI si chiama VIM, (Vi IMproved) ed è quella comunemente usata nelle distribuzioni Linux.) Comandi principali Salvare e uscire ZZ salvare e uscire :w salvare :w salvare in altro file con il nome desiderato :wq salvare e uscire :q se non sono state effettuate modifche usce senza salvare :q! uscita incondizionata Comandi di copia e incolla yy copia la riga corrente y2 copia 2 righe sotto la posizione in cui si trova il cursore p incolla il testo nel punto dove si trova il cursore Cancellare righe o caratteri x cancella il carattere in cui si trova il cursore X cancella il carattere alla sinistra del cursore cancella tutto quello che si trova alla sinistra del cursore fino alla D fine della riga dd cancella la riga in cui si trova il cursore 3dd cancella 3 righe partendo dalla quella in cui si trova il cursore cancella dalla posizione in cui si trova il cursore fino alla fine del dG file cancella dalla posizione in cui si trova il cursore fino all'inizio del d1G file Spostarsi nel file PAOLO MACCHI LINUX-UBUNTU REL-18.10.18 28
Puoi anche leggere