Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


LINUX E LA SHELL BASH 2.0, Dispense di Fondamenti di informatica

Il presente documento si propone di raccogliere e spiegare i comandi più utilizzati e le relative nozioni, per capirne il funzionamento e la logica, al fine di utilizzare la shell Bash su un sistema GNU/Linux

Tipologia: Dispense

Pre 2010

Caricato il 24/01/2026

sardanus
sardanus 🇮🇹

3 documenti

1 / 81

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Corso di laurea in Ingegneria Informatica
Corso di Sistemi Operativi
Prof. G. Piscitelli Ing. M. Ruta
LINUX E LA SHELL
BASH
2.0
EMANUELE MOTTOLA PIETRO RUSSO
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51

Anteprima parziale del testo

Scarica LINUX E LA SHELL BASH 2.0 e più Dispense in PDF di Fondamenti di informatica solo su Docsity!

Corso di laurea in Ingegneria Informatica

Corso di Sistemi Operativi

Prof. G. Piscitelli Ing. M. Ruta

LINUX E LA SHELL

BASH

EMANUELE MOTTOLA PIETRO RUSSO

E. Mottola, P. Russo Linux e la shell Bash 2. COPYRIGHT , LICENZA , TERMINI D'USO Copyright (c) 2007-2008-2009 Emanuele Mottola e Pietro Russo. Questo testo è pubblicato sotto licenza: Creative Commons Attribuzione - Non commerciale – Condividi allo stesso modo 2.5 Italia http://creativecommons.org/licenses/by-nc-sa/2.5/it/deed.it Il testo della licenza è disponibile qui: http://creativecommons.org/licenses/by-nc-sa/2.5/it/legalcode Tutte le versioni di questo testo sono disponibili nell'area download di Desfa.org. Gli autori non forniscono nessuna garanzia sul corretto funzionamento dei programmi e dei comandi, declinano inoltre ogni responsabilità sull'uso che i lettori possono fare dei comandi e delle nozioni esposte, nonché sulla precisione delle stesse; fermo restando il forte impegno degli autori nel rendere questo documento il più preciso possibile. Questo testo è da intendersi pertanto a puro scopo informativo. PREFAZIONE Il presente documento si propone di raccogliere e spiegare i comandi più utilizzati e le relative nozioni, per capirne il funzionamento e la logica, al fine di utilizzare la shell Bash su un sistema GNU/Linux. Tutto il contenuto del documento, i comandi, la teoria e gli esempi si riferiscono all'uso della shell Bash sul sistema operativo GNU/Linux, che è l' opera collettiva frutto della più grande, complessa e duratura collaborazione volontaria mai realizzata nella storia dell'uomo. Nello sviluppo di questo testo è stato utilizzato un sistema GNU/Linux con kernel della serie 2.6.x e una shell Bash versione 3.2_p33. Tuttavia salvo piccoli dettagli quanto scritto è applicabile anche ai sistemi con versione di kernel Linux e shell Bash differente, senza nessuna modifica sostanziale. Questo documento è stato interamente realizzato utilizzando la suite freeware opensource OpenOffice.org, in particolare il programma Writer. Per l'esportazione nel formato pdf si è adoperato il tool integrato in OpenOffice.org. Questo documento è stato elaborato su sistemi Gentoo GNU/Linux, utilizzando quindi solo software opensource, senza violare alcun copyright. Nel documento col termine shell si fa riferimento alla shell Bash , con il termine superuser si indica equivalentemente l'amministratore di sistema cioè l'utente root. Si utilizza inoltre il termine Linux come abbreviativo di GNU/Linux. Ben consapevoli che Linux è in realtà il nucleo (kernel) del sistema operativo, dell'importanza ed essenzialità sia storica che tecnica delle librerie e software GNU, si è utilizzata questa semplificazione al solo fine di rendere più leggibile il testo. Fonte iniziale di questo testo è stato il corso di Sistemi Operativi del Prof. Giacomo Piscitelli tenuto presso il Politecnico di Bari nell'A.A. 2006/07, con il contestuale laboratorio di GNU/Linux tenuto dall' Ing. Michele Ruta. Inoltre esprimiamo tutta nostra stima e riconoscenza a tutti coloro che hanno contribuito allo sviluppo e diffusione di GNU/Linux e dell'opensource, da chi scrive codice a chi mette le proprie conoscenze al servizio degli altri su IRC e forum.

  • E. Mottola, P. Russo Linux e la shell Bash 2.
  • La Shell.........................................................................................................................
    • Introduzione..............................................................................................................
    • Terminale..................................................................................................................
    • Tipi di comandi.........................................................................................................
    • Metacaratteri............................................................................................................
    • Flag...........................................................................................................................
    • Scorciatoie..............................................................................................................
  • Sintassi del documento..............................................................................................
  • Documentazione in linea............................................................................................
  • Permessi di accesso...................................................................................................
    • Teoria......................................................................................................................
    • Comandi.................................................................................................................
  • Gestione file e directory.............................................................................................
    • Directory di Linux...................................................................................................
    • Percorsi assoluti e relativi.......................................................................................
    • Comandi.................................................................................................................
  • Link.............................................................................................................................
  • Ridirezione I/O............................................................................................................
    • Teoria......................................................................................................................
    • Esempi....................................................................................................................
  • Concatenamento comandi..........................................................................................
  • Visualizzazione file.....................................................................................................
  • Espressioni regolari....................................................................................................
  • Filtri e ricerche...........................................................................................................
  • Gestione processi.......................................................................................................
    • Gerarchia................................................................................................................
    • Foreground e Background......................................................................................
    • Daemon..................................................................................................................
    • Comandi.................................................................................................................
  • Gestione utenti e gruppi.............................................................................................
    • Teoria......................................................................................................................
    • Comandi.................................................................................................................
  • Alias............................................................................................................................
  • Variabili d'ambiente...................................................................................................
    • Teoria......................................................................................................................
    • Comandi.................................................................................................................
  • Gestione file system...................................................................................................
    • Introduzione............................................................................................................
    • MBR – Master Boot Record......................................................................................
    • Partizionamento......................................................................................................
    • Nomenclatura dei device........................................................................................
    • Mtab ed Fstab.........................................................................................................
    • Comandi.................................................................................................................
  • Avvio del sistema.......................................................................................................
    • BIOS........................................................................................................................
    • Boot Loader............................................................................................................
    • Init..........................................................................................................................
    • Runlevel..................................................................................................................
  • E. Mottola, P. Russo Linux e la shell Bash 2.
  • Bibliografia.................................................................................................................
  • Contatti.......................................................................................................................
  • Ringraziamenti...........................................................................................................
  • E. Mottola, P. Russo Linux e la shell Bash 2.
  • ACL............................... INDICE ANALITICO DEI COMANDI
  • adduser........................
  • alias..............................
  • append mode...............
  • apropos.........................
  • autocompletamento.....
  • Background..................
  • bash_history...................
  • bash_profile,...................
  • bashrc.............................
  • bg.................................
  • cat................................
  • cd..................................
  • cfdisk............................
  • chage............................
  • chfn..............................
  • chgrp............................
  • chmod...........................
  • chown...........................
  • chroot...........................
  • chsh..............................
  • clear.............................
  • clone()..........................
  • colordiff........................
  • cp..................................
  • CTRL-C..........................
  • CTRL-Z..........................
  • cut................................
  • date..............................
  • df..................................
  • diff................................
  • dmesg...........................
  • du.................................
  • echo..............................
  • exec()...........................
  • export...........................
  • fg..................................
  • FIFO..............................
  • file................................
  • File speciale a blocchi...
  • File speciale a caratteri
  • find...............................
  • finger............................
  • Foreground...................
  • fork().............................
  • GID...............................
    • grep..............................
    • groupadd......................
    • groupdel.......................
    • groups..........................
    • head.............................
    • history..........................
    • id..................................
    • II...................................
    • info...............................
    • it...................................
    • jobs...............................
    • kill.................................
    • killall.............................
    • last................................
    • less...............................
    • less-is...........................
    • ln..................................
    • ls...................................
    • makewhatis..................
    • man..............................
    • mkdir............................
    • mkfs..............................
    • mkswap........................
    • more.............................
    • mount...........................
    • mv................................
    • newgrp.........................
    • Partition table...............
    • passwd.........................
    • PATH.............................
    • pipe..............................
    • printenv........................
    • ps..................................
    • pstree...........................
    • pwd...............................
    • rm.................................
    • rmdir.............................
    • sed................................
    • set................................
    • sg..................................
    • sh..................................
    • shutdown......................
    • sleep.............................
    • slocate..........................
    • socket...........................
    • sort...............................
      • su..................................
      • sudo..............................
      • sudoedit........................
      • swapoff.........................
      • swapon/........................
      • tail................................
      • top................................
      • touch............................
      • type..............................
      • UID................................
      • umount.........................
      • unalias..........................
      • uname..........................
      • uniq..............................
      • unset............................
      • useradd........................
      • userdel..........................
      • wait...............................
      • wc.................................
      • whatis...........................
      • who...............................
      • whoami.........................
      • yes................................
      • Zombie.........................
      • ;....................................
      • () o {}...........................
      • /dev/null........................
      • /dev/sdterr....................
      • /dev/sdtin......................
      • /dev/sdtout...................
      • /etc/default/useradd.....
      • /etc/fstab......................
      • /etc/group
      • /etc/gshadow................
      • /etc/inittab....................
      • /etc/mtab......................
      • /etc/passwd
      • /etc/profile....................
      • /etc/shadow
      • /etc/skel........................
      • /etc/sudoers..................
      • /var/log/wtmp...............
      • &...................................
      • &&................................
      • |....................................

