[glux] Bigino permessi

Cristian Rigamonti cri@linux.it
Sab 25 Set 2004 13:02:40 CEST


Visto che si tratta della principale fonte di dubbi e problemi
apparentemente inspiegabili, ho fatto un riassuntino sui permessi
necessari per compiere varie operazioni sui file.

Spero non ci siano errori, in caso segnalateli!

Cri


-------------------------------------------------------------------------------


Per le directory i permessi di lettura/scrittura/esecuzione si
interpretano cosi' (le lettere si riferiscono all'output di "ls -l", i
numeri ai valori da sommare e dare al comando "chmod"):

r (4) = possibile vedere i nomi dei file contenuti (ma non i loro permessi!)
        (condizione necessaria; anche sufficiente se tutto il path ha il permesso
        x: cfr oltre)

w (2) = possibile creare e rimuovere file nella directory (condizione
        solo necessaria, occorre anche il permesso x!)

x (1) = possibile leggere/sovrascrivere/eseguire file nella directory e
        passare alle sottodirectory (condizione necessaria, non sufficiente:
        cfr oltre)



In casi particolari, nell'output di "ls -l" al posto di "x" puo' esserci:

s = eseguibile e SUID o SGID
S = non eseguibile e SUID o SGID
t = eseguibile e sticky bit
T = non eseguibile e sticky bit


- SUID (in chmod "s" al posto di "x" nell'user): rilevante solo per i file
  binari eseguibili (non per le directory, o per gli script): i processi che
  eseguono il file ereditano l'"effective user ID", ossia i permessi (es. di
  accesso alle risorse) del proprietario del file, non di chi ha iniziato il
  processo (come di regola). 

- SGID (in chmod "s" al posto di "x" nel group): analogamente al SUID, imposta
  l'effective group id (se applicato alle directory, i file creati nel processo
  all'interno della directory avranno il gruppo della directory)

- sticky bit: se applicato ai file eseguibili, li tiene in swap anche dopo
  l'esecuzione (caratteristica dei vecchi unix, NON e' implementanta in linux,
  che ignora lo sticky bit sui file); applicato alle directory, le rende
  "append only" (solo root o il proprietario della directory puo' cancellare file
  al loro interno; tipicamente usato sulle /tmp scrivibili da chiunque)



Note d'uso:

- Un file appena creato diventa di proprieta' (utente e gruppo, a meno di
  impostare il bit SGID sulla directory che lo contiene) di chi lo crea
  e assume i permessi impostati come predefiniti dal comando "umask" (di
  solito per i file: 644, per le directory: 755), indicati come
  complementi in ottale dei permessi (es. "umask 022" equivale a
  permessi 755); di solito e' contenuto in /etc/profile

- Oltre ai permessi, i file possono avere altri attributi diversi a seconda
  del filesystem usato (es. per ext2/3 modificabili con il comando chattr)

- Per conoscere l'esistenza di un file occorrono i seguenti permessi:
  
  - Sulle directory parenti: permesso di esecuzione
  - Sulla directory che lo contiene: permesso di lettura (quello di
    esecuzione non serve!)

- Per leggere un file occorrono i seguenti permessi:

  - Sulla directory che lo contiene E su tutte le parenti: permesso in
    esecuzione
  - Sul file: permesso di lettura

- Per scrivere un file gia' esistente occorrono i seguenti permessi:

  - Sulle directory parenti: permesso di esecuzione
  - Sulla directory che lo contiene: permesso di esecuzione (quello di
    scrittura non serve!)
  - Sul file: permesso di scrittura

- Per creare un file occorrono i seguenti permessi:

  - Sulle directory parenti: permesso di esecuzione
  - Sulla directory che lo contiene: permesso di esecuzione E scrittura

- Per cancellare un file in una directory occorrono i seguenti permessi:

  - Sulle directory parenti: permesso di esecuzione
  - Sulla directory che lo contiene: permesso di esecuzione E scrittura
  - Sul file: il permesso di scrittura NON e' necessario, se manca viene
    chiesta conferma dell'esecuzione (per ovviare, usare rm -f)
  
  => Per proteggere un file dalla cancellazione occorre togliere il
     permesso di scrittura alla directory che lo contiene, bloccando TUTTI
     gli altri file! Non esiste il "permesso di cancellazione" a livello di
     singolo file.

- Per eseguire un file occorrono i seguenti permessi:

  - Sulla directory che lo contiene E su tutte le parenti: occorre permesso in
    esecuzione (non necessariamente quello in lettura!)
  
  - Sul file: se il file e' binario, basta il permesso in esecuzione; se il
    file e' uno script, occorre avere anche il permesso di lettura su di esso.
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: Digital signature
Url:         http://lists.linux.it/pipermail/glux/attachments/20040925/681c4e1f/attachment.pgp


Maggiori informazioni sulla lista glux