Attributi e permessi sui file e sulle directory 
sabato 15 luglio 2006, 08:21
Linux è un sistema multiutente che offre la possibilità di associare permessi di azioni (lettura, scrittura , esecuzione) a singoli file e/o directory. Quando vengono applicati questi permessi ad un file o ad una directory, vengono applicati su tre livelli distinti:
- utente proprietario: che è colui che ha creato il file;
- gruppo proprietario: cioè il gruppo di utenti al quale il proprietario appartiene;
- il resto degli utenti;
Ciascun utente del sistema ha un suo numero identificativo detto UID (User IDentifier) ed un numero identificatore del gruppo GID (Group IDentifier) ed in base a questi si definisce il ruolo di ogni utente nei confronti dei file.
Se proviamo quindi a dare il comando “ls -l” notiamo che la prima parte dell'output che ci viene fornita riguarda i permessi sui file:



Notiamo che ci sono 10 campi, tralasciando il primo (che spiegheremo dopo), possiamo suddividere quelli restanti nel seguente modo:



Quindi il 2°, il 3° e il 4° riguardano i permessi dell'utente, il 5°, il 6° e il 7° riguardano i permessi del gruppo, il 8°, il 9° e il 10° riguardano i permessi di tutti gli altri utenti.
r: diritto di lettura (read);
w: diritto di scrittura (write);
x: diritto di esecuzione (execute);
Vediamo ora come cambiare i permessi ai file.
Il comando che ci interessa è “chmod” (man chmod) e si lancia nel seguente modo:
chmod permessi_da_assegnare file_interessato
Ci sono due modi per cambiare i permessi ai file, uno tramite lettere ed uno tramite numeri.

1)Tramite numeri (più comodo): si associa ad ognuno dei permessi un numero, in questa sequenza:
read --> 4
write --> 2
execute --> 1
a questo punto consideriamo i permessi da assegnare come un numero a 3 cifre, dove le centinaia indicano l'utente, le decine indicano il gruppo e le unità indicano gli altri. Sommiamo per ogni categoria i numeri dei permessi che vogliamo assegnare e scriviamo il numero.
Ad esempio il primo file, avrà i permessi settati a 777, infatti si ha che l'utente ha tutti i permessi, quindi 4 per la lettura, 2 per la scrittura e 1 per l'esecuzione, quindi 4+2+1=7 (centinaia) stessa cosa anche per gli altri.
Se voglio dare ad un file i permessi si lettura a tutti, di esecuzione al gruppo e di scritture all'utente, che permessi gli devo passare?
Risolviamo:
Utente: scrittura e lettura --> 4+2=6
Gruppo: lettura ed esecuzione --> 4 +1=5
Altri: lettura --> 4
sommando si avrà 654 ed il comando da dare sarà: chmod 651 nome_file
NB: se vogliamo togliere tutti i permessi, basta settare un campo a 0.

2)Tramite lettere (il mio preferito): bisogna tenersi a mente i significati di 4 lettere,
u: user;
g: group;
o: others;
a: all=u+g+o;
a questo punto consideriamo i permessi che vogliamo dare al file.
Se consideriamo sempre il primo file, avremo i parametri settati come a+rwx.
Se voglio dare ad un file i permessi si lettura a tutti, di esecuzione al gruppo e di scritture all'utente, che permessi gli devo passare?
Risolviamo:
Utente: scrittura e lettura --> u+rw
Gruppo: lettura ed esecuzione --> g+rx
Altri: lettura --> o+r
A questo punto stà la grossa differenza con il metodo precedente, poiché prima lanciando solamente una volta il comando chmod abbiamo cambiato i parametri, mentre questa volta ci toccherà lanciarlo ben 3 volte
chmod u+rw nome_file
chmod g+rx nome_file
chmod o+r nome_file