E. Mottola, P. Russo Linux e la shell Bash 2.0 La Shell TERMINALE In campo informatico, un terminale è un dispositivo hardware elettronico o elettromeccanico che viene usato per inserire dati all'interno di un computer o di un sistema di elaborazione e riceverli per la visualizzazione. Per estensione, il termine indica anche il dispositivo equivalente realizzato dal sistema operativo o tramite un emulatore software (terminale virtuale ). Il concetto di terminale, nelle sue diverse implementazioni, costituisce l'interfaccia tra le applicazioni con interfaccia testuale e i molteplici dispositivi di visualizzazione che queste possono usare. I primi terminali erano telescriventi ( TTY ), ovvero apparecchiature che stampavano i risultati dell'elaborazione su carta; successivamente si sono diffuse versioni a schermo. A conferma di ciò i terminali nei sistemi Unix e derivati vengono tutt'ora identificati con l'acronimo TTY seguito dal numero del terminale (es. tty3 ). Ovviamente i anche i terminali di Linux sono terminali virtuali, quindi si utilizza comunemente la nozione terminale come abbreviativo di terminale virtuale. Si può definire quindi un terminale, in Unix, come un'interfaccia, testuale o grafica, tramite la quale gli utenti possono interagire col sistema. Normalmente una distribuzione Linux per sistemi desktop avvia sette terminali di cui i primi sei sono shell testuali, mentre il settimo è dedicato al terminale che ospita la sessione grafica. Quando si avviano più sessioni grafiche, queste risiederanno nei terminali grafici successivi al settimo. Ci si può spostare tra i terminali premendo ALT + Fx , dove “ x è il numero del tasto funzione sulla tastiera e “ + ” significa contemporaneamente. Se si è nella sessione grafica, cioè si utilizza un'istanza del server X , ci si può recare in un altro terminale aggiungendo alla sequenza precedente il tasto CTRL , poiché le combinazioni ALT+Fx sono utilizzate per altri scopi. Riepilogando quindi: ● ALT + Fx Per muoversi tra i terminali ● CTRL+ALT + Fx Per spostarsi dalla sessione grafica ad un altro terminale. Nella sessione grafica è possibile utilizzare il terminale tramite un programma che lo emuli, consentendo le stesse operazioni del terminale standard. Utilizzando un programma di emulazione terminale, che è largamente personalizzabile, si ha la possibilità di utilizzare anche il mouse per inserire comandi ed estrarre del testo, ma si ha una velocità d'esecuzione inferiore rispetto al terminale standard, dove è comunque possibile utilizzare il mouse con opportune impostazioni di termcap. I programmi di emulazione terminale più utilizzati nella sessione grafica sono: ● xterm Lo standard, disponibile su tutti i desktop environment ● gnome-terminal Programma terminale del desktop Gnome ● kterm Programma terminale del desktop Kde. Con il mouse si può inserire del testo nella shell o estrarlo per copiarlo da qualche altra parte, anche nella shell stessa o in un editor di testi. Ciò che si sottolinea viene automaticamente copiato mentre per incollare quanto copiato si utilizza il tasto centrale del mouse, in assenza emulato premendo insieme i tasti sinistro e destro.

E. Mottola, P. Russo Linux e la shell Bash 2.0 La Shell TIPI DI COMANDI Esistono tre tipi di comandi che la shell può eseguire: ● interni ( built-in ) Funzioni elementari eseguite direttamente dalla shell, la loro esecuzione non provoca la creazione di un nuovo task poiché il codice fa parte dell'eseguibile stesso della shell ● esterni File contenenti programmi in formato eseguibile la cui esecuzione provoca la creazione di un nuovo task figlio della shell da cui sono avviati ● script File testuali in linguaggio shell, con permessi di esecuzione, contenente una serie di istruzioni e comandi interpretabili dalla shell. Quando si digita un comando, la shell verifica se si tratta di un comando interno (built-in). In caso positivo lo esegue, altrimenti crea un nuovo processo che esegue il comando. Questo processo (task) sarà figlio della shell da cui è stato eseguito il comando; nella sezione “Gestione Processi” ci sono maggiori dettagli. METACARATTERI La shell Bash mette a disposizione dei metacaratteri per poter lavorare con file e directory, ecco come vengono tradotti: ● ***** Una qualsiasi stringa di caratteri ●? Un solo carattere, qualsiasi ● [a-h] Un carattere compreso, nel set ASCII, tra ' a ' ed ' h ', cioè tra i valori ASCII di a e h[aei] Un carattere che sia tra ' a ' o ' e ' o ' i ', i caratteri sono in OR tra loro. ● [!aei] Un carattere che non sia ' a ' o ' e ' o ' i '. Altri metacaratteri sono: ● > Ridirezione dello standard output su file ● < Ridirezione dello standard input su file ● >> Ridirezione in modalità append dello standard output su file ● & Richiesta di esecuzione di un comando in background, il simbolo va messo subito dopo il comando ● ; separatore di comandi all'interno di una stessa riga. Il metacarattere punto e virgola ( ; ) serve a separare i comandi permettendo di eseguire più comandi in maniera sequenziale, cioè terminato uno inizia l'esecuzione del successivo. La ridirezione ed i processi in background sono trattati nelle relative sezioni. Notare che i metacaratteri, anche se utilizzano notazione simile alle espressioni regolari, sono diversi da queste, poiché i metacaratteri vengono interpretati diversamente. Questi servono normalmente per lavorare con file e directory, e sono interpretati ed utilizzati dalla direttamente dalla shell, mentre le espressioni regolari servono per definire un modello complesso di ricerca sopratutto all'interno dei file, e vengono utilizzate da particolari comandi chiamati filtri , che svolgono funzioni di ricerca e filtraggio dell'input.

