Permessi sui File
Informazioni sui file
Il listato lungo di un file ha varie informazioni
- tipo di file e permessi standard
- numero di link (riferimenti)
- utente possessore
- gruppo possessore
- dimensione del file
- data di ultimo aggiornamento
- nome
Nome file
Caratteri A-Za-z0-9.-_
(altri: metacaratteri shell)
- Max 248 caratteri
- Limitare a 32 per portabilità su CD e in rete
- Non inizia con – (trattino: indicativo opzione)
- Se inizia con . (punto) è nascosto
Tipo file
Si ricorda che tutto ciò che non è un processo è un file
E' il primissimo carattere del rapporto ls -l
, attaccato e precedente ai nove caratteri dei permessi standard. Può essere:
-
- regolare - un fule normale, di testo, dati, eseguibile, ecc.d
- directory
I precedenti occupano spazio disco. I seguenti sono invece file, ma speciali, non occupanti spazio disco:
b
- device a blocchic
- device a caratteril
- link simbolicos
- socket
Un socket è una primitiva di comunicazione tra processi (Inter Process Communication - IPC). Un processo produttore scrive nel socket, un processo consumatore legge dal socket, e il kernel li sincronizza ed armonizza.
Vi sono vari tipi di socket:
inet sockets
- Internet sockets - usati dai protocolli TCP/IPUnix sockets
- file locali
Il segnalino s
denota gli Unix socket. Sono multo numerosi in Linux, per esempio l'ambiente di logging usa il socket /dev(log
.)
Date di un file
Sono anche chiamate date MAC:
- Modifica
- Accesso
- Modifica dell'inode (inizialmente: Creazione)
Listare le date:
ls -l
: modificals -lu
: accessols -lc
: creazione
Cambiare le date MAC
Il possessore di un file può cambiarne le date MAC:
touch file
: pone al file la data corrente a modifica e accesso- se il file non c'è viene creato
touch -t [[CC]YY]MMDDhhmm[.ss] file
- dà al file tutte e tre le date secondo lo schema indicatotouch -a schema
: solo accessotouch -m schema
: solo modifica
Non ci si può fidare delle date MAC di un file come veritiere - possono essere state cambiate dal possessore del file o dall'amministratore.
Files di device
Sono conservati nella directory /dev
e sottodirectories, e per sicurezza, solo lì
Esempi:
tty*
- terminali di consoleptys/*
- pseudo terminali, emulatori graficittyS*
- porte serialiusbdev*
- dispositivi USBparport*
- porte parallelesd*
- dischi SCSI o SATA
più numerosissimi altri.
I files in dev
esistono solo se è caricato il device driver corrispondente – se ne occupa in automatico l'ambiente udev
L'inserimento di un device supportato (p.es. una chiave USB) produce:
- il caricamento del modulo driver nel kernel
- la comparsa in
/dev
di un nome di device preconfigurato
Permessi standard
Permessi simbolici
Il possessore può cambiare i permessi dei propri file, con il comando: chmod permessi file
I permessi simbolici si esprimono con
- la combinazione di 0 o più dei caratteri (0caratteri = tutti i caratteri)
u
- utente possessoreg
- gruppo possessorio
- altri
- l'uno o l'altro dei simboli
+
- aggiungere i permessi-
- togliere i permessi
- uno o più dei caratteri
r
- permesso di lettursw
- permesso di scritturax
- permesso di esecuzione
Permessi numerici
I permassi si possono esprimere in formato numerico.
Ogni bit settato della maschera dei permessi corrisponde ad un 1, ogni bit non settato ad uno 0.
I tre gruppi di bit u
, g
ed o
vengono convertiti in numeri decimali (propriamente: ottali), tre cifre. Questo numero di tre cifre viene usato per settare i permessi finali di un file.
Esempio
chmod 751 file
Setta i bit rwxr-x--x
, tipica maschera di permessi di una procedura shell, con permessi totali per il possessore, che può essere letta ma non modificata dai membri del gruppo, ma solo eseguita dai membri del pubblico.
Quando si parla dei permessi di un file, in realtà si cita quasi sempre la maschera numerica.
Per citare un altro esempio, alcuni file sensitivi in Linux devono avere i permessi 600
o non vengono trattati dai programmi che li gestiscono.
E' il caso, tra l'altro, dei file contenenti le chiavi private in algoritmi di sicurezza basati su chiavi doppie.
Non è detto che il metodo simbolico di attribuzione permessi non si usi più.
Il caso più comune è l'attribuzione del permesso di esecuzione a procedure shell (o altri interpreti), che sono per loro natura file di testo:
chmod +x procedura
Permessi minimi
Capita a volte che non importi l'esatta machera ottale dei permessi, ma che ci sia il bisogno che almeno certi permessi siano settati.
In tal caso la maschera, nei programmi che la usano, è prefissa con un segno meno.
Per esempio -111
esprime la necessità che siano settati i permessi di esecuzione per tutti.
Permessi e comando find
L'espressione:
find . -perm 751
ricerca, al di sotto della directory corrente, tutti i files cil permessi esatti 751
.
Inveceil comando:
find .-perm -111
ricerca i files che abbiano almeno il permesso di esecuzione per tutti.
Permessi Speciali
Notare che le password degli utenti sono conservate nel file /etc/shadow
:
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1733 mar 22 10:29 /etc/shadow
$ cat /etc/shadow
cat: /etc/shadow: Permission denied
Gli utenti comuni non possono certo leggerlo.
Come avviene allore che il comando passwd
, quando eseguito da un utente comune, riece a scrivere tale file?
La risposta è nei Permessi Speciali.
Quando si esegue passwd
, quale eseguibile viene lanciato? vederlo con:
$ which passwd
/usr/bin/passwd
Verifichiamone i permessi:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 mar 29 2016 /usr/bin/passwd
Notare la s
.
Vi sono tre permessi speciali.
Sono:
Set User ID
- (SUID) - chi esegue il file lo fà con i permessi dell'utente possessore del fileSet Group ID
- (SGID) - chi esegue il file lo fà con i permessi del gruppo possessore del filePOSIX bit
- applicato a directories pubbliche, pone limitazioni al comandorm
in tali directories: l'utente può rimuovere solo i propri files
I permessi speciali si settano come i permessi normali, tenendo conto che in totale i permessi sono 12 bit, quindi 4 cifre ottali.
Per esempio: chmod 4755 file
Permessi di default
Il parametro umask
determina i permessi di default di nuovi files edirectories.
Permessi di nuovo oggetto sono ottenuti sottraendo umask a numero:
- file :
666 – umask
- directory :
777 – umask
Per verificare la maschera corrente: umask
Per cambiarla: umask maschera
umask 022
: default, diverso in varie distribuzioniumask 002
: fiducia al gruppoumask 007
: nessuna fiducia agli altriumask 077
: massima diffidenza
Permessi e comandi
I permessi hanno significato diverso perfiles e directories.
- File
r
- leggere il file per visualizzarlo, copiarlo o muoverlow
- modificare il contenuto del file, ricoprire una destinazione di cp o mvx
- eseguire un file binario o una procedura interpretata
- Directory
r
- listare il contenutow
- creare o distruggere file nella directoryx
- eseguire cd nella directory
I comandi hanno bisogno di permessi opportuni sugli oggetti che manipolano.