Gestire i permessi sui files e le directories in Linux

Tutti i sistemi Unix, e quindi anche le distribuzioni GNU/Linux, essendo derivate da esso, hanno una particolare sistema di gestione dei permessi sui files, che rispecchia la natura di sistema operativo multiutente.

I permessi sui files possono essere impostati solo dagli utenti proprietari degli stessi. L’utente amministratore (root) può invece settare tutti i tipi di permessi su tutti i files del sistema, in virtù del suo ruolo all’interno del sistema. Come conseguenza, i premessi non costituiscono limitazione per l’utente root, che ha un controllo quindi assoluto del sistema.

permessi-sui-file-riepilogo-codifica-linux

I permessi possono essere divisi in permessi base e permessi speciali.

I PERMESSI DI BASE

I permessi base sono di tre tipi:

 – lettura, indicato con la lettera r

– scrittura, indicato con la lettera w

– esecuzione, indicato con la lettera x

essi si differenziano sulla base della natura dell’utente rispetto al file o directory, infatti possiamo avere:

– utente proprietario (owner) del file

– gruppo proprietario del file (owner group)

– gli altri utenti diversi dal proprietario e non appartengono al gruppo cui questi appartiene, ove ne faccia parte. (others)

Per visualizzare i permessi di un file basta usare il comando ls col parametro -l che per ogni file da un output simile a:

 -rwxr-xr-- 1 nico root 500 2012-03-10 18:46 nicola.txt

– La prima colonna, composta da 10 caratteri, descrive i permessi sul file nicola.txt

– Il primo carattere (nell’esempio: -) identifica il tipo di file (directory, pipe, block o char device, symlink…);

– La prima terna di caratteri identifica i permessi in lettura/scrittura/esecuzione del proprietario di niculinux.txt (in questo caso l’owner nico ha tutti i permessi sul file: rwx );

– La seconda terna di caratteri identifica i permessi del gruppo proprietario di niculinux.txt (in questo caso il gruppo root ha permesso di lettura ed esecuzione sul file: r-x );

– La terza terna di caratteri identifica i permessi di tutti gli altri utenti del sistema (in questo caso hanno solo il permesso di lettura: r– ).

– Le successive colonne nell’output di ls -l indicano nell’ordine: il numero di hard links che fanno riferimento a quel file, il proprietario, il gruppo, la dimensione in byte, la data di ultima modifica e il nome del file.

permessi-sui-file-riepilogo-codifica-linux-2

Per modificare i permessi dei file si usa il comando chmod che usa una duplice sintassi per indicare i permessi: la modalità simbolica e la modalità ottale:

read – lettura: r in symbolic mode; Valore 4 in octal mode

write – scrittuta: w in symbolic mode; Valore 2 in octal mode

execute – esecuzione: x in symbolic mode; Valore 1 in octal mode

per modificare i permessi utilizzando la modalità simbolica basterà anteporre alla lettere indicante il tipo di permesso gli operatori + – o =, preceduti da u, g e o che indicano:

 u: l’utente (il proprietario del file)

 g:il gruppo proprietario,

 o: tutti gli altri

 es. vogliamo eliminare il permesso di lettura al file di cui sopra:

 chmod u–r nicola.txt

da notare che mentre gli operatori + e – rispettivamente aggiungono o tolgono permessi, invece = assegna solo ed esclusivamente i permessi specificati dopo di esso, eliminando altri permessi già presenti.

 ed vogliamo dare al file niculinux.txt solo il permesso di lettura all’utente proprietario e liminare gli altri permessi per questi:

chmod u=r nicola.txt

Per modificare i permessi utilizzando la modalità ottale invece dovremo indicare solo i numeri come sopra riportato, in proposito c’è da dire che essi possono essere anche “combinati” per dare più tipi di permessi ad un file, esempio:

chmod 755 nicola.txt

ogni numero si riferisce ai permessi, rispettivamente di proprietario(utente) gruppo e tutti gli altri:

 755 – indica lettura, scrittura, e il proprietario, lettura, esecuzione per il gruppo ed altri utenti.

