it-swarm.it

Come funzionano le autorizzazioni per i file?

Puoi spiegare brevemente i concetti principali e gli strumenti da riga di comando utilizzati per gestire le autorizzazioni dei file?

37
guillermooo

Ogni file ha diritti per tre diverse categorie:

  • il proprietario del file,
  • il gruppo associato al file e
  • tutti gli altri.

Diritti indica 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

  • cambia il proprietario con chown, ad es. chown guillermooo
  • cambia il gruppo con chgrp, ad es. chgrp root
  • modificare i diritti con 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.

23
ParanoiaPuppy

Avviso: La modifica delle autorizzazioni di file e directory è potenzialmente dannosa e può rendere il sistema inutilizzabile. Se eseguito ricorsivamente 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.

Autorizzazioni per i file

Ubuntu ha ereditato il concetto di autorizzazioni da Unix quando per file o directory ci sono tre attività che possiamo consentire o negare:

  • r (lettura) file/directory possono essere aperti per l'accesso in lettura.
  • w (scrittura) file/directory possono essere aperti per l'accesso in scrittura/modifica.
  • x (esegui) file può essere eseguito mentre un programma/directory può essere attraversato.

( Attraversare una directory essenzialmente significa usarla come parte del nome di un percorso. Vedi 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:

  • u (utente) al proprietario di un file viene concessa una delle autorizzazioni.
  • g (gruppo) al gruppo a cui appartiene il file viene concessa un'autorizzazione.
  • o (altro) a tutti gli altri viene concessa 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) ha il proprietario di un file (= utente) read, writo ed expermesso ecuto,
b) il gruppo del file concesso read ed exautorizzazioni ecute e
c) tutti gli altri dovrebbero avere solo raccesso diretto.

Quindi l'autorizzazione del file risultante sarà:

 u   g   o
rwx r-x r--

Per ottenere questo nei numeri ottali, ad es. per il comando chmod 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.

  • Notare che dovremo anche cambiare l'autorizzazione della directory in cui si trova questo eseguibile. Solo se entrambi, il bit eseguibile della directory è impostato su e ci sarà permesso di 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.

Utenti e gruppi

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, verrà visualizzato un errore Permission denied. Solo root può cambiarlo per tutti i file. Questo è il motivo per cui dobbiamo usare Sudo quando si modificano 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, emettiamo

Sudo chgrp takkat testfile

Leggi le manpage dei comandi per maggiori dettagli e opzioni. C'è anche questa guida più elaborata di Nizza raccomandata per ulteriori letture:

Trova anche alcune domande correlate qui:

31
Takkat