Crea sito
29 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

LINUX COMMAND LINE 9- I PERMESSI

10 min read

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.

[[email protected] ~]$ > foo.txt

[[email protected] ~]$ 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.

[[email protected] ~]$ > foo.txt

[[email protected] ~]$ ls -l foo.txt

-rw-rw-r– 1 me me 0 2018-03-06 14:52 foo.txt

[[email protected] ~]$ chmod 600 foo.txt

[[email protected] ~]$ 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

Per specificare chi è interessato, viene utilizzata una combinazione dei caratteri u, g, oe a, come mostrato nella Tabella 9-5.

Tabella 9-5: notazione simbolica chmod

Simbolo                 Significato

u                                Abbreviazione di “utente”, ma indica il proprietario del file o della directory.

g                                Proprietario del gruppo.

o                                Abbreviazione di “altri”, ma significa mondo.

a                                Abbreviazione di “all”. Questa è una combinazione di u, g e o.

Se non viene specificato alcun carattere, verrà assunto “tutto”. L’operazione può essere un + che indica che deve essere aggiunta un’autorizzazione, un – che indica che un’autorizzazione deve essere tolta o un = che indica che devono essere applicate solo le autorizzazioni specificate e che tutte le altre devono essere rimosse. Le autorizzazioni sono specificate con i caratteri r, w e x. La Tabella 9-6 fornisce alcuni esempi di notazione simbolica.

Tabella 9-6: esempi di notazione simbolica chmod

Notazione                Significato

u + x                          Aggiungi autorizzazione di esecuzione per il proprietario.

u-x                             Rimuovi il permesso di esecuzione dal proprietario.

+ x                             Aggiungi autorizzazione di esecuzione per il proprietario, il gruppo e il mondo.

Ciò equivale a + x.

o-rw                          Rimuovere le autorizzazioni di lettura e scrittura da chiunque oltre al proprietario e al          proprietario del gruppo.

go = rw                     Imposta il proprietario del gruppo e chiunque, oltre al proprietario, abbia le autorizzazioni di lettura e scrittura. Se il proprietario del gruppo o il mondo in precedenza avevano il permesso di esecuzione, viene rimosso.

u + x, go = rx            Aggiungi l’autorizzazione di esecuzione per il proprietario e imposta le autorizzazioni per il gruppo e gli altri per la lettura e l’esecuzione. Le specifiche multiple possono essere separate da virgole.

Alcune persone preferiscono usare la notazione ottale e alcune persone apprezzano molto il simbolico. La notazione simbolica offre il vantaggio di consentire di impostare un singolo attributo senza disturbare nessuno degli altri. Dai un’occhiata alla pagina man di chmod per maggiori dettagli e un elenco di opzioni. Un avvertimento riguardo all’opzione –recursive: agisce sia sui file che sulle directory, quindi non è così utile come speriamo perché raramente vogliamo che file e directory abbiano le stesse autorizzazioni.

Translate »