(4+2+1=7)

I PERMESSI SPECIALI

Parliamo adesso dei c.d. permessi speciali in Linux, delle particolari categorie di permessi, i quali consento di impostare determinate funzioni avanzate sui file: essi sono:

SUID (Set User Identification)

SGID (Set Group ID)

Sticky (conosciuto anche come Sticky bit)

Impostando questa modalità su un file si fa in modo che il file eseguito da qualunque utente del sistema, venga eseguito con gli stessi privilegi dell’utente proprietario. Ovviamente, data questa particolarità, bisogna usare molta prudenza con questi files.

Attivare SUID:

usando la modalità simbolica:

chmod u+s nicola.txt

usando la modalità ottale:

chmod 4755 nicola.txt

Disattivare SUID:

usando la modalità simbolica:

chmod u-s nicola.txt

usando la modalità ottale:

 chmod 0755 nicola.txt

 per visualizzare i permessi digiteremo il solito ls -l. Se avremo attivato il suid su un file eseguibile avremo, al posto della x che sta a significare l’eseguibilità una s minuscola:

 -rwsr-xr-x 1 nico root 500 2012-10-03 18:46 nicola.txt

 invece, se il file sui cui il sui viene applicato non è eseguibile, verrà visualizzata una S maiuscola, :

-rwSr--r-- 1 nico root 500 2012-10-03 18:46 nicola.txt

Oggi in Linux il SUID riguarda essenzialmente i files, eseguibili e non, mentre per le directory il SUID viene sempre ignorato, essendo invece considerati sempre e solo il SGID e lo Sticky.

SGID (Set Group ID)

ha le stesse funzionalità di SUID, con la differenza che tale permesso viene però impostato sulla directory piuttosto che su di un file come avviene con suid. Impostando il bit SGID su di una directory, qualsiasi file creato all’interno della stessa erediterà lo stesso gruppo a cui appartiene tale directory. Inoltre, chiunque esegua un file all’interno di una directory con il bit SGID attivato, ottiene gli stessi privilegi del gruppo a cui il file appartiene.

Attivare SGID:

utilizzando la modalità simbolica:

chmod g+s nicola.txt

usando la modalità ottale:

chmod 2755 nicola.txt

Disattivare SGID:

 utilizzando la modalità simbolica:

chmod g-s nicola.txt

usando la modalità ottale:

chmod 0755 nicola.txt

se avremo attivato il sgid su un file eseguibile vedremo una s minuscola al posto della x sia per i permessi del proprietario, che quelli per il gruppo cui questi appartiene:

-rwsr-sr-x 1 nico root 500 2012-03-10 18:46 nicola.txt

STICKY

il permesso sticky ha una storia piuttosto antica. Esso veniva usato nelle prime versioni di Unix, quando i computer dell’epoca avevano poca memoria RAM, e si ricorreva maggiormente alla memoria swap. Donde il nome sticky, cioè appiccicoso, infatti i files e le directories che avevano quel permesso rimanevano caricati in memoria, nella swap per l’appunto. Oggi invece sticky ha assunto un significato speciale per le directory.

Esso, applicato ad un directory consente la cancellazione dei files in essa contenuti solo ai rispettivi proprietari. La presenza dello sticky in modalità di esecuzione su una directory si evince dal carattere \”t\” nella terza terzina indica che la stessa:

drwxrwxrwt 18 nico nico 4096 2012-03-10 18:48 nomecartella

(la t minuscola significa che l’utente potrà cancellare solo i files da lui creati in quella directory). Avremmo avuto un T maiuscola qualora invece lo sticky sia stato settato in modalità di non esecuzione.

 Attivare Stiky:

utilizzando la modalità simbolica:

chmod o+t nomecartella

usando la modalità ottale:

chmod 1755 nomecartella

Disattivare sticky

utilizzando la modalità simbolica:

chmod o-t nomecartella

usando la modalità ottale:

chmod 1755 nomecartella

Seguiteci anche su Facebook, Tumblr, Twitter e Telegram, per restare sempre in contatto con noi e con le nostre guide.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram