Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 68 del 23/10/2010 07.26.10

Nascondi questo messaggio

BR Indice(depth=2)

Informazioni(forum="http://forum.ubuntu-it.org/index.php/topic,104024.msg666490.html#msg666490"; rilasci="8.10 8.04")

Introduzione

Storicamente, i sistemi Unix-like (tra cui GNU/Linux e quindi Ubuntu) hanno avuto l'esigenza di poter controllare ogni aspetto del computer e del software tramite la riga di comando, e il sistema usato per avere questo tipo di controllo è cercare di trasformare tutto in un file, tramite i filesystem. Pertanto i dati sono file, le directory tramite cui sono ordinati i file sono anch'esse file, i dispositivi, come anche i singoli processi e tutto ciò che riguarda lo stato attuale del computer, sono rappresentati tramite file. Tutti i file all'interno del sistema hanno associati un utente proprietario, un gruppo di utenti e dei permessi che ne regolano l'accesso. Solo il super utente "root" ha la possibilità di accedere a qualsiasi file nel sistema senza tenere conto dei permessi.

Per modificare i permessi di un file il cui proprietario non è l'utente corrente, è necessario l'utilizzo del comando sudo.

Permessi in azione

Per visualizzare i permessi dei file e delle cartelle contenute nella directory corrente si usa il seguente comando:

ls -l

Il comando [:AmministrazioneSistema/ComandiBase#ls:ls] accetta come argomento un percorso che può rappresentare un singolo file o una qualunque directory del sistema, a patto che si abbiano i permessi per leggere tale directory. Se l'argomento non viene fornito, il comando viene applicato alla directory corrente. Esempio:

ls -l /home

Verranno visualizzate informazioni sui file e sulle directory presenti nella cartella di sistema /home:

totale 28
drwx------  2 root     root    16384 2007-02-21 11:18 lost+found
drwxr-xr-x 33 utente1  utente1  4096 2007-05-21 11:41 utente1
drwxr-x--- 68 utente2  utente2  4096 2007-05-21 11:40 utente2
drwxr-xr-x  2 utente3  utente   4096 2007-05-21 11:59 utente3

Il primo carattere a sinistra indica un attributo specifico del file, per esempio nel caso il file rappresenti una directory comparirà il carattere «d». I successivi nove caratteri rappresentano i permessi e sono divisi in tre terne.

Terna

Output di ls

Utente

prima terna

-rwx------

owner (proprietario)

seconda terna

----rwx---

group (gruppo)

terza terna

-------rwx

other (altro)

Sono presenti tre diverse restrizioni di accesso:

Simbolo

Permesso

Azione

r

read

lettura

w

write

scrittura

x

execute

esecuzione

Nel caso ci si riferisca a un file:

  • «r» (lettura) consente di aprire un file per visualizzarne il contenuto;
  • «w» (scrittura) consente di sovrascrivere o aggiungere dati a un file;
  • «x» (esecuzione) consente di eseguire un file (nel caso si tratti di un file eseguibile).

Nel caso ci si riferisca a una directory:

  • «r» (lettura) consente la visualizzazione del contenuto della directory, con il comando ls;

  • «w» (scrittura) consente la creazione o l'eliminazione di file all'interno della directory;
  • «x» (esecuzione) consente di accedere alla directory (per esempio con il comando [:AmministrazioneSistema/ComandiBase#cd:cd]) anche nel caso non se ne possa visualizzarne il contenuto.

Immagine(Icone/Piccole/warning.png,,center)

Applicare il permesso di scrittura ad una directory consente la cancellazione dei file contenuti in essa anche ad utenti che non possiedono i permessi di scrittura su tali file.

Anchor(chmod)

Cambiare i permessi

Il comando da utilizzare per la modifica dei permessi è chmod, la cui sintassi è:

chmod [OPZIONI] permessi nomefile

Ci sono due metodi per modificare i permessi, attraverso l'uso dei numeri o delle lettere. Non è consigliabile modificare i permessi ai file di sistema, alcuni file hanno dei permessi molto restrittivi per scongiurare accessi non autorizzati e problemi di sicurezza. Ad esempio, il file /etc/shadow, che contiene le password utente, non ha impostato alcun permesso per gli utenti.

Utilizzare chmod con i letterali

Quello che segue è il dizionario dei letterali da usare con i permessi:

Opzioni

Definizione

u

proprietario

g

gruppo

o

altri

x

esecuzione

w

scrittura

r

lettura

+

aggiungi permesso

-

annulla permesso

=

imposta permesso

Quelli che seguono sono degli esempi di utilizzo del comando chmod con i letterali: per prima cosa è utile creare alcuni file vuoti. Digitare il seguente comando:

touch file1 file2 file3 file4

Al fine di rendersi conto di come variano i permessi si può utilizzare il comando ls -l dopo ogni applicazione del comando chmod. Appena creati i file, l'output del comando ls sarà simile al seguente:

total 0
-rw-r--r--  1 user user 0 Nov 19 20:13 file1
-rw-r--r--  1 user user 0 Nov 19 20:13 file2
-rw-r--r--  1 user user 0 Nov 19 20:13 file3
-rw-r--r--  1 user user 0 Nov 19 20:13 file4

Aggiungere il bit di esecuzione al «proprietario»:

chmod u+x file1

Aggiungere agli «altri» i bit di scrittura ed esecuzione:

chmod o+wx file2

Negare al «gruppo» il bit di lettura:

chmod g-r file3

Aggiungere i bit di lettura, scrittura ed esecuzione a tutti gli utenti:

chmod ugo+rwx file4

Utilizzare chmod con i numeri

Opzioni

Definizione

Definizione in lettere

#--

proprietario

u (user)

-#-

gruppo

g (group)

--#

altri

o (others)

0

nessun permesso

-

1

esecuzione

(x, execution)

2

scrittura

(w, write)

3

esecuzione + scrittura

(xw)

4

lettura

(r, read)

5

lettura + esecuzione

(rx, somma dei valori 1+4)

6

lettura + scrittura

(rw, somma dei valori 2+4)

7

lettura + scrittura + esecuzione

(rwx, somma dei valori 1+2+4)

«Proprietario», «gruppo» e «altri» sono rappresentati da tre numeri. Per ottenere il valore da impostare, è sufficiente determinare la tipologia d accesso e poi fare la somma.

Per esempio, se si desidera un file con i permessi «-rw-rw-rwx» è necessario utilizzare la seguente combinazione:

Proprietario

Gruppo

Altri

lettura e scrittura

lettura e scrittura

lettura, scrittura ed esecuzione

4+2=6

4+2=6

4+2+1=7

Dunque, il comando da digitare sarà il seguente:

chmod 667 nomefile

Se invece si desidera un file con i permessi «--w-r-x--x» è necessario utilizzare la seguente combinazione:

Proprietario

Gruppo

Altri

scrittura

lettura ed esecuzione

esecuzione

2

4+1=5

1

Per applicare tali permessi sarà necessario digitare il seguente comando:

chmod 251 nomefile

Quelli che seguono sono degli esempi di utilizzo del comando chmod con i numeri: per prima cosa creare alcuni file vuoti con il seguente comando:

touch file1 file2 file3 file4

I permessi di tali file, visualizzabili con ls, corrispondono ai seguenti:

total 0
-rw-r--r--  1 user user 0 Nov 19 20:13 file1
-rw-r--r--  1 user user 0 Nov 19 20:13 file2
-rw-r--r--  1 user user 0 Nov 19 20:13 file3
-rw-r--r--  1 user user 0 Nov 19 20:13 file4

Aggiugnere il bit di esecuzione al «proprietario»:

chmod 744 file1

Aggiungere ad «altri» i bit lettura ed esecuzione:

chmod 647 file2

Negare a «gruppo» il bit lettura:

chmod 604 file3

Aggiungere i bit lettura, scrittura ed esecuzione a tutti:

chmod 777 file4

N.B. Per cambiare i permessi in modo ricorsivo a tutti i file presenti in una cartella ed alla cartella stessa si deve usare l'opzione -R subito dopo il comando chmod:

chmod -R 777 Cartella/

da i permessi di lettura, scrittura, esecuzione di ogni singolo file della cartella Cartella/ a tutti gli utenti (proprietario, gruppo e altri)

Utilizzare chmod con sudo

I comandi chmod e sudo possono essere combinati per cambiare i permessi a file di cui non si è proprietari.

Immagine(Icone/Piccole/warning.png,,center)

Cambiare i permessi nel modo sbagliato ai file sbagliati può compromettere l'integrità del sistema. Utilizzare il comando [:AmministrazioneSistema/Sudo:sudo] con attenzione.

Quelli che seguono sono degli esempi di gestione dei permessi con i privilegi di amministrazione del sistema:

user@host:/home/user$ ls -l /usr/local/bin/somefile
-rw-r--r--  1 root root 550 2005-11-13 19:45 /usr/local/bin/somefile
user@host:/home/user$

user@host:/home/user$ sudo chmod o+x /usr/local/bin/somefile

user@host:/home/user$ ls -l /usr/local/bin/somefile
-rw-r--r-x  1 root root 550 2005-11-13 19:45 /usr/local/bin/somefile
user@host:/home/user$

Anchor(umask)

Cambiare i permessi delle partizioni

umask, fmask e dmask

File system come NTFS o FAT hanno un sistema per gestire utenti e permessi incompatibile col sistema usato da GNU/Linux, pertanto durante la fase di montaggio di tali filesystem viene assegnato in modo predefinito un utente proprietario (con relativi permessi) e un gruppo proprietario (con relativi permessi) a tutti i file presenti in essi, e per tutto il tempo in cui tali file system rimangono montati non si potrà modificare né i permessi né l'utente o il gruppo proprietario. In modo predefinito vengono assegnati permessi di lettura, scrittura ed esecuzione per tutti gli utenti e sono validi sia per i file che per le directory, ma è possibile togliere permessi tramite la cosiddetta "maschera dei permessi", che corrisponde all'opzione «umask». Per togliere permessi alle sole directory si usa l'opzione «dmask», mentre per i soli file di dati si usa «fmask».

I permessi per le partizioni vengono solitamente modificati attraverso l'uso del suddetto modificatore nel file /etc/fstab, il contenuto del quale sarà simile al seguente:

#
# <file system> <mount point>       <type>     <options>                    <dump>  <pass>
proc            /proc               proc       defaults                     0       0
/dev/sda1       /                   ext3       defaults,errors=remount-ro   0       1
/dev/sda2       /media/windowsXP    ntfs-3g    umask=0222,ro,nls=utf8       0       0
/dev/sdb1       /media/windows98    vfat       umask=0002,nls=utf8          0       0
/dev/sdb2       /media/storage      ntfs-3g    dmask=000,fmask=113          0       0

Nell'esempio, la directory /media/windowsXP viene montata in sola lettura (opzione ro) e la maschera corrispondente toglie i permessi di scrittura a tutti gli utenti. La directory /media/windows98 lascia tutti i permessi all'utente proprietario e al gruppo proprietario, ma toglie il permesso di scrittura agli altri utenti, in modo che questi non potranno nè creare o eliminare file (permesso di scrittura negato per le directory), nè modificare i file esistenti (permesso di scrittura negato per i file). Nella directory /media/storage tutti gli utenti possono accedere a tutte le directory, possono creare o eliminare file (come indicato dalla dmask), ma non hanno il permesso di eseguire eventuali file eseguibili, e in più gli utenti che non fanno parte del gruppo proprietario o che non sono l'utente proprietario non possono modificare nessun file.

Cambiare i permessi di una partizione FAT con umask

Per iniziare fare una copia di sicurezza del file /etc/fstab con il seguente comando:

sudo cp /etc/fstab /etc/fstab.old

Aprire il file sopra citato con un [:Ufficio/EditorDiTesto:editor di testo] e con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione]. A tale scopo si può digitare un comando simile al seguente:

sudo nano /etc/fstab

Cercare la riga relativa al volume FAT desiderato. Dovrebbe essere simile alla seguente:

/dev/dispositivo       /punto/di/mount     vfat defaults 0 0

Una volta trovata, modificarla come segue:

/dev/dispositivo       /punto/di/mount     vfat umask=000 0 0

In questo modo tutti gli utenti avranno accesso in scrittura e lettura alla partizione.

Immagine(Icone/Piccole/note.png,,center)

Il percorso /punto/di/mount è la directory da cui si potrà accedere alla partizione.

La modifica sarà applicata automaticamente al successivo riavvio di Ubuntu. Se si desidera applicarla subito, è sufficiente smontare il volume e rimontarlo con i seguenti comandi:

sudo umount /punto/di/mount
sudo mount  /punto/di/mount

Ulteriori risorse


CategoryAmministrazione CategoryConsigliata