Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

Debian GNU/Linux Reference Guide
Prev Home Next

4.5.3 Permessi di accesso a file e directory

I permessi di accesso a file e directory vengono definiti separatamente per ciascuna delle seguenti tre categorie di utenti:

  • l' utente che � proprietario del file (u),

  • gli altri utenti nel gruppo a cui il file appartiene (g) e

  • tutti gli altri utenti (o).

Dato un file, ciascun permesso corrispondente permette:

  • read (lettura) (r): di esaminare il contenuto del file,

  • write (scrittura) (w): di modificare e

  • execute (esecuzione) (x): di eseguire il file come un comando.

Data una directory, ciascun permesso corrispondente permette:

  • read (r): di elencare i contenuti della directory,

  • write (w): di aggiungere o rimuovere i file nella directory e

  • execute (x): di accedere ai file nella.

In questo caso il permesso in esecuzione sulla directory non solo permette di leggere i file nella directory, ma anche di vedere i lori attributi, come le dimensioni e la data dell'ultima modifica.

per mostrare le informazioni sui permessi (e molto altro) dei file e delle directory si usa ls. Vedere ls(1). Quando ls viene invocato con l'opzione -l mostrer� le seguenti informazioni, nell'ordine:

  • tipo di file (primo carattere)

    • -: normale

    • d: directory

    • l: collegamento simbolico

    • c: character device node

    • b: block device node

    • p: named pipe

    • s: socket

  • i permessi di accesso al file (i nove caratteri successivi, consistenti di tre caratteri per ciascuno, utente, gruppo ed altri, in quest'ordine)

  • il numero di hard links al file

  • il nome dell' utente a cui appartiene

  • il nome del gruppo a cui il file appartiene

  • le dimensioni del file in caratteri (bytes)

  • data ed ora del file (mtime)

  • il nome del file.

Per cambiare il proprietario del file, si usa chown dall'account di root. Per cambiarne il gruppo, si utlizza chgrp o dall'account del proprietario, o da quello di root. Per cambiare i permessi di accesso al file ed alla directory, si usa chmod dall'account del proprietario, o da quello di root. La sintassi di base per manipolare un dato file foo file �:

     # chown nuovoproprietario foo
     # chgrp nuovogruppo foo 
     # chmod  [ugoa][+-=][rwx][,...] foo

Vedere chown(1), chgrp(1), e chmod(1) per i dettagli.

Per esempio, per rendere proprietario di una directory l'utente foo e condivisa da un gruppo bar, eseguite i seguenti comandi dall'account di root:

     # cd /una/locazione/
     # chown -R foo:bar .
     # chmod -R ug+rwX,o=rX .

Esistono altri tre bit di permessi speciali:

  • set user ID (s o S invece della x di user),

  • set group ID (s o S invece della x di group), and

  • sticky bit (t o T invece della x di other).

In questo caso l'output di ls -l per detti bit viene dato in maiuscolo se la modalit� nascosta per i bit di esecuzione non � impostata.

Impostare set user ID su un file eseguibile permette all'utente di eseguirlo con l'owner ID del file (per esempio root). Allo stesso modo, impostare set group ID su un eseguibile permette all'utente di eseguirlo con il group ID del file (per esempio root). Poich� queste impostazioni possono causare seri problemi di sicurezza, abilitarle richide estrema cautela.

Impostare set group ID su una directory abilita lo schema di creazione dei file stile BSD, dove tutti i file creati nella directory appartengono al gruppo della directory.

Impostare lo sticky bit in una directory previene la rimozione di un file in detta directory da un utente che non sia il proprietario del file. Per rendere sicuro il contenuto di un file in una directory scrivibile da tutti, come ad esempio /tmp o in diretory scrivibile dal gruppo, non bisogna solamente disabilitare i permessi in scrittura del file, ma anche impostare lo sticky bit nella directory. Altrimenti il file potrebbe essere rimosso e sostituito da un nuovo fiole con lo stesso nome, da qualsiasi utente con accesso in scrittura alla directory.

Ecco alcuni esempi interessanti sui permessi.

     $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd
     crw-rw----    1 root     dip      108,   0 Jan 18 13:32 /dev/ppp
     -rw-r--r--    1 root     root         1051 Jan 26 08:29 /etc/passwd
     -rw-r-----    1 root     shadow        746 Jan 26 08:29 /etc/shadow
     -rwsr-xr--    1 root     dip        234504 Nov 24 03:58 /usr/sbin/pppd
     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
     drwxrwxrwt    4 root     root         4096 Feb  9 16:35 /tmp
     drwxrwsr-x   10 root     staff        4096 Jan 18 13:31 /usr/local
     drwxrwsr-x    3 root     src          4096 Jan 19 08:36 /usr/src
     drwxrwsr-x    2 root     mail         4096 Feb  2 22:19 /var/mail
     drwxrwxrwt    3 root     root         4096 Jan 25 02:48 /var/tmp

Esiste un metodo numerico alternativo di descrivere i permessi per i comandi chmod(1). Questo metodo usa numeri da 3 a 4 cifre in ottale (base 8). Ogni cifra corrisponde a:

  • 1a cifra facoltativa: la somma di set user ID (=4), set group ID (=2), e sticky bit (=1)

  • 2a cifra: la somma dei permessi lettura (=4), scrittura (=2), e esecuzione (=1) per l' utente

  • 3a cifra: idem per il gruppo

  • 4a cifra: idem per other

Suona complicato, ma � in effetti molto semplice. Se guardate alle prime (2-10) colonne dell'output del comando ls -l e le leggete come una rappresentazione binaria (base 2) dei permessi dei file ("-" essendo "0" e "rwx" essendo "1"), il valore numerico diventa una rappresentazione in ottale dei permessi. [33] Provate ad esempio:

     $ touch foo bar
     $ chmod u=rw,go=r foo
     $ chmod 644 bar
     $ ls -l foo bar
     -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  foo
     -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  bar

La maschera di default dei permessi pu� essere impostata tramite il comando di shell umask. Vedere builtins(7).


Debian GNU/Linux Reference Guide
Prev Home Next

 
 
  Published under the terms of the GNU General Public License Design by Interspire