Puoi spiegare brevemente i concetti principali e gli strumenti da riga di comando utilizzati per gestire le autorizzazioni dei file?
Puoi spiegare brevemente i concetti principali e gli strumenti da riga di comando utilizzati per gestire le autorizzazioni dei file?
Risposte:
Ogni file ha diritti per tre diverse categorie:
Diritti significa il diritto di leggere il file, il diritto di scrivere nel file o il diritto di eseguire il file in caso di uno script o un programma.
Nella CLI, è possibile
chown
, ad eschown guillermooo
chgrp
, ad eschgrp root
chmod
, ad es. chmod u+w filename.ext
(Aggiunge l'autorizzazione alla scrittura per il proprietario del file filename.ext
)Se desideri saperne di più su ciascuno di questi strumenti, apri un terminale e digita man [tool]
, ad es man chmod
.
chown guillermooo
non dovrebbe essere chown guillermooo filename
?
Avvertenza: la modifica delle autorizzazioni di file e directory è potenzialmente dannosa e può rendere il sistema inutilizzabile. Quando eseguito in modo ricorsivo come root sulla strada sbagliata, potremmo arrivare a un punto in cui dovremo reinstallare Ubuntu. È quindi una buona idea non modificare le autorizzazioni al di fuori delle directory HOME e, quando possibile, evitare di eseguire ricorsivamente i comandi come root.
Ubuntu ha ereditato il concetto di autorizzazioni da Unix quando per file o directory ci sono tre attività che possiamo consentire o negare:
( Attraversare una directory significa essenzialmente usarla come parte del nome di un percorso. Vedere https://unix.stackexchange.com/a/13891 o https://unix.stackexchange.com/questions/21251 per ulteriori spiegazioni.)
Inoltre, abbiamo tre casi per i quali concediamo un'autorizzazione:
Ora per ottenere la combinazione di questi ordinati usiamo un sistema binario in cui ogni bit definisce un'autorizzazione. Questo può essere mostrato al meglio nella seguente tabella
Permission | Binary | Octal | User | Group | Other |
======================================================
r | 100 | 4 | | | |
w | 010 | 2 | | | |
x | 001 | 1 | | | |
=======================================================
Number
Ora se vogliamo per esempio
a) il proprietario di un file (= utente) ha r ead, w rito, ed e x ecute permesso,
b) del file gruppo concesso r ead ed e x ecute i permessi, e
c) tutti gli altri dovrebbero avere solo r accesso ead.
Quindi l'autorizzazione del file risultante sarà:
u g o
rwx r-x r--
Per ottenere questo nei numeri ottali, ad es. per il chmod
comando o quando dobbiamo capire un messaggio di errore dobbiamo compilare la tabella sopra come di seguito:
Permission | Binary | Octal | User | Group | Other |
======================================================
r | 100 | 4 | 4 | 4 | 4 |
w | 010 | 2 | 2 | 0 | 0 |
x | 001 | 1 | 1 | 1 | 0 |
======================================================
Numbers add to 7 5 4
Ogni numero di autorizzazione deve essere aggiunto per riassumere un utente (4 + 2 + 1 = 7), un gruppo (4 + 0 + 1 = 5) e altri (4 + 0 + 0 = 4). Il numero risultante è quindi:
u g o
7 5 4
Ora abbiamo due opzioni per modificare i bit di autorizzazione con chmod
:
chmod u+rwx g+rx o+r filename
o molto più semplice con
chmod 751 filename
Entrambi i comandi faranno lo stesso.
L'autorizzazione predefinita di un file appena creato nella nostra casa sarà 664 (-rw-rw-r--).
Se vogliamo che i file siano eseguibili come programmi, dovremo modificare questa autorizzazione.
Si noti che dovremo anche modificare l'autorizzazione della directory in cui si trova questo eseguibile. Solo se sono impostati sia il bit eseguibile del file sia quello della directory, potremo eseguire questo file come programma.
Quando si copia un file a casa nostra perderà le autorizzazioni che verranno sostituite dalle nostre autorizzazioni predefinite (a meno che non si copi utilizzando opzioni avanzate, ad esempio un'opzione di archiviazione).
Si noti inoltre che il file può ereditare l'autorizzazione dal punto di montaggio, resp. opzioni di montaggio. Questo è importante quando si montano unità formattate per Windows che non supportano le autorizzazioni Unix.
Presto ci rendiamo conto che questa era solo metà della storia. Dobbiamo anche sistemare gli effetti personali. Per fare ciò ogni file o cartella ha un proprietario definito e un'appartenenza al gruppo definita.
Ogni volta che creiamo un file saremo il proprietario di un file e anche il gruppo del file sarà noi. Con ls -l
possiamo vedere le autorizzazioni, la proprietà e il gruppo come visto dal seguente esempio di output:
-rw-rw-r-- 1 takkat takkat 4096 Sep 12 20:25 test
- Ci è consentito solo modificare autorizzazioni, gruppi o proprietà di un file di nostra proprietà.
Se non siamo il proprietario del file, avremo un Permission denied
errore. Solo root può cambiarlo per tutti i file. Questo è il motivo per cui dobbiamo usare sudo
quando modifichiamo i permessi di file che non sono nostri. Ci sono due comandi integrati per farlo chown
per gli utenti e chgrp
per i gruppi.
Per modificare la proprietà di un file da chiunque a, takkat
possiamo emettere questo comando:
sudo chown takkat testfile
Per cambiare il gruppo di un file in takkat
questione
sudo chgrp takkat testfile
Leggi le manpage dei comandi per maggiori dettagli e opzioni. C'è anche questa bella guida più elaborata raccomandata per ulteriori letture:
Trova anche alcune domande correlate qui: