Permessi sui File

Informazioni sui file

Il listato lungo di un file ha varie informazioni

Fileinfo

  • 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 blocchi
  • c - device a caratteri
  • l - link simbolico
  • s - 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/IP
  • Unix 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 : modifica
  • ls -lu : accesso
  • ls -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 indicato
  • touch -a schema : solo accesso
  • touch -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 console
  • ptys/* - pseudo terminali, emulatori grafici
  • ttyS* - porte seriali
  • usbdev* - dispositivi USB
  • parport* - porte parallele
  • sd* - 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

Permessi simbolici

Il possessore può cambiare i permessi dei propri file, con il comando: chmod permessi file

Perm simbolici

I permessi simbolici si esprimono con

  • la combinazione di 0 o più dei caratteri (0caratteri = tutti i caratteri)
    • u - utente possessore
    • g - gruppo possessori
    • o - altri
  • l'uno o l'altro dei simboli
    • + - aggiungere i permessi
    • - - togliere i permessi
  • uno o più dei caratteri
    • r - permesso di letturs
    • w - permesso di scrittura
    • x - permesso di esecuzione

Permessi numerici

I permassi si possono esprimere in formato numerico.

Permessi numerici

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.

permessi Speciali

Sono:

  • Set User ID - (SUID) - chi esegue il file lo fà con i permessi dell'utente possessore del file
  • Set Group ID - (SGID) - chi esegue il file lo fà con i permessi del gruppo possessore del file
  • POSIX bit - applicato a directories pubbliche, pone limitazioni al comando rm 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

pspec

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 distribuzioni
  • umask 002: fiducia al gruppo
  • umask 007 : nessuna fiducia agli altri
  • umask 077 : massima diffidenza

Permessi e comandi

I permessi hanno significato diverso perfiles e directories.

  • File
    • r - leggere il file per visualizzarlo, copiarlo o muoverlo
    • w - modificare il contenuto del file, ricoprire una destinazione di cp o mv
    • x - eseguire un file binario o una procedura interpretata
  • Directory
    • r - listare il contenuto
    • w - creare o distruggere file nella directory
    • x - eseguire cd nella directory

I comandi hanno bisogno di permessi opportuni sugli oggetti che manipolano.

permcom