I sistemi operativi della tradizione Unix differiscono da quelli della tradizione MS-DOS in quanto non sono solo sistemi multitasking ma anche sistemi multiutente.
Cosa significa esattamente?
Ciò significa che più di una persona può utilizzare il computer contemporaneamente. Mentre un computer tipico avrà probabilmente solo una tastiera e un monitor, può comunque essere utilizzato da più di un utente. Ad esempio, se un computer è collegato a una rete o a Internet, gli utenti remoti possono accedere tramite ssh (shell protetta) e utilizzare il computer. In effetti, gli utenti remoti possono eseguire applicazioni grafiche e far apparire l’output grafico su un display remoto. Il sistema X Window supporta questo come parte del suo design di base.La capacità multiutente di Linux non è una recente “innovazione”, ma piuttosto una funzionalità che è profondamente integrata nella progettazione del sistema operativo.Considerando l’ambiente in cui è stato creato Unix, questo ha perfettamente senso.Anni fa, prima che i computer fossero “personali”, erano grandi, costosi e centralizzati. Un tipico sistema informatico universitario, ad esempio, consisteva in un grande computer centrale situato in un edificio e terminali situati in tutto il campus, ciascuno collegato al grande computer centrale.
Il computer supporterebbe molti utenti contemporaneamente. Per renderlo in pratico, è stato ideato un metodo per proteggere gli utenti l’uno dall’altro.
Alle azioni di un utente non è permesso di bloccare il computer, né un utente potrebbe interferire con i file appartenenti a un altro utente. In questo capitolo, esamineremo questa parte essenziale della sicurezza del sistema e introdurremo i seguenti comandi:
id Visualizza l’identità dell’utente
chmod Cambia la modalità di un file
umask Imposta le autorizzazioni di file predefinite
su Esegue una shell come un altro utente
sudo Esegue un comando come un altro utente
chown Cambia il proprietario di un file
chgrp Modifica la proprietà del gruppo di un file
passwd Modifica la password di un utente
Proprietari, membri del gruppo e chiunque altro
Durante l’esplorazione del sistema nel capitolo 3, potremmo aver riscontrato un problema durante il tentativo di esaminare un file come
/ etc / shadow.
[me @ linuxbox ~] $ file / etc / shadow
/ etc / shadow: file normale, nessuna autorizzazione di lettura
[me @ linuxbox ~] $ less / etc / shadow
/ etc / shadow: autorizzazione negata
Il motivo di questo messaggio di errore è che, come utenti regolari, non abbiamo l’autorizzazione per leggere questo file. Nel modello di sicurezza Unix, un utente può possedere file e directory. Quando un utente possiede un file o una directory, l’utente ha il controllo sul suo accesso. A loro volta, gli utenti possono appartenere a un gruppo composto da uno o più utenti a cui i proprietari hanno concesso l’accesso a file e directory. Oltre a garantire l’accesso a un gruppo, un proprietario può anche concedere una serie di diritti di accesso a tutti, che in termini Unix è indicato come il mondo.
Per scoprire le informazioni sulla tua identità, usa il comando id.
[me @ linuxbox ~] $ id
uid = 500 (me) gid = 500 (me) gruppi = 500 (me)
Diamo un’occhiata all’output.
Quando vengono creati account utente, agli utenti viene assegnato un numero chiamato ID utente (uid), che viene quindi associato a un nome utente. All’utente viene assegnato un ID gruppo (gid) e può appartenere a gruppi aggiuntivi. L’esempio precedente proviene da un sistema Fedora. Su altri sistemi, come Ubuntu, l’output potrebbe apparire leggermente diverso.
[me @ linuxbox ~] $ id
uid = 1000 (me) gid = 1000 (me) gruppi = 4 (adm), 20 (dialout), 24 (cdrom), 25 (floppy), 29 (audio), 30 (dip), 44 (video), 46 (plugdev), 108 (lpadmin), 114 (admin), 10 0 (me)
Come possiamo vedere, i numeri uid e gid sono diversi in Ubuntu.
Questo semplicemente perché Fedora inizia la sua numerazione degli account utente regolari a 500, mentre Ubuntu inizia a 1.000. Possiamo anche vedere che l’utente Ubuntu appartiene a molti più gruppi. Ciò ha a che fare con il modo in cui Ubuntu gestisce i privilegi per dispositivi e servizi di sistema. Quindi, da dove provengono queste informazioni?
Come tante cose di Linux, questo proviene da un paio di file di testo. Gli account utente sono definiti nel file / etc / passwd, mentre i gruppi sono definiti nel file / etc / group. Quando vengono creati account e gruppi di utenti, questi file vengono modificati insieme a etc / shadow, che contiene informazioni sulla password dell’utente. Per ogni account utente, il file / etc / passwd definisce il nome utente (login), uid, gid, il nome reale dell’account, la home directory e la shell di accesso. Se esaminiamo i contenuti di / etc / passwd e / etc / group, notiamo che oltre ai normali account utente, ci sono account per il superutente (uid 0) e vari altri utenti del sistema.
Nel prossimo capitolo, quando tratteremo i processi, vedremo che alcuni di questi “utenti” sono, in effetti, piuttosto impegnati. Mentre molti sistemi simili a Unix assegnano utenti regolari a un gruppo comune come gli utenti, la moderna pratica di Linux è quella di creare un gruppo unico a un solo membro con lo stesso nome dell’utente.
Ciò semplifica alcuni tipi di assegnazione di autorizzazioni.
Lettura, scrittura ed esecuzione
I diritti di accesso a file e directory sono definiti in termini di accesso in lettura, accesso in scrittura e accesso all’esecuzione. Se osserviamo l’output del comando ls, possiamo ottenere qualche indizio su come questo è implementato.
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r– 1 me me 0 2018-03-06 14:52 foo.txt
I primi 10 caratteri dell’elenco sono gli attributi del file.
Il primo di questi caratteri è il tipo di file.
La Tabella 9-1 descrive i tipi di file che è più probabile che tu veda (ci sono anche altri tipi meno comuni).
Tabella 9-1: Tipi di file
Tipo di file Attributi
– Un file normale.
d Una directory.
l Un collegamento simbolico. Si noti che con i collegamenti simbolici, gli attributi di file rimanenti
sono sempre rwxrwxrwx e sono valori fittizi. Gli attributi del file reale
sono quelli del file a cui punta il collegamento simbolico.
c Un file speciale di carattere. Questo tipo di file si riferisce a un dispositivo che gestisce i dati
come flusso di byte, ad esempio un terminale o / dev / null.
b Un file speciale a blocchi. Questo tipo di file fa riferimento a un dispositivo che gestisce i dati blocchi, come un disco rigido o un’unità DVD.
I rimanenti nove caratteri degli attributi del file, chiamati modalità file, rappresentano le autorizzazioni di lettura, scrittura ed esecuzione per il proprietario del file, il proprietario del gruppo del file e tutti gli altri.
Owner Group World
rwx rwx rwx
La Tabella 9-2 documenta l’effetto che hanno gli attributi della modalità r, w e x quando sono impostati su file e directory
Tabella 9-2: attributi di autorizzazione
Attributi File Directories
r Consente di aprire e leggere un file. Consente ai contenuti di una directory di essere elencato se è impostato anche l’attributo di esecuzione.
w Consente di scrivere o troncare un file tuttavia, questo attributo non consente di rinominare o eliminare i file. La possibilità di eliminare o rinominare i file è determinata dagli attributi della directory. Consente di creare, eliminare e rinominare i file all’interno di una directory se è impostato anche l’attributo di esecuzione.
x Consente a un file di essere trattato come un programma ed eseguito. Anche i file di programma scritti in linguaggi di scripting devono essere impostati come leggibili per essere eseguiti.
La Tabella 9-3 fornisce alcuni esempi di impostazioni degli attributi di file.
Tabella 9-3: esempi di attributi di autorizzazione
Attributi file Significato
-rwx —— Un file normale leggibile, scrivibile ed eseguibile dai file proprietario. Nessun altro ha accesso.
-rw ——– Un file normale che è leggibile e scrivibile dal proprietario del file. Nessun altro ha accesso.
rw-r – r– Un file normale che è leggibile e scrivibile dal proprietario del file. I membri del gruppo di proprietari del file possono leggere il file. Il file è leggibile da tutti.
-rwxr-xr-x Un file normale leggibile, scrivibile ed eseguibile dal file proprietario. Il file può essere letto ed eseguito da tutti gli altri.
-rw-rw — Un file normale che è leggibile e scrivibile dal proprietario del file e solo membri del proprietario del gruppo del file.
lrwxrwxrwx Un collegamento simbolico. Tutti i collegamenti simbolici hanno autorizzazioni “fittizie”. Le autorizzazioni reali vengono mantenute con il file effettivo indicato dal simbolico collegamento.
drwxrwx — Una directory. Il proprietario e i membri del gruppo proprietario possono accedere alla directory e creare, rinominare e rimuovere i file all’interno della stessa directory.
drwxr-x — Una directory. Il proprietario può inserire la directory e creare, rinominare, ed elimina i file all’interno della directory. Membri del gruppo del proprietario possono accedere alla directory ma non possono creare, eliminare o rinominare i file.
chmod: cambia modalità file
Per modificare la modalità (autorizzazioni) di un file o directory, utilizzare il comando chmod. Tener presente che solo il proprietario del file o il superutente può modificare la modalità di un file o directory. chmod supporta due modi distinti di specificare i cambiamenti di modalità.
-
Rappresentazione del numero ottale
-
Rappresentazione simbolica
Tratteremo prima la rappresentazione del numero ottale. Con la notazione ottale, usiamo i numeri ottali per impostare il modello delle autorizzazioni desiderate. Poiché ogni cifra in un numero ottale rappresenta tre cifre binarie, questa mappa si adatta perfettamente allo schema utilizzato per memorizzare la modalità file. La tabella 9-4 mostra cosa intendiamo.
Che cosa è ottale e che cosa significa?
Ottale (base 8) e suo cugino, esadecimali (base 16), sono sistemi numerici spesso usati per esprimere numeri sui computer. Noi umani, a causa del fatto che noi (o almeno la maggior parte di noi) siamo nati con 10 dita, contiamo usando un sistema di 10 numeri base. I computer, d’altra parte, sono nati con un solo dito e quindi fanno tutto il loro conteggio in binario (base 2). Il loro sistema di numerazione ha solo due numeri, 0 e 1. Quindi, in binario, il conteggio è simile al seguente:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011.. .
In ottale, il conteggio viene effettuato con i numeri da zero a sette, in questo modo:
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21.. .
Il conteggio esadecimale utilizza i numeri da zero a nove più le lettere
Da A a F.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13.. .
Mentre possiamo vedere il senso in binario (dato che i computer hanno solo un dito), a cosa servono l’ottale e l’esadecimale? La risposta ha a che fare con la convenienza umana. Molte volte, piccole porzioni di dati sono rappresentate sui computer come schemi di bit.Prendi, ad esempio, un colore RGB. Sulla maggior parte dei display dei computer, ogni pixel è composto da tre componenti di colore: otto bit di rosso, otto bit di verde e otto bit di blu. Un bel blu medio sarebbe un numero di 24 cifre.
010000110110111111001101
Ti piacerebbe leggere e scrivere questo tipo di numeri tutto il giorno? Non penso proprio. Ecco dove sarebbe utile un altro sistema di numerazione. Ogni cifra in un numero esadecimale rappresenta quattro cifre in binario. In ottale, ogni cifra rappresenta tre cifre binarie. Quindi, il nostro blu medio a 24 cifre potrebbe essere condensato in un numero esadecimale a sei cifre, 436FCD. Perché le cifre nel numero esadecimale “allineano” con i bit in il numero binario, possiamo vedere che il componente rosso del nostro colore è 43, il 6F verde e il CD blu. In questi giorni, la notazione esadecimale (spesso detta esadecimale) è più comune dell’ottale, ma come vedremo presto, la capacità dell’ottale di esprimere tre bit binari sarà molto utile. . .
Table 9-4: File Modes in Binary and Octal
Octal Binary File mode
0 000 —
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx
Usando tre cifre ottali, possiamo impostare la modalità file per il proprietario, il proprietario del gruppo e il mondo.
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r– 1 me me 0 2018-03-06 14:52 foo.txt
[me@linuxbox ~]$ chmod 600 foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw——- 1 me me 0 2018-03-06 14:52 foo.txt
Passando l’argomento 600, siamo stati in grado di impostare le autorizzazioni del proprietario per leggere e scrivere rimuovendo tutte le autorizzazioni dal proprietario del gruppo e dal mondo. Anche se ricordare la mappatura da ottale a binaria può sembrare scomodo, di solito dovrai usarne solo alcuni comuni:
7 (rwx), 6 (rw-), 5 (r-x), 4 (r–) e 0 (—).
chmod supporta anche una notazione simbolica per specificare le modalità del file.
La notazione simbolica è divisa in tre parti.
-
Chi influenzerà la modifica
-
Quale operazione verrà eseguita
-
Quale autorizzazione verrà impostata