E. Mottola, P. Russo Linux e la shell Bash 2.0 La Shell SCORCIATOIE La shell Bash offre diverse scorciatoie per renderne l'utilizzo decisamente più agevole e veloce: ● Tasto Tab Completa ciò che si sta scrivendo, se è univoco ● Tasti Freccia Il tasto su per navigare nell'elenco dei comandi digitati, tornando indietro cronologicamente, giù per scorrere in avanti la cronologia. Viene mostrata una riga per volta ● CTRL + R Cerca dinamicamente nella history (trattata in seguito) le righe che contengono la stringa digitata ● CTRL + H Cancella il carattere a sinistra del cursore, equivalente del tasto backspace ● CTRL + W Cancella l'ultima parola inserita ● CTRL + U Cancella l'intera riga ● CTRL + L Pulisce lo schermo (si può anche digitare il comando clear ). Conviene abituarsi presto ad un uso intensivo della funzione di autocompletamento, mediante la pressione del tasto Tab. Oltre che a velocizzare enormemente la scrittura di comandi e percorsi, questa la funzione permette di non sbagliare mai il nome di un comando o di un percorso, poiché se viene completato col tasto Tab, allora è sicuramente corretto, viceversa c'è di certo qualcosa di sbagliato. Se il tasto Tab non completa il comando o il percorso vuol dire che i caratteri fin ora digitati non rendono univoca la scelta del percorso o del comando, oppure che non esiste un comando o percorso che comincia per i caratteri fin ora digitati. Premendo il tasto Tab due volte di seguito, come se si facesse doppio click, verranno mostrate, se presenti, le possibili scelte disponibili, sempre tenendo in partendo da quanto digitato finora. La shell riesce a completare il nome di un comando perché nella variabile d'ambiente PATH (si veda la sezione apposita) sono definiti tutti i percorsi dei programmi eseguibili a cui si vuole fare accesso scrivendone anche solamente il nome, cioè dei comandi. Quindi la shell non completa genericamente tutti i nomi dei comandi, ma solo quelli che sono nelle locazioni specificate nella variabile PATH. E' ovvio che si può sempre specificare il percorso completo. Ad esempio se si scrive un qualsiasi percorso fino ad una directory e si preme due volte di seguito Tab, verranno mostrati i file in essa contenuti. Se invece si aggiunge allo stesso percorso una lettera, e si preme due volte il tasto Tab, verranno mostrati tutti i file che iniziano per quella lettera, se ne esistono. E' chiaro che una volta capito il meccanismo non bisognerà più ricordare quasi niente a memoria, al massimo le iniziali dei percorsi o dei comandi, poi basta il tasto Tab e eventualmente l'help dei comandi per trovare rapidamente ciò che serve. Esistono inoltre delle scorciatoie relative alla gestione dei processi: ● CTRL+C Termina forzatamente l'esecuzione del processo ● CTRL+Z Ferma temporaneamente il processo, cioè lo mette in background ● CTRL+D Termina l'input (esce dalla shell se la si sta usando) ● CTRL+S Interrompe l'output a schermo ● CTRL+Q Riattiva l'output a schermo. Si veda la sezione relativa alla gestione dei processi per maggiori dettagli.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Sintassi del documento SINTASSI DEL DOCUMENTO Di seguito è illustrato il modello utilizzato per rappresentare le informazioni riguardo ad un generico comando.

