mercoledì 19 marzo 2008

Utenti e Permessi su Linux

Leggendo il post di Akel sul file system di linux, mi è venuto in mente questa cosa... Diciamo che l'articolo, per chi è un po che usa il Pinguino potrebbe essere scontato, ma per chi è appena sopraggiunto dal vecchio windows (winzoz) credo che siano informazioni utili, poichè i due sistemi adottano protezioni completamente diverse. Bando alle ciancie, iniziamo con le cose serie.

Nei vecchi windows, chi ha usato il versioni ormai storiche penso che mi capisca molto bene, l'utente era unico. Ora esso offre la possibilità di creare molti utenti, differenziandoli per i loro privilegi. Le protezioni ai file, sotto windows sono dati da 4 bit:

bit di SOLA LETTURA 1 = il file può essere solo letto
bit di ARCHIVIO 1 = è già stato fatto il backup del file
bit di NASCOSTO 1 = il file non è normalmente visibile
bit di SISTEMA 1 = il file è un file di sistema di windows

Questo insieme di bit è specificato per ogni file, nei suoi attributi. Non mi dilungherò qui su windows, mi sembra evidente che la protezione è un po' "spartana".

Per quanto riguarda Linux invece, esso già dalle prime versioni divide gli utente in 4 categorie, e i permessi su ogni file o directory sono strutturati in 10 caratteri.
Categorie di utenti in linux:

  1. AMMINISTRATORE (utente ROOT)
  2. PROPRIETARIO - CREATORE del file
  3. GRUPPO
  4. ALTRI

Il proprietario è logicamente l'utente che ha creato il file, esso deve poter controllare cosa può essere fatto sul file e da chi.
Il gruppo è il gruppo di utenti a cui appartiene l'utente creatore del file. Questo perchè, in una macchina multiutente, l'amministratore può creare più gruppi di utenti.
Il proprietario del file può appartenere a più gruppi, ma non a tutti contemporaneamente.
Gli altri sono TUTTI gli altri utenti che non fanno parte delle prime due categorie.
L'utente root è l'amministratore del sistema, ed ha permessi e privilegi su TUTTO.
Da una parte abbiamo diviso gli utenti, ora dividiamo le operazioni consentite. Esse sono essenzialmente 3


  1. READ (operazione di lettura)
  2. WRITE(operazione di scrittura)
  3. EXECUTE(operazione di esecuzione)
E ora viene l'applicazione di tutto. Se scorrete indietro l'articolo, vi dissi che linux adottava 10 caratteri per la protezione. Essi sono visibili per ogni file. Se andate da terminale e digitate il comando ls -l vi apparirà un elenco dettagliato dei file contenuti nella directory corrente. All'inizio della descrizione del file ci sarà una stringa fatta più o meno così per tutti:

-rwxr-xr--


Quelli sono i 10 caratteri che identificano i permessi. Il primo identifica il TIPO di file
  1. se c'è un "-" allora è un file
  2. se c'è una "d" allora è una directory
  3. se c'è una "l" allora il file è un SOFT link

Gli altri 9 caratteri sono da considerarsi a TRIPLETTE. Ogni tripletta è formata dai permessi READ - WRITE - EXECUTE. Dove è presente la lettera corrispondente all'operazione significa operazione CONSENTITA. Dove è presente "-" NON è permesso eseguire quel tipo di operazione.
  • La prima tripletta si riferisce all'utente CREATORE del file. Nel nostro caso, il creatore ha TUTTI i permessi abilitati ossia può leggere scrivere ed eseguire il file
  • La seconda si riferisce al GRUPPO. Nel nostro esempio, il gruppo a cui appartiene l'utente creatore può solo leggere ed eseguire tale file
  • La terza si riferisce agli ALTRI. TUTTI gli utenti al di fuori del creatore e del gruppo dell'utente creatore possono SOLO leggere il file.
Naturalmente possiamo pure cambiare tali permessi. Ora, con l'evoluzione del pinguino di può fare sia per via grafica, che non. Per gli utenti a cui piace un po' di più "smanettare" con il proprio pc, utilizzare la shell penso che sia la scelta più azzeccata.

Butto qua quindi due comandi, per chi è curioso di usarli può provarli dalla sua shell:
  1. chmod cambia i permessi di un singolo file
  2. umask imposta i permessi che i MIEI file ereditano al momento della creazione.....attenti, umask ragiona in logica NEGATA....
chmod [opzioni] [utente]<+ | - | =>[r,w,x][nome_file]
Nel campo utente usate:
  • u per USER, ossia il creatore del file
  • g per GROUP, ossia il gruppo
  • o per OTHERS, ossia tutti gli altri
  • a per ALL, ossia per TUTTE e 3 le precedenti categorie(opzione di default)
  • + per aggiungere e - per togliere
NOTA: dovete essere il proprietario del file a cui state per modificare i permessi, altrimenti dovrete essere root.
Esempi:
chmod +x pippo //per dare i permessi di esecuzione a tutti al file pippo
chmod o-x pippo //per togliere i permessi dell'esecuzione di pippo dal gruppo ALTRI(other)

Il comando umask :
  • usate il comando: umask -S per conoscere i permessi attuali che ereditano i miei file alla creazione.
  • umask per cambiarli.
In permessi dovete scrivere 3 cifre OTTALI, ossia da 0 a 7. Ogni cifra identifica le triplette nell'ordine corrispondente(utente, gruppo, altri), e sono da 0 a 7 perchè le cifre sono da considerarsi 3 bit. In binario, con 3 bit si possono rappresentare tutti i numeri decimali da 0 a 7; bit a uno significa permesso consentito, bit a zero permesso negato.

ad esempio:
rwx-wx--- ==> 111 011 000
111 ==> 000 (perchè umask nega l'ingresso) ==> 0
011 ==> 100 ==> 4
000 ==> 111 ==> 7

quindi, se voglio impostare i permessi come nell'esempio a tutti i file che crereò da ora in poi digitare da terminale:
umask 047

così facendo a i file che creo, do' a me stesso tutti i permessi, do' i permessi di scrittura ed esecuzione al mio gruppo, e nessun permesso a tutti gli altri utenti.

Spero di essere stato chiaro negli esempi, se li proverete comunque scoprirete che non è così difficile.... per eventuali aiuti siamo a vostra disposizione.

1 commento:

  1. Sto passando molto lentamente a Linux grazie alla facilità di uso di Ubuntu e adesso inizio la fase approfondimento.
    Grazie delle piccole guide che inserisci in questo BLOG.

    Daniele

    RispondiElimina