Infine ci sono altri 3 tipo di permessi, meglio definiti come “Attributi”, questi sono: SUID, SGID, STICKY e più precisamente sui file si imposta SUID, SGID, mentre sulle directory SGID, STICKY.
Questi attributi sono INDICATI nel primo campo (quello che abbiamo saltato prima):
- SUID (set user id): se esso è settato in un file eseguibile che contiene un file eseguibile, il sistema cambia temporaneamente lo User-ID dell'utente corrente con quello del creatore di quel file durante l'esecuzione del programma. Il cambiamento perdura SOLO per l'esecuzione del programma specificato contenuto nel file eseguibile. Un esempio di SUID settato è il comando passwd che consente di cambiare la password al proprio utente.
- SGID (set group id) valgono le stesse considerazioni fatte per il SUID, cambia solo il riferimento che è il gruppo e non l'utente.
- STICKY: se è settato consente di cancellare i file al suo interno solamente al proprietario, anche se l'utente ha i permessi di scrittura su quel file.

Il primo campo, a seconda del simbolo che ha impostato indica:
d = Directory;
- = File;
l = Link;
b = Block device;
c = Character device;
Dove b e c risiedono all'interno della directory dei device (/dev)

Si definiscono con la cifra delle migliaia
1) SETUID:
NOTAZIONE: Viene identificato con s sul permesso di execute in User (se User non ha il permesso di execute si denota con S). Es. -rwsrw-r--
USO: Si imposta col codice numerico 4. Es. # chmod 4xxx nome_file
2) SETGID:
NOTAZIONE: Viene identificato con s sul permesso di execute in Gruppo (se Gruppo non ha il permesso di execute si denota con S). Es. -rwxrwsr--
USO: Si imposta col codice numerico 2. Es. # chmod 2xxx nome_file
3)Sticky Bit:
NOTAZIONE: Viene identificato con t sul permesso di execute in Other (se Other non ha il permesso di execute si denota con T). Es. -rwxrw-r-t
USO: Si imposta col codice numerico 1. Es. # chmod 1xxx nome_file

[ commenta ]
Campioni del mondo!!! 
lunedì 10 luglio 2006, 20:07
Finalmente siano di nuovo campioni del MONDO, grazie ragazzi!!!

Da interista non posso far altro che essere super contento, i giocatori decisivi sono stati 2 interisti (Materazzi e Grosso), ma devo dire che questo mondiale ha eletto il mio idolo di giocatore, e purtroppo non è interista, ma MILANISTA:
Gennaro RINGHIO Gattuso


Inoltre per mandare a quel paese quella testa di 8-----> di quel francese pelato di zidane, ecco il gioco che spopolerà quest'estate

[ commenta ]
Il filesystem Gnu/Linux 
sabato 8 luglio 2006, 21:04
La cosa importante da tenere a mente è che in Gnu/Linux, ogni cosa è un file

Partiamo facendo una piccola forzatura, ossia immaginate che quello che voi conoscere con C: sotto Windows, sotto Gnu/Linux è chiamato / (leggesi directory root)
La cartella:
/home contiene le cartelle degli utenti, dentro ad essa vi è una cartella per ogni utente ed ovviamente ogni utente non dovrebbe poter accedere alle cartelle degli altri utenti;
/etc contiene tutti i file di configurazione generici;
/tmp contiene tutti i file temporanei e ad ogni riavvia essa viene sempre svuotata. Tutti gli utenti possono accedere a questa directory in lettura e scrittura, ma solamente sui propri file;
/dev contiene tutti i file che rappresentano i device, ossia le periferiche che possono essere collegare al pc (per capire che in Gnu/Linux, ogni cosa è un file, provate a dare il comando cat /dev/mouse);
/boot contiene le cose necessarie all'avvio del sistema, ossia l'immagine del kernel e le impostazioni del boot loader;
/usr contiene principalmente i programmi;
/lib contiene le librerie del sistema e dei programmi;
/mnt contiene le directory dove vengono montate le periferiche;
/root è la directory dell'amministratore;
/proc contiene i processi in esecuzione sulla macchina;
/bin contiene tutti i file binari, ossia tutti i file necessari all'OS per avviare i vari programmi
/var contiene tutti i file di log del sistema, ed i file di cache, inoltre contiene la directory di default del server web apache

[ commenta ]

Indietro Altre notizie