[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