● comando

(eventuale significato acronimo) Breve descrizione di quello che fa il comando specificato. SINTASSI

  • comando [-flag] argomento [ file ] FLAG-X Descrizione dell'effetto del flag X sul comando ● -t stringa Descrizione dell'effetto del flag t seguita dal suo argomento stringa. ESEMPI
  1. comando -X argomento Descrizione dell'effetto del comando con il flag x. La voce SINTASSI descrive il modo, anche più di uno, con cui si può utilizzare comando. Rifacendoci allo standard di visualizzazione delle pagine di manuale nei sistemi Linux, tutto ciò che in questo documento è racchiuso tra [parentesi quadre] è da intendersi come opzionale. L' argomento del comando o di un suo flag è in corsivo , cosi come lo è l'eventuale file , con o senza il suo path (percorso) completo /percorso/file. L'argomento è in genere una stringa se si tratta di comandi che si comportano da filtri o nella gestione degli utenti, oppure un file, completo del suo percorso (assoluto o relativo) se si tratta di comandi che operano su file o directory. La voce FLAG elenca le opzioni maggiormente utilizzate del rispettivo comando, secondo l'esperienza degli autori. Tuttavia la maggior parte dei comandi descritti in questo documento contengono altri flag, per un utilizzo più approfondito è sempre necessario consultare l'unica fonte esaustiva: la pagina man del comando. Spesso anche i flag hanno argomenti, questo accade quando il comando può fare un'azione abbastanza complessa e quindi avere più argomenti per le varie opzioni disponibili. In questo documento sono spesso forniti ESEMPI di utilizzo dei comandi. In genere gli esempi sono omessi quando si tratta di comandi semplici o che non hanno particolarità di utilizzo. Gli esempi forniti risultano altre sì utili per comprendere sia le sottili differenze che possono portare ad un comportamento molto diverso del comando in questione, sia i vari modi di ottenere lo stesso effetto. Quando si è ritenuto importante ai fini della comprensione specificare l'output che il comando mostra sulla shell, esso è mostrato dopo il relativo esempio, riga per riga, sotto la voce OUTPUT. Nel caso di comandi interattivi è presente un breve elenco sotto la voce COMANDI.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Documentazione in linea

● info

Mostra la documentazione in formato Info del comando specificato. Info è stato pensato per sostituire man, ma man è ancora molto usato. SINTASSI

  • info nomecomando

● whatis

Ricerca una parola chiave nel suo database contenente brevi descrizioni dei comandi di sistema, ossia solo i campi NOME (NAME) delle rispettive pagine man di tutti i comandi. Ne mostra quindi i risultati sullo standard output, cercando solo le corrispondenze esatte della parola chiave. Il database di whatis è creato usando il comando makewhatis (/usr/sbin/makewhatis ). ESEMPIO

  1. whatis man OUTPUT
  • man (1) - format and display the on-line manual pages
  • man (1p) - display system documentation
  • man (7) - macros to format man pages
  • man.conf [man] (5) - configuration data for man

● apropos

Opera come whatis , la differenza è che mostra tutte le corrispondenze trovate, non solamente quella esatta nel nome del comando, ma anche le parole che contengono la stringa specificata, sia nel nome del comando sia nella loro descrizione. ESEMPI

  1. whatis grep OUTPUT
  • grep (1) - print lines matching a pattern
  • grep (1p) - search a file for a pattern
  1. apropos grep OUTPUT
  • egrep [grep] (1) - print lines matching a pattern
  • fgrep [grep] (1) - print lines matching a pattern
  • grep (1) - print lines matching a pattern
  • grep (1p) - search a file for a pattern
  • msggrep (1) - pattern matching on message catalog
  • pgrep (1) - look up or signal processes based on name

● history

Mostra sullo standard output lo storico dei comandi, di default gli ultimi 500, digitati nella shell dall'utente correntemente loggato , numerandoli progressivamente. Permette inoltre molte funzioni di manipolazione ed elaborazione della cronologia dei comandi.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Documentazione in linea ESEMPI

1. history Mostra gli ultimi 500 comandi digitati 2. history -c Elimina la cronologia dei comandi, ricominciando la numerazione. E' possibile utilizzare nella shell delle scorciatoie collegate a history: ● !n Per riutilizzare il comando n -esimo nella history ● !-n Per riutilizzare il comando già usato n comandi prima ● !string Per riutilizzare il comando più recente contenente stinguname Mostra alcune informazioni sul sistema. SINTASSI

  • man -[a] - [snrvmpio] FLAG-a ( --all ) Mostra tutte le informazioni dei flag successivi, nell'ordine in cui sono indicate i flag ● -s ( --kernel-name ) Nome del kernel in uso ● -n ( --nodename ) Hostname del calcolatore, il nome del suo nodo nella rete ● -r ( --kernel-release ) Release del kernel in uso ● -v ( --kernel-version ) Versione del kernel in uso ● -m ( --machine ) Nome dell'architettura della CPU (es. i686) ● -p ( --processor ) Tipo di processore o “unknown” se non viene riconosciuto automaticamente ● -i ( --hardware-platform ) Tipo di piattaforma hardware o “unknown” se non viene riconosciuta automaticamente ● -o ( --operating-system ) Sistema operativo (es. GNU/Linux). ESEMPI 1. uname -p OUTPUT AMD Athlon(tm) 64 X2 Dual Core Processor 6200+ 2. uname -roms OUTPUT
  • Linux 2.6.27-gentoo-r2 x86_64 GNU/Linux Notare che l'ordine di inserimento dei flag non viene rispettato nell'output, poiché le informazioni vengono sempre elencate nell'ordine in cui sono stati elencati sopra i flag, indipendentemente quindi dall'ordine con cui sono utilizzate nel comando.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Permessi di accesso Se è presente il permesso ci sarà la lettera corrispondente ( r , w , x ), sempre nell'ordine indicato, viceversa al suo posto ci sarà un trattino ( ). Significato dei permessi: ● file ordinari

  1. r Leggere il contenuto
  2. w Modificare il contenuto
  3. x Eseguire il file (ha senso per file binari e script). ● file speciali
  4. r Leggere dal device (input)
  5. w Scrivere sul device (output)
  6. x Non significativo. ● directory
  7. r Leggere il contenuto della directory
  8. w Modificare la directory: aggiungere, rimuovere o rinominare file al suo interno
  9. x Accesso (scansione) della directory: leggere, modificare o eseguire i file in essa contenuti. ESEMPI
  10. - rwx rw- r-- Sul file ordinario ( - iniziale) l'utente proprietario ( rwx , primo blocco da tre caratteri) può leggere ( r ), scrivere ( w ) ed eseguire il file ( x ). Il gruppo proprietario ( rw- , secondo blocco da tre caratteri) può leggere ( r ) e scrivere ( w ) il file ma non eseguirlo ( - ). Gli altri utenti ( r-- , terzo blocco da tre caratteri) possono solamente leggere( r ) il file.
  11. d rwx r-x r-x Sulla directory ( d iniziale) l'utente proprietario ( rwx , primo blocco da tre caratteri) può leggere ( r ), scrivere ( w ) ed eseguire il file ( x ). Sia i membri del gruppo proprietario che tutti gli altri utenti ( r-- , secondo e terzo blocco da tre caratteri) possono solamente leggere( r ) il file. Esiste un altro modo per rappresentare equivalentemente i tre blocchi da tre caratteri della ACL, esso consiste nell'utilizzare solamente tre cifre ottali (da 0 a 7), es 775. Ognuna di queste tre cifre corrisponde ai tre blocchi precedentemente descritti, sempre nello stesso ordine, di conseguenza indica in maniera equivalente i permessi di accesso per ognuno dei tre soggetti. Ogni cifra ottale si può espandere quindi nella corrispondente sequenza di tre cifre binarie, del tipo 010. Le tre cifre possono ovviamente essere solo 0, ad indicare la mancanza del permesso, oppure 1 se questo è presente. Ognuna di queste tre cifre è chiaramente associata ad uno dei tre possibili permessi precedentemente illustrati, sempre nell'ordine rwx. Quindi ad esempio 010 equivale a -w- , in quanto la cifra che indica la presenza del permesso ( 1 ) è presente solo nella seconda posizione, quella occupata appunto da w , il permesso di modifica/scrittura.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Permessi di accesso Per tradurre questa la stringa di tre cifre binarie nella corrispondente cifra ottale bisogna sommare tre cifre che sono:

  1. 22 = 4 Se è presente il permesso di lettura ( r )
  2. 21 = 2 Se è presente il permesso di scrittura ( w )
  3. 20 = 1 Se è presente il permesso di esecuzione ( x ). La somma ottenuta è una combinazione unica dei tre numeri precedenti e conterrà quindi l'informazione dei permessi consentiti al soggetto in questione. Le tre cifre ottali, come specificato in precedenza, descriveranno quindi univocamente i permessi di accesso al file relativi: la prima al proprietario, la seconda al gruppo proprietario, la terza a tutti gli altri utenti. ACL di default dopo la creazione di: ● File ordinari 644 cioè - rw- r-- r-- ● Directory 755 cioè d rwx r-x r-x ESEMPI
  4. 764 L'utente proprietario, la cui cifra associata è 7 (4+2+1) corrispondente a rwx , può leggere ( r ), scrivere ( w ) ed eseguire ( x ) il file. Il gruppo proprietario, la cui cifra associata è 6 (4+2+0) corrispondente a rw- , può leggere ( r ) e scrivere ( w ) il file ma non eseguirlo. Gli altri utenti, la cui cifra associata è 4 (4+0+0) corrispondente a r-- , possono solamente leggere ( r ) il file.
  5. 644 L'utente proprietario, la cui cifra associata è 6 (4+2+0) corrispondente a rw- , può leggere ( r ) e scrivere ( w ) il file ma non eseguirlo. Il gruppo proprietario così come gli altri utenti, la cui cifra associata ad entrambi è 4 (4+0+0) corrispondente a r-- , possono solamente leggere ( r ) il file.
  6. 755 L'utente proprietario, la cui cifra associata è 7 (4+2+1) corrispondente a rwx , può leggere ( r ), scrivere ( w ) ed eseguire ( x ) il file. Il gruppo proprietario cosi come gli altri utenti, la cui cifra associata ad entrambi è 5 (4+0+1) corrispondente a r-x , può leggere ( r ) ed eseguire ( x ) il file ma non modificarlo.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Permessi di accesso

● chown

(change owner) Cambia l'utente proprietario, il gruppo proprietario (o entrambi) dei file specificati. Per cambiare anche o solo il gruppo proprietario bisogna farlo precedere da un punto (. ). SINTASSI

  • chown [-R] [ utente ] [.] [ gruppo ] file FLAG-R Cambia i permessi ricorsivamente, cioè proseguendo l'operazione nelle eventuali subdirectory. ESEMPI
  1. chown utente1 /percorso/file_esempio file _ esempio avrà come proprietario utente
  2. chown -R utente1.gruppoB /percorso/directory_esempio directory _ esempio e tutti i suoi file e subdirectory avranno come proprietario utente1 e gruppoB come gruppo proprietario
  3. chown .gruppoB /percorso/file_esempio file _ esempio avrà come gruppo proprietario gruppoB.

● chgrp

(change group) Cambia il gruppo proprietario dei file specificati. SINTASSI

  • chgrp [-R] nuovo_gruppo lista_file. FLAG-R Cambia i permessi ricorsivamente, cioè proseguendo l'operazione nelle eventuali subdirectory. ESEMPIO
  1. chgrp gruppoB /percorso/file_esempio file _ esempio avrà come nuovo gruppo proprietario gruppoB.

E. Mottola, P. Russo Linux e la shell Bash 2.0 Gestione file e directory GESTIONE FILE E DIRECTORY DIRECTORY DI LINUX In Linux le directory sono dei file che contengono tanti oggetti, cioè tanti directory- entry quanti sono i file in esso contenuti, sempre seguendo la logica Unix: “ tutto è un file ”. Questo semplice ma efficacissimo meccanismo, unito alla possibilità di effettuare dei collegamenti tra di esse (vedesi paragrafo Link) ed avere permessi particolareggiati su ognuna, permette una estrema flessibilità di gestione dell'albero delle directory, nonché di ospitare strutture molto complesse di file ed un numero elevato di subdirectory, il tutto molto semplicemente. In ogni directory sono presenti due file nascosti, che hanno come nome punto (. ) e doppio punto ( .. ). Il file punto (. ) è un riferimento alla directory stessa, mentre il file doppio punto ( .. ) è un riferimento alla relativa directory padre. L'unica eccezione è rappresentata dalla directory radice, o root-directory ( / ) nella quale il file punto e doppio punto sono il realtà lo stesso file, dato che non esiste per definizione una directory padre di quella radice. Le directory utilizzate normalmente da Linux, tenendo presente che qualcosa può cambiare tra una distribuzione e l'altra, sono:

  • / Directory radice del sistema, chiamata root-directory
  • /boot Contiene l'occorrente per l'avvio di Linux
  • /bin Eseguibili di sistema, accessibili da tutti gli utenti
  • /dev File speciali per i dispositivi
  • /etc File di configurazione dei programmi e servizi di sistema
  • /home Contiene le home-directory degli utenti del sistema
  • /media Mount-point di device a blocchi (hard-disk removibili, CD-ROM, etc.)
  • /mnt Come /media
  • /opt Software non pacchettizzato e macrosoftware
  • /proc File virtuali di informazioni sul sistema
  • /root Home-directory del superuser
  • /sbin Comandi e programmi riservati al superuser
  • /tmp File temporanei
  • /usr Tutti i programmi installati
  • /var Dati temporanei che vengono modificati quando il sistema lavora. Ecco nel dettaglio cosa contiene ogni sub-directory di quella radice in un sistema Linux: ● / Directory radice nella quale viene montata all'avvio la partizione principale del